Fall 2017, 3 credits. Instructor: Tiark Rompf
Midterm will be in October, the exact date and time will be announced later.
Lectures are Tuesdays and Thursdays, 12:00pm to 1:15pm in Lawson B151.
PSO sessions are Wednesday 1:30pm to 3:20pm in Lawson B158, and Friday 3:30pm to 5:20pm in LWSN B148
TA Office hour is Monday at 5:30PM to 6:30PM HAAS G050
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.
The first part of the class is inspired by the paper An Incremental Approach to Compiler Construction by Abdulaziz Ghuloum. This second part of the class is heavily based on the Advanced Compiler Construction class taught by Michel Schinz at EPFL. The ACC class materials (lecture slides, programming assignments, etc) are used with permission.
Grades: Final grades will be based on results for the midterm (30%) final (30%) project (40%)