| Date | Topic | Reading | Handouts | Due |
| Introduction | ||||
| Aug 21 (M) | Introduction (PDF) | Ch. 1 | Syllabus and Project 0 | |
| Aug 23 (W) | Scanning, Parsing, ASTs, and SableCC (PDF) | SableCC-Etienne's Thesis | ||
| Aug 25 (F) | Undergrad compilers review (PDF) | skim Ch 2-6 | ||
| Aug 28 (M) | Intro to MiniJava Compiler (PDF) | skim Ch 7-9, 12 | ||
| Low-Level Topics | ||||
| Aug 30 (W) | CFG and Liveness (PDF) | Ch 10 | ||
| Sept 1 (F) | Register Allocation I (PDF) | Ch 11 | Project 1 | |
| Sept 4 (M) | Labor Day -- No Class | |||
| Sept 6 (W) | Register Allocation II (PDF) | [Briggs] | ||
| Sept 8 (F) | Register Allocation III (PDF) | |||
| Sept 11 (M) | Instruction Scheduling I (PDF) | [Gibbons & Muchnick 1986>] | ||
| Sept 13 (W) | Instruction Scheduling II (PDF) | Ch 20 | DFA handout | |
| Data-Flow Analysis, Control-Flow Analysis, and Optimizations | ||||
| Sept 15 (F) | Data-Flow Analysis (PDF) | Ch 17 thru 17.2 | ||
| Sept 18 (M) | Lattice Framework for Data-Flow Analysis (PDF) | DFA handout | ||
| Sept 20 (W) | Lattice Framework for Data-Flow Analysis cont ... | |||
| Sept 22 (F) | Optimizations using Data-Flow Analysis (PDF) | Ch 17.3 | ||
| Sept 25 (M) | Speeding Up Data-Flow Analysis (PDF) | Ch 17.4 and Ch 18 intro | ||
| Sept 27 (W) | Control-Flow, Loops, and Dominators (PDF) | Ch 18.1 | ||
| Sept 29 (F) | Loop Invariant Code Motion (PDF) | Ch 18.2 | Project 2 | |
| Oct 2 (M) | Induction Variable Detection (PDF) | Ch 18.3 | ||
| Static Single Assignment | ||||
| Oct 4 (W) | SSA (PDF) | Ch 19-19.2 | ||
| Oct 7 (F) | At Conference -- No Class | |||
| Oct 9 (M) | More SSA (PDF) | Ch. 19.6 | HW1 (answers) | Oct 11 (W) | Using SSA for Optimization (PDF) |
| Oct 13 (F) | Value Numbering (PDF) | Ch 17.4 and [Alpern and Zadeck 1992] | ||
| Oct 16 (M) | Midterm Review | HW2 (answers) | ||
| Oct 18 (W) | Midterm Exam (in class) | |||
| Advanced Analysis and Optimization | ||||
| Oct 20 (F) | Pointer and Alias Analysis I (PDF) | Ch 17.5 and 19.4 | ||
| Oct 23 (M) | Interprocedural Analysis (PDF) | [Emami 94] | ||
| Oct 25 (W) | Class canceled | |||
| Oct 27 (F) | Flow and Context Insensitive Alias Analysis(PDF) | |||
| Oct 30(M) | Context-sensitive Alias Analysis (PDF) | |||
| Nov 1 (W) | Profile-guided Optimization (PDF) | Nov 3 (F) | Dynamic compilation (PDF) | |
| OOP and GC | ||||
| Nov 6 (M) | Compiling OO languages (PDF) | Ch 14 | Project 3 | |
| Nov 8 (W) | Garbage collection (PDF) | Garbage Collection Basics, Ch 13 | ||
| Nov 10 (F) | Implementing Garbage Collection | |||
| Parallelism and Locality | ||||
| Nov 13 (M) | Parallelism and Locality (PDF) | Ch 21 | ||
| Nov 15 (W) | Array Data Dependence Analysis (PDF) | [PaduaWolfe96] | ||
| Nov 17 (F) | Loop transformations | |||
| Nov 20 (M) | Fall Recess -- No Class | |||
| Nov 22 (W) | Fall Recess -- No Class | |||
| Nov 24 (F) | Fall Recess -- No Class | |||
| Nov 27 (M) | Transformation Frameworks I (PDF) | |||
| Nov 29 (W) | Transformation Frameworks II (PDF) | Dec 1 (F) | Transformation Frameworks cont... | Project 4 |
| Dec 4 (M) | Tiling (PDF) | [LamWolf91] | ||
| Emerging Topics | ||||
| Dec 6 (W) | Beyond optimization - Bug Detection (PDF) | |||
| Dec 8 (F) | Wrap up (PDF) | (HW3) | ||
| Dec 14 (R) | Final Exam (9:10-11:10am) | |||
A number of these slides originated from a collaboration between Calvin Lin at the University of Texas and E Christopher Lewis at the University of Pennsylvania. They have been modified with their permission.