CS 343
Advanced Topics in Compilers - Spring 2012
Compiler research for a long time was moribund, stuck on narrow
topics such as register allocation and instruction scheduling. In
contrast, the last decade has seen an explosion of interesting work
using compilers to accomplish something cool. This class will cover a
selection of such research papers, ranging across static and dynamic bug
finding, binary analysis, reverse engineering, programming via
sketching, and other topics that seem worth knowing.
The class is discussion oriented. You will read (typically) one paper
before each class thoroughly, which will be dissected during the class
period. By the end of the course you will be able to read a technical
paper and extract its essence as well as noticing when the authors have
sinned by omission in their experiments or wording. A good paper along
these lines is here.
Papers will be somewhat bimodal. We will often start with an older
one to set the stage (since they are simpler), and then a later one so
you can see what the current thinking is.
Previous offerings:
Class
- Lectures: Tuesday, Thursday, 2:15 to 3:30 in Gates 200
- Prerequisites: cs243, or permission from instructor
Instructor
- Dawson Engler
- Website: http://cs.stanford.edu/~engler/
- Office: Gates 314
- Office hours: By appointment
TA
- Philip Guo
- Email:
- Website: http://www.pgbovine.net/
- Office: Gates 326
- Office hours: By appointment
Static Bugfinding
April 3 (Tue)
April 5 (Thu)
- A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World ,
Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler
- Slides
Guest Lecture (Prof. Philip Levis)
April 10 (Tue)
- Surviving Sensor Network Software Faults,
Yang Chen, Omprakash Gnawali, Maria Kazandjieva, Philip Levis,
and John Regehr
Dynamic Analysis
April 12 (Thu)
April 17 (Tue)
April 19 (Thu)
- Pin: Building Customized Program Analysis Tools with Dynamic Instrumentation, Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood [Annotated PDF]
- Example PIN tool: cache simulator (dcache.cpp, dcache.H)
- Optional: Pin User Manual
-
- Comment: much, much simpler to write tools than Valgrind, but handles fewer corner cases.
-
Optimizing JITs
April 24 (Tue)
April 26 (Thu)
May 1 (Tue)
May 3 (Thu) - Midterm Exam
- The midterm exam covers all papers up until today except for the guest
lecture paper (Surviving Sensor Network Software Faults)
- Midterm from Spring 2011
May 8 (Tue)
Dynamic Code Generation
May 10 (Thu)
Cool Hacks
May 15 (Tue)
May 17 (Thu) - Informal project progress presentations (you can just doodle on whiteboard)
May 22 (Tue) - Informal project progress presentations (continued)
May 24 (Thu)
- Enhancing Server Availability and Security Through Failure-Oblivious Computing,
Martin Rinard, Cristian Cadar, Daniel Dumitran, Daniel M. Roy,
Tudor Leu, and William S. Beebee, Jr.
May 29 (Tue)
May 31 (Thu)
June 11 (Mon) - Final Project Presentations - 5:30pm to 8:30pm in Gates 104
- Please bring to class a 1-2 page written report summarizing your project's
main ideas and results.