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