| Date | Reading | Topic |
| 1/14 |
Chapter 1 |
Course introduction, regular expressions |
| 1/16 | Chapter 3, Sects. 1, 3, and 5-7 | Lexing, lexer builders |
| 1/21 | Chapter 4, Sects. 1-2 and 4 | LL parsing |
| 1/23 | Chapter 4, Sects. 5-6 and 9 | LR parsing |
| 1/28 |
Java Cup manual | Java cup |
| 1/30 | Chapter 4, Sects. 3 and 7-8 | Error
recovery, parser actions |
| 2/04 | Chapter 5, Sect. 2, and Chapter 7, Sect. 6 |
Symbol tables |
| 2/06 | |
Review of major topics |
| 2/11 | Chapter 6, Sections 1-4 |
Type systems |
| 2/13 | |
Lake parse tree generation |
| 2/18 | Chapter 7, Sections 1-3 |
Activation records, call stacks |
| 2/20 | |
Pond type system |
| 2/25 | Chapter 8, Sections 1-4 |
Pond type system implementation, intro to IR |
| 2/27 | |
Midterm review |
| 3/11 | Chapter 8, Sections 5-7 |
IR translation,
correction |
| 3/13 | |
Labels and backpatching |
| 3/25 | Chapter 9, Section 4 |
Canonical form |
| 3/27 | Chapter 9, Sections 1 and 2 |
Instruction selection |
| 4/01 | Chapter 10, Sections 4 and 5 |
Dataflow analysis |
| 4/03 | |
Alias analysis (guest lecture, Jeff Blaisdell) |
| 4/08 | |
Register allocation |
| 4/10 | |
Spilling, optimization |
| 4/15 | Chapter 10, Sections 6-7, 9 |
Loop invariant hoisting |
| 4/17 | |
Loop induction variables, copy propogation |
| 4/22 | |
Advanced topics: supporting OO |
| 4/24 | |
Advanced topics: supporting functional languages |
| 4/29 | |
Final exam review topics |