Course Meeting Times
Lectures: up to 4 sessions / week, 1 hour / session
Course Description
This course analyzes issues associated with the implementation of higher-level programming languages. Topics covered include: fundamental concepts, functions, and structures of compilers, the interaction of theory and practice, and using tools in building software. The course includes a multi-person project on compiler design and implementation.
Prerequisites
6.170 and proficiency in Java
Textbooks
There are no required texts. Optional references:
Appel, Andrew. Modern Compiler Implementations in Java (Tiger Book). 2nd ed. New York, NY: Cambridge University Press, 2002. ISBN: 9780521820608.
Muchnick, Steven. Advanced Compiler Design and Implementation (Whale Book). San Francisco, CA: Morgan Kaufmann, 1997. ISBN: 9781558603202.
Calendar
The calendar below includes lectures (L), recitations (R), projects (P), and quizzes (Q).
SA = Prof. Saman Amarasinghe
MR = Prof. Martin Rinard
WEEK # | DAY 1 | DAY 2 | DAY 3 | DAY 4 |
---|---|---|---|---|
1 | L1: Course administration, information and overview (SA) |
L2: Regular expressions, language specification by formal grammars (MR) P1: Scanner/parser project assigned | R1: Project information session | |
2 | L3: Bottom-up parsing (MR) | L4: Top-down parsing (MR) | L5: Intermediate representations (MR) | L6: Semantic analysis (SA) |
3 |
P1: Scanner/parser project due P2: Semantic checker project assigned | R2: Project information session | ||
4 | ||||
5 |
P2: Semantic checker project due P3: Code generator project assigned | L7: Unoptimized code generation (MR) | R3: Project information session | L8: Unoptimized code generation (MR) |
6 | Q1: In-class quiz | P3: Code generator project design due | ||
7 |
P3: Code generator project due P4: Data-flow analysis project assigned | L9: Introduction to program analysis (MR) | R4: Project information session | |
8 | ||||
9 | L10: Data-flow analysis (MR) | L11: Data-flow optimizations (MR) | L12: Foundations of data-flow analysis (MR) |
P4: Data-flow analysis project due P5: Optimizer project assigned |
10 | Q2: In-class quiz | L13: Introduction to code optimization (SA) | L14: Instruction scheduling (SA) | R5: Project information session |
11 | L15: Instruction optimization (SA) | L16: Register allocation (SA) | L17: Parallelization (SA) |
L18: Loop optimization (SA) P5: Optimizer project design due |
12 | ||||
13 | L19: Putting it all together (SA) | L20: Discussion of research topics in compilers (SA/MR) | P5: Optimizer project checkpoint due | |
14 | Q3: In-class quiz | |||
15 | P5: Optimizer project due | L21: Compiler derby (SA) |