This schedule will be amended as the class progresses. Homework dates of unassigned homeworks are only approximate.
| Lecture | Date | Lecture topic | Readings | Assignments | |
|---|---|---|---|---|---|
| Parsing | |||||
| 1 | Aug 28 | Course outline, Introduction | Course overview, Dragon 1-1.4 | ||
| 2 | 30 | Lexical analysis and regular expressions | Appel 1, Dragon 3–3.3 | PS1 out | |
| Sep 2 | Labor Day | ||||
| 3 | 4 | Generating efficient lexers | Appel 2.1–2.5, Dragon 3.4-3.10, DFA/NFA slides from 2011 | PA1 out | |
| 4 | 6 | Syntactic Analysis | Appel 3.1, Dragon 4–4.3 | ||
| 5 | 9 | Top-down (LL) parsing | Appel 3.2, Dragon 4.4 | PS1 due | |
| 6 | 11 | Bottom-up parsing | Appel 3.3, Dragon 4.5 | PS2 out, PA1 due, PA2 out (add deadline) | |
| 7 | 13 | LR parsing and parser generators | Appel 3.4, 4.1–4.2, Dragon 4.6-4.8 | ||
| Static semantics | |||||
| 8 | 16 | AST construction and semantic analysis | Appel 5 | ||
| 9 | 18 | Types | Dragon 6.5 | PS2 due, PS3 out | |
| 10 | 20 | Formal Derivation | – | ||
| 11 | 23 | Type Checking Cubex | – | PA2 due, PA3 out | |
| Code generation | |||||
| 12 | 25 | Separate Compilation, Names, and Visitors | Appel 7.1, Dragon 6.1–2 | ||
| 13 | 27 | Intermediate Code | Appel 7.2–3 | ||
| 14 | 30 | IR lowering | Appel 8.1 | PS3 due, PS4 due, PS4 out | |
| 15 | Oct 2 | IR lowering (contd.) | Appel 8.1 | ||
| 16 | 4 | Implementing Cubex | – | ||
| 17 | 7 | Basic Blocks, CFGs, traces | Appel 8.2 | ||
| 18 | 9 | Instruction selection | Appel 9.1–2 | ||
| 19 | 11 | Calling Conventions | – | PA3 due | |
| Oct 14 | Fall Break | ||||
| 20 | 16 | Object layout and method dispatch | Appel 14 | PA4 out | |
| 21 | 18 | Multiple inheritance [slides|notes (2011)] | – | (drop deadline) | |
| 22 | 21 | Miscellaneous OO | – | ||
| 23 | 23 | Memory Management | Appel 13 | ||
| 24 | 25 | Miscellaneous Features | – | ||
| Optimization and program analysis | |||||
| 25 | 28 | Introduction to optimization | Muchnick 11,Dragon 9.1 | ||
| 26 | 30 | Live variable analysis | Appel 10, Dragon 9.2.5, C&T 9.2–9.2.3 | ||
| 27 | Nov 1 | Analysis frameworks | Dragon 9.3, Muchnick 8.3–8.4 | ||
| 28 | 4 | Analysis examples | – | PA4 due, PA5 out | |
| 29 | 6 | Register allocation | Appel 11.1–3, Dragon 8.8.4, Poletto/Sarkar | ||
| 30 | 8 | Reaching definitions, webs, SSA | Appel 19, Muchnick 8.1, 8.10–8.11, C&T 9.3 | ||
| 31 | 11 | Control flow analysis | Appel 17.2,18.1 | ||
| 32 | 13 | Loop optimizations I | Appel 18.2–3, Muchnick 14.1 | ||
| 33 | 15 | Loop optimizations II | Appel 18.4–5, Muchnick 14.2, Muchnick 12.4, C&T 8.3.2 | ||
| 34 | 18 | Pointer analysis | Appel 17.5, Muchnick 10, Dragon 12.4 | PS5 out | |
| 35 | 20 | Interprocedural analysis | Appel 20.1–3 | ||
| 36 | 22 | PA6 - Extensions | – | PA5 due, PA6 out | |
| 37 | 25 | Linking and Loading | – | PS5 due | |
| Nov 27 | Thanksgiving break | ||||
| Nov 29 | Thanksgiving break | ||||
| 38 | Dec 2 | TBD | TBD | ||
| 39 | 4 | TBD | TBD | ||
| 40 | 6 | TBD | TBD | ||
| Dec 10 | PA6 due | ||||