| Date | Topic | Readings/Notes | Homework | |
| M | Jan 4 | intro to compilers, laying out our semester project | Chap. 1, Lab 1 | |
| W | 6 | More about Footle | ||
| F | 8 | Scanning | Chap. 2 | |
| M | 11 | Parsing | Chap. 3 | |
| W | 13 | Closures and Environments | Sections 4.1,4.2 | |
| F | 15 | Intro to LLVM | Sections 5.1–5.5 | Assignment 1 due |
| M | 18 | NO CLASS: MLK Day | ||
| W | 20 | NO CLASS Furlough I | Sections 5.6–5.8 | |
| F | 22 | More on LLVM, representing values | ||
| M | 25 | Code Generation for varrefs | Chapter 6 | Assignment 2 due |
| W | 27 | NO CLASS: Furlough II | ||
| F | 29 | creating new environment frames / the static pass, in more detail | ||
| M | Feb 1 | error handling, generating code for procedure calls | ||
| W | 3 | representing slots, accessing them | Milestone 2 due | |
| F | 5 | method calls: another flavor of procedure call | ||
| M | 8 | Metaprogramming: writing Java in Scheme | Chapter 7 | |
| W | 10 | representing and constructing Strings and Floats | ||
| F | 12 | Intro to Sparc assembly | ||
| T | 15 | (TUESDAY!): SPARC assembly, SPARC registers | ||
| W | 17 | NO CLASS: Furlough II | ||
| F | 19 | Basic Blocks, Register Allocation | Milestone 3 due | |
| M | 22 | Basic Blocks, Instruction Selection | ||
| W | 24 | Building the Interference Graph | ||
| F | 26 | All the way through with a trivial function. | ||
| M | Mar 1 | a simple analysis: 0-CFA | Lab 3 | |
| W | 3 | TBA | ||
| F | 5 | TBA | ||
| M | 8 | 0-CFA: return, objects | Milestone 4 due | |
| W | 10 | TBA | ||
| F | 12 | TBA | ||