601.428/628 (F21): Schedule
This page lists lecture topics, readings, and exam dates. It also lists assignment due dates.
The links to slides are provided for reference. In general, there is no guarantee that they will be posted before class, or that their content will not change.
Readings:
- EaC is Cooper and Torczon, Engineering a Compiler (2nd Ed.)
- F&B is Levine, Flex and Bison
Note: The schedule will become more concrete as the semester progresses. Expect it to be updated frequently. Tentative topics are marked in a lighter italic font: expect these to change.
| Date | Topic/Slides | Reading | Assignment |
|---|---|---|---|
| Mon, Aug 30 | Course intro, lexical analysis: slides | ||
| Wed, Sep 1 | Context free grammars, parse trees, ambiguity, recursive descent parsing: slides | EaC 3.1–3.2 | |
| Mon, Sep 6 | Holiday, no class | ||
| Wed, Sep 8 | Limitations of recursive descent, precedence climbing: slides | EaC 3.3 | |
| Mon, Sep 13 | Lexical analyzer generators, lex/flex: slides, lexdemo.zip | EaC 2.1–2.5, F&B Chapters 1–2 |
|
| Wed, Sep 15 | LL(1) parsing: slides | EaC 3.3 | A1 due |
| Mon, Sep 20 | Parser generators, yacc/bison: slides | F&B Chapter 3 | |
| Wed, Sep 22 | ASTs, Interpreters: slides | ||
| Mon, Sep 27 | Interpreter runtime structures: slides, Exam 1 review | ||
| Wed, Sep 29 | Bottom-up parsing: slides | EaC 3.4 | |
| Mon, Oct 4 | Exam 1 in class | ||
| Wed, Oct 6 | Context-sensitive analysis, attribute grammars: slides | EaC 4.1–4.3 | A2 due Fri 10/8 |
| Mon, Oct 11 | Compiler project intro, ASTs and symbol tables: slides | ||
| Wed, Oct 13 | AST visitors, symbol tables, context-sensitive analysis, ad-hoc techniques: slides | EaC 4.4 | |
| Mon, Oct 18 | Intermediate representations: slides | EaC 5.1–5.5 | |
| Wed, Oct 20 | The procedure abstraction: slides | EaC Chapter 6 | |
| Mon, Oct 25 | Code shape for expressions: slides | EaC 7.1–7.4 | A3 due |
| Wed, Oct 27 | x86-64 assembly language, code generation: slides | ||
| Mon, Nov 1 | Arrays and strings: slides | EaC 7.5–7.7 | |
| Wed, Nov 3 | Boolean and relational expressions, decisions and loops: slides | EaC 7.8 | |
| Mon, Nov 8 | Exam 2 in class | ||
| Wed, Nov 10 | Intro to Code optimization: slides, slides | EaC 8.1–8.5 | |
| Mon, Nov 15 | Intro to Global optimization, Instruction selection: slides, slides | EaC 8.6, 11.5 | A4 due Fri 11/12 |
| Wed, Nov 17 | Local register allocation: slides | EaC 13.1–13.3 | |
| Mon, Nov 22 | Thanksgiving break | ||
| Wed, Nov 24 | Thanksgiving break | ||
| Mon, Nov 29 | Dataflow analysis: slides | EaC 9.1–9.2, Killdall-POPL73 | |
| Wed, Dec 1 | Code optimization tips, JIT compilation: slides | Gosling-IR95 | |
| Mon, Dec 6 | Exam 3 review, Static analysis: slides | A5 due |