The calendar below provides information on the course's lecture, recitation, one-on-one meeting, project, and quiz sessions. For the one-on-one meetings, students read assigned papers and discuss the papers in individual meetings with the professors or teaching assistants.

Calendar Legend

L: Lecture
P: Project
R: Recitation
Q: Quiz
M: Meeting
(S): Session taught by Professor Saman Amarasinghe
(M): Session taught by Professor Martin Rinard

WeEK # DAY 1 DAY 2 DAY 3 DAY 4
1 L1: Course Administration Information and Overview (S) P1: Scanner/Parser Assigned

R1: Scanner Parser Project
2 L2: Overview of Programming Languages (M) L3: Regular Expressions, Language Specification by Formal Grammars (M) L4: Parse Table Construction (M) L5: Top-down Parsing (M)
3 P1: Scanner/Parser Project Due

P2: Semantic Checker Project Assigned
R2: Project Information Session
4 L6: Intermediate Representations (M) L7: Semantic Analysis (M)
5 Q1: In-class Quiz M1: One-on-One Meeting M1: One-on-One Meeting (cont.) P2: Semantic Checker Project Due

P3: Code Generator Project Assigned
6 R3: Project Information Session L8: Unoptimized Code Generation (S)

M2: One-on-One Meeting
7 L9: Unoptimized Code Generation (cont.) (S)

M2: One-on-One Meeting (cont.)
8 P3: Code Generator Project Checkpoint
9 P3: Code Generator Project Due

L10: Introduction to Program Analysis and Optimization (M)

P4: Data-flow Optimizer Project Assigned
L11: Data-flow Analysis (M) L12: Data-flow Optimizations (M)

M3: One-on-One Meeting
L13: Foundations of Data-flow Analysis (M)

M3: One-on-One Meeting (cont.)
10 Q2: In-class Quiz R4: Project Information Session
11 P4: Data-flow Optimizer Project Checkpoint
12 P4: Data-flow Optimizer Project Due

P5: Instruction Optimizer Project Assigned
13 R5: Project Information Session L14: Instruction Scheduling (S) L15: Instruction Scheduling (cont.) (S) L16: Register Allocation (S)
14 L17: Putting it all Together (S) Q3: In-class Quiz
15 P5: Instruction Optimizer Project Due L18: Compiler Derby (S)