Lecture notes fully updated through Lecture 31.
Lecture | Date | Lecture topic | Readings | Assignments | |
---|---|---|---|---|---|
Parsing | |||||
1 | Aug 28 | Course overview | Course overview | ||
2 | 31 | Lexical analysis and regular expressions | Appel 1 | PS1 out | |
3 | Sep 2 | Automating lexical analysis | Appel 2.1–2.5 | ||
4 | 4 | Grammars and parsing | Appel 3.1 | ||
5 | 7 | Top-down (LL) parsing | Appel 3.2 | PS1 due, PA1 out 9/5 | |
6 | 9 | Bottom-up parsing | Appel 3.3 | ||
7 | 11 | LR parsing and parser generators | Appel 3.4, 4.1–4.2 [example] | PS2 out 9/10 | |
Static semantics | |||||
8 | 14 | Semantic analysis and symbol tables | Appel 5 | PA1 due, PA2 out | |
9 | 16 | Types | (Dragon 6.5) | ||
10 | 18 | Type systems | PS2 due (add deadline) | ||
11 | 21 | Subtyping | |||
12 | 23 | Modules, type representation, visitors [notes, slides] | Appel 4.3 | PA2 due | |
Code generation | |||||
13 | 25 | Intermediate code | Appel 7.1, Dragon 6.1–2 | PA3 out 9/24 | |
14 | 28 | Syntax-directed translation | Appel 7.2–3 | ||
15 | 30 | More syntax-directed translation | |||
16 | Oct 2 | IR lowering, basic blocks [notes, slides] | Appel 8.1–2 | ||
17 | 5 | Tiles and instruction selection | Appel 9.1–2 | PA3 due, PA4 out | |
18 | 7 | Finishing code generation | Appel 9.3 | PS3 out 10/6 | |
Optimization and program analysis | |||||
19 | 9 | Introduction to optimization | (Muchnick 11,Dragon 9.1) | ||
Oct 12 | Fall Break | ||||
20 | 14 | Live variable analysis (Maks Orlovich) | Appel 10, (Dragon 9.2.5) | ||
21 | 16 | Dataflow analysis | (Dragon 9.2) | PS3 due 10/15 (drop deadline) | |
22 | 19 | Dataflow analysis frameworks | (Dragon 9.3) | ||
Oct 20 | Prelim 1: 7:30pm, Phillips 219 | ||||
Oct 21 | No class (post-exam) | ||||
23 | 23 | Register allocation | Appel 11.1–3, (Dragon 8.8.4) | ||
24 | 26 | Control flow analysis | Appel 17.2,18.1 | PA4 due, PA5 out | |
28 | Recitation: PA5 review | ABI specification | |||
Oct 30 | No class—work on project | ||||
25 | Nov 2 | Loop optimizations | Appel 18.2–3, (Muchnick 14.1) | ||
26 | 4 | Induction variable optimizations | Appel 18.4–5, (Muchnick 14.2) | ||
27 | 6 | Redundancy elimination | Appel 17.2–3, (Muchnick 12.4,13.1, Dragon 9.4-5) | ||
28 | 9 | Pointer/alias analysis | Appel 17.5 (Muchnick 10, Dragon 12.4) | PA5 due, PA6 out | |
29 | 11 | Interprocedural analysis, iterative fixed-point algorithms | Appel 20.1–3 | ||
Supporting advanced language features | |||||
30 | 13 | Object layout and method dispatch | Appel 14 | ||
31 | 16 | Multiple inheritance | PS4 out | ||
32 | 18 | Advanced object features | |||
33 | 20 | Higher-order and first-class functions | Appel 15 | ||
34 | 23 | Memory management | Appel 13 | ||
Nov 25 | Thanksgiving break | ||||
Nov 27 | Thanksgiving break | ||||
35 | 30 | Linking and shared libraries | PS4 due, PA6 due 11/24, PA7 out 11/24 | ||
Dec 1 | Prelim 2: 7:30pm, Phillips 219 | ||||
36 | Dec 2 | Parametric polymorphism | Appel 16 | ||
37 | 4 | Exceptions and beyond | |||
Dec 16 | Final project demos and PA7 due: December 16–18 |