| week | class | date | lecture | assignment | |||
| 1 | 1 | 2-Sep | compiler structure, IR, types of code optimization | ||||
| 2 | 4-Sep | removing redandant computation | |||||
| 2 | 3 | 9-Sep | value numbering, local | course project assigned | |||
| 4 | 11-Sep | value numbering, local | |||||
| 3 | 5 | 16-Sep | value numbering, global | trivial due | |||
| 6 | 18-Sep | data flow analysis, AVAIL and LIVE | |||||
| 4 | 7 | 23-Sep | data flow analysis, general | ||||
| 8 | 25-Sep | def-use chains | |||||
| 5 | 9 | 30-Sep | Guest lecture: Shen-dead code elimination, constant propogation | ||||
| 10 | 2-Oct | Guest lecture: Prof. Scott-prog. lang. pragmatics | |||||
| Fall break, 10/6 | |||||||
| 6 | 11 | 7-Oct | SSA | value numbering due | |||
| 12 | 9-Oct | SSA | |||||
| 7 | 13 | 14-Oct | partial redundancy elimination | ||||
| 14 | 16-Oct | mid-term exam | |||||
| 8 | 15 | 21-Oct | instruction scheduling, local, loop, and global | ||||
| 16 | 23-Oct | register allocation | |||||
| 9 | 17 | 28-Oct | compiling for high-performance architecture | data flow due | |||
| 18 | 30-Oct | dependence theory | |||||
| 10 | 19 | 4-Nov | dependence classification | ||||
| 20 | 6-Nov | vectorization | |||||
| 11 | 21 | 11-Nov | dependence testing I | final project due | |||
| 22 | 13-Nov | dependence testing II, parallelism | homework I | ||||
| 12 | 24 | 18-Nov | control flow, array register allocation, unroll-and-jam | ||||
| 25 | 20-Nov | loop fusion, data prefetching | |||||
| 13 | 26 | 25-Nov | interprocedural analysis | homework I due | |||
| Thanksgiving, 11/26-11/30 | |||||||
| 14 | 27 | 2-Dec | functional languages, binding, environment, scope | homework II | |||
| 28 | 4-Dec | call-by-value semantics | |||||
| 15 | 24 | 9-Dec | call-by-name semantics | homework II due | |||
| 25 | 11-Dec | project presentation, class evaluation | |||||
| Final exam on Dec. 18 7:15pm in Room 601 | |||||||