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.
Lectures
- Tue/Thu 8:00 - 9:20 AM
- Zoom: Check Piazza for details
- Instructor: Seth Goldstein
Recitations
- Recitation A: Fri 2:40 - 3:30 PM
- Recitation B: Fri 4:00 - 4:50 PM
- Recitation C: Fri 5:20 - 6:10 PM
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.
Feedback Form
We have an anonymous feedback form here for the rest of the semester. It includes a wide range of questions, all of which are optional, so feel free to give feedback on anything you’d like. As stated, all questions are optional, but it would be more helpful if you could include at least a few sentences in the free response questions.