| 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) |









