Lecture |
Date |
Topic |
Slides |
Due |
Assignments & Reading |
| 1 |
Jan 24 |
Course overview | HW1: lexical analysis, Appel 1 | ||
| 2 | 26 | Lexical analysis | PA1: lexical analysis, Appel 2 | ||
| 3 | 28 | Grammars and parsing | Appel 3.1 | ||
| 4 | 31 | Top-down parsing | HW1 | HW2: parsing, Appel 3.2 | |
| 5 | Feb 2 | Bottom-up parsing | Appel 3.3 | ||
| 6 | 4 | LR parser generators | PA1 | PA2: parsing, Appel 3.4 | |
| 7 | 7 | Abstract syntax trees | Appel 4 | ||
| 8 | 9 | Semantic analysis | Appel 5.1-2 | ||
| 9 | 11 | Types | HW2 | ||
| 10 | 14 | Static semantics | Appel 5.4, HW3: semantic analysis, Appel 5.3 | ||
| 11 | 16 | Stack layout | Appel 6 | ||
| 12 | 18 | Intermediate code | Appel 7.1-2 | ||
| 13 | 21 | Syntax-directed translation | PA2 | PA3: IR generation, Appel 7.3 | |
| 14 | 23 | Canonical IR | Appel 8.1 | ||
| 15 | 25 | Basic blocks, instruction selection | HW3 | Appel 8.2 | |
| 16 | 28 |
Code generation 1 | Appel 9.1 | ||
| 28 | Prelim 1 review, Upson 111, 7-9PM | ||||
Mar 1 |
Prelim 1 (in class): covers material in lectures 1-14. Open book. |
||||
| 17 | 3 | Code generation 2 | Appel 9.2-3 | ||
| 6 |
In-class recitation |
||||
| 18 | 8 | Modules and abstract data types | PA3 | PA4: code generation | |
| 19 | 10 | First-class modules and objects | Appel 14.1-2 | ||
| 20 | 13 | Objects: subtyping | |||
| 21 | 15 | Objects: implementation | Appel 14.3-5 | ||
| 22 | Multiple inheritance | ||||
Spring Break |
|||||
| 23 | 27 | Introduction to optimization | HW4: objects and optimization, Muchnick 11 | ||
| 24 | 29 | Live variable analysis | Appel 10 | ||
| 25 | 31 | Register allocation | PA4 | PA5: Iota+, Appel 11, 12 | |
| 26 | Apr 3 | Standard data-flow analyses | Appel 17, Muchnick 8.1, Muchnick 12, 13 | ||
| 27 | 5 | Dataflow analysis frameworks | Muchnick 8.2-8.5 | ||
| 28 | 7 | Control flow analysis | Appel 18, Muchnick 7.1-4, 14.1 | ||
| 29 | 10 | Loop optimizations | HW4 | Muchnick 17.1 | |
| 12 | Prelim 2 review, in class |
||||
| 13 | Prelim 2, 7:30-9:30PM, Phillips 219. Emphasizes material in lectures 15-29. Open book. |
||||
| 30 | 14 | Instruction scheduling | Muchnick 5.7 | ||
| 31 | 17 | Garbage collection | Appel 13 | ||
| 32 | 19 | Linking and loading | |||
| 33 | 21 | First-class functions | PA6: register allocation, Appel 6, 15.1-2 | ||
| 34 | 24 | Optimizing first-class functions | PA5 | Appel 15.3-15.6 | |
| 35 | 26 | Parametric polymorphism | Appel 16.1, 16.3-4 | ||
| 36 | 28 | Exceptions | |||
| 37 | May 1 |
Dynamic types | |||
| 38 | 3 |
Other compilation strategies | |||
| 39 | 5 |
Language-based security | PA6 | ||
PA6, project demo: May 11-12, 1-4:30PM, Upson 317 |
|||||