Date | Unit | Topic | Readings | Due | |
---|---|---|---|---|---|
T | Sep 1 | Overview | Compiler Design (Slides) (Partners discussion) | ||
R | Sep 3 | Backend | Instruction Selection | ||
T | Sep 8 | Register Allocation | |||
R | Sep 10 | Liveness Analysis | |||
T | Sep 15 | Frontend | Lexical Analysis | Lab 1 Tests | |
R | Sep 17 | Context-Free Grammars | Written Homework 1 | ||
T | Sep 22 | Dataflow Analysis | Lab 1 Compiler | ||
R | Sep 24 | Shift-Reduce Parsing | |||
T | Sep 29 | Middle | Intermediate Representations | Lab 2 Tests | |
R | Oct 1 | Static Single Assignment Form | Written Homework 2 | ||
T | Oct 6 | Semantics | Calling Conventions | Lab 2 Compiler | |
R | Oct 8 | Statics | |||
T | Oct 13 | Dynamics | Lab 3 Tests | ||
R | Oct 15 | Functions (see notes for dynamics) | Written Homework 3 | ||
T | Oct 20 | Mutable Store | Lab 3 Compiler | ||
R | Oct 22 | Structs | |||
T | Oct 27 | Optimization | Register Coalescing and Value Propagation | Lab 4 Tests | |
R | Oct 29 | Common Subexpression Elimination | Written Homework 4 | ||
T | Nov 3 | Loop Optimizations | Lab 4 Compiler | ||
R | Nov 5 | Loop Optimizations II | |||
T | Nov 10 | Projects | Garbage Collection (Wilson 94) | ||
R | Nov 12 | LLVM (Website) (Tutorial) | |||
T | Nov 17 | First-class functions | |||
R | Nov 19 | Polymorphism | Lab 5 Compiler | ||
T | Nov 24 | Project Day, No Class | Lab 5 Written Report | ||
R | Nov 26 | Thanksgiving Day, No Class | |||
T | Dec 1 | Special Topics | Just-In-Time Compilation (Kotzmann et al. 2008) (Josh Habermann's blog post) | ||
R | Dec 3 | Concurrent C0: Protocols (Code) | Paper Report | ||
T | Dec 8 | Concurrent C0 | |||
R | Dec 10 | Project Day, No Class | Lab 6 | ||
T | Dec 15 | Term Paper Due |