View the Project on GitHub TiarkRompf/cs352

Compilers: Principles and Practice

Fall 2015, 3 credits. Instructor: Tiark Rompf. TA: Evan Hanau.

Announcements will be posted on Piazza. Homework submission and grading will be done through Blackboard

Midterm exam: Friday, Oct 23, 4:30pm to 5:20pm Felix Haas Hall G066.

Lectures are Monday, Wednesday, Friday 4:30pm to 5:20pm Felix Haas Hall G066.

PSO sessions are Monday and Tuesday 9:30am to 11:20am LWSN B158

TA Office hour is Wednesday at 1:20PM to 2:20PM LWSN B116

About the Course

In a nutshell: The theory and practice of programming language translation, compilation, and run-time systems, organized around a significant programming project to build a compiler for a simple but non-trivial programming language. Modules, interfaces, tools. Data structures for tree languages. Lexical analysis, syntax analysis, abstract syntax. Symbol tables, semantic analysis. Translation, intermediate code, basic blocks, traces. Instruction selection, CISC and RISC machines. Liveness analysis, graph coloring register allocation. Supplemental material drawn from garbage collection, object-oriented languages, higher-order languages, dataflow analysis, optimization, polymorphism, scheduling and pipelining, memory hierarchies.

Grades: Final grades will be based on results for the midterm (20%) final (30%) project (40%) homeworks (10%)

We will apply the same rules regarding submissions, late homework etc. as previous iterations of the class, documented here. For general policies about academic integrity etc. please see here.


Supplementary Resources


  1. Intro
  2. Lexing
  3. Parsing
  4. Semantic Analysis
  5. Activation Records
  6. Translation
  7. Canonical Trees
  8. Instruction Selection
  9. Liveness Analysis
  10. Register Allocation
Extra material:
  1. Dataflow Analysis
  2. Register Allocation
  3. Instruction Scheduling
  4. Memory Management
  5. CS502 Liveness Analysis Slides
  6. CS502 Reaching Definition Slides


  1. Project 1 (Due Sept 13)
  2. Project 2 (Due Sept 30)
  3. Project 3 (Due Oct 18)
  4. Project 4 (Due Nov 5)
  5. Project 5 (Due Nov 22)
  6. Project 6 (Due Dec 12)