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

Lecture and PSO times to be announced.

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.

Recommended Books