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.
Piazza
For student without Piazza access fill out your andrew id in this form
Lectures
- Tue/Thu 09:30AM – 10:50AM (ET)
- In-person at DH A302
- Instructors: Seth Goldstein and Ben Titzer
Recitations
- Recitation A: Fri 1:00 - 1:50 PM (ET) at GHC::4102
- Recitation B: Fri 2:00 - 2:50 PM (ET) at BH::235A
- Recitation C: Fri 4:00 - 4:50 PM (ET) at WEH::5312
- Recitation D: Fri 1:00 - 1:50 PM (ET) at GHC::4301
Office Hours
In-person, see Google Calendar and staff page for schedule.
Course Calendar
Learning Objectives
- 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.
Sponsoring
15-411/611 Compiler Design is supported by Jane Street Capital.