View the Project on GitHub TiarkRompf/cs352

Compilers: Principles and Practice

Fall 2017, 3 credits. Instructor: Tiark Rompf

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

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

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.

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%)

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.

Recommended Book

Further Reading