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 |