All dates for exams and lectures are provisional. Prelim dates are only approximate.
Lecture | Date | Lecture topic | Readings | Assignments | |
---|---|---|---|---|---|
Parsing | |||||
1 | Aug 24 | Course overview | Course overview, Dragon 1-1.4 | ||
2 | 26 | Lexical analysis and regular expressions | Appel 1, Dragon 3–3.3 | PS1 out | |
3 | 29 | Automating lexical analysis | Appel 2.1–2.5, Dragon 3.4-3.10 [JFlex example] | PA1 out | |
4 | 31 | Grammars and parsing | Appel 3.1, Dragon 4–4.3 | ||
5 | Sep 2 | Top-down (LL) parsing | Appel 3.2, Dragon 4.4 | PS1 due, PS2 out | |
Sep 5 | Labor Day | ||||
6 | 7 | Bottom-up parsing | Appel 3.3, Dragon 4.5 | PA1 due, PA2 out | |
7 | 9 | LR parsing and parser generators | Appel 3.4, 4.1–4.2, Dragon 4.6-4.8 [example] | ||
Static semantics | |||||
8 | 12 | Semantic analysis and symbol tables | Appel 5 | PS2 due, PS3 out | |
9 | 14 | Types | Dragon 6.5 | ||
10 | 16 | Type systems | (add deadline) | ||
11 | 19 | Subtyping | PA2 due, PA3 out | ||
12 | 21 | Modules, type representation, visitors [notes|slides] | Appel 4.3 | ||
Code generation | |||||
13 | 23 | Intermediate code (Wenzel Jakob) | Appel 7.1, Dragon 6.1–2 | PS3 due | |
14 | 26 | Syntax-directed translation | Appel 7.2–3 | ||
15 | 28 | IR lowering | Appel 8.1 | PS4 out 9/27 | |
16 | 30 | PA2 recap and ABI specification | ABI specification | ||
17 | Oct 3 | Trace covering and abstract assembly | Appel 8.2 | PA3 due, PA4 out | |
18 | 5 | Tiles and instruction selection | Appel 9.1–2 | ||
19 | 7 | Finishing code generation | Appel 9.3 | PS4 due | |
Oct 10 | Fall Break | ||||
Optimization and program analysis | |||||
20 | 12 | Introduction to optimization | Muchnick 11,Dragon 9.1 | ||
21 | 14 | Live variable analysis | Appel 10, Dragon 9.2.5, C&T 9.2–9.2.3 | (drop deadline) | |
22 | 17 | Dataflow analysis | Dragon 9.2, Muchnick 8.2 | ||
23 | 19 | Dataflow analysis frameworks | Dragon 9.3, Muchnick 8.3–8.4 | PA4 due, PA5 out | |
24 | 21 | Register allocation | Appel 11.1–3, Dragon 8.8.4, Poletto/Sarkar | ||
25 | 24 | Reaching definitions, webs, SSA | Appel 19, Muchnick 8.1, 8.10–8.11, C&T 9.3 | ||
Oct 25 | Prelim 1: 7:30pm, Phillips 219 (covers material in lectures 1–24) | ||||
Oct 26 | No class (post-exam recovery) | ||||
26 | 28 | Control flow analysis | Appel 17.2,18.1 | ||
27 | 31 | Induction variables and loop optimizations | Appel 18.2–3, Muchnick 14.1 | ||
28 | Nov 2 | More loop optimizations, value numbering | Appel 18.4–5, Muchnick 14.2, Muchnick 12.4, C&T 8.3.2 | ||
29 | 4 | Redundancy elimination | Appel 17.2–3, Muchnick 12.4,13.1, Dragon 9.4-5 | ||
30 | 7 | Pointer/alias analysis | Appel 17.5, Muchnick 10, Dragon 12.4 | PA5 due | |
31 | 9 | Interprocedural analysis, iterative fixed-point algorithms | Appel 20.1–3 | PA6 out | |
Supporting advanced language features | |||||
32 | 11 | Object layout and method dispatch | Appel 14 | PS5 out | |
33 | 14 | Multiple inheritance [slides|notes] | |||
34 | 16 | More object features, first-class functions | |||
35 | 18 | Functional language features | Appel 15 | ||
36 | 21 | Linking and shared libraries | PS5 due | ||
Nov 23 | Thanksgiving break | ||||
Nov 25 | Thanksgiving break | ||||
37 | 28 | Memory management | Appel 13 | PA6 due 11/23, PA7 out 11/23 | |
38 | 30 | Parametric polymorphism | Appel 16 | ||
Dec 1 | Prelim 2: 7:30pm, Bard 140 | ||||
39 | Dec 2 | Exceptions and beyond | |||
Dec 14 | Final project demos and PA7 due: December 14–16 |