15-411 Compiler Design
This course covers the design and implementation of compiler and runtime systems for high-level languages, and examines the interaction between language design, compiler design, and runtime organization. Topics covered include lexical and syntactic analysis, type-checking, program analysis, code generation and optimization, memory management, and runtime organization.
- Tue/Thu 9:00 - 10:20am
- GHC 4215
- Instructor: Jan Hoffmann
- Recitation A: Fri 02:30 - 03:20pm, BH 235A
- Recitation B: Fri 02:30 - 03:20pm, BH 235B
- Distinguish the main phases of a state-of-the-art compiler
- Understand static and dynamic semantics of an imperative language
- Develop parsers and lexers using parser generators and combinators
- Perform semantic analysis
- Translate abstract syntax trees to intermediate representations and static single assignment form
- Analyze the dataflow in an imperative language
- Perform standard compiler optimizations
- Generate efficient assembly code for a modern architecture
- Allocate registers using a graph-coloring algorithm
- Understand opportunities and limitations of compiler optimizations
- Appreciate design tradeoffs how representation affects optimizations
- Automatically manage memory using garbage collection
- Develop complex software following high-level specifications
Please see the calendar for the lecture topics and links to the references and notes. The schedule is subject to change during the course of the semester.
15-411/611 Compiler Design is supported by Jane Street Capital.