Schedule
Lectures
Suggested Dragon Book exercises for lectures 1–7.
Dates are filled in as the course progresses; the table below is the planned sequence of topics, not a schedule. Assignment deadlines and lab session dates are fixed and are on the assignments page.
Lectures counts the classes spent on each topic so far. A class split between two topics counts as 0.5 to each. Dates marked planned are not yet included in the lecture counts.
| # | Topic | Dates | Lectures | Slides | Resources |
|---|---|---|---|---|---|
| 1 | Introduction | 27/07, 28/07, 29/07 | 3 | 01_introduction.pdf | |
| 2 | Lexical Analysis | 31/07, 03/08 | 2 | 02_lexical_analysis.pdf | |
| 3 | Parsing | 04/08, 05/08, 10/08, 11/08, 12/08, 17/08 | 5.5 | 03_parsing.pdf | • Recursive descent parser demo • LL(1) table parser workbench • Dangling-else equivalence, proved in Lean |
| 4 | Bottom-up Parsing | 17/08, 18/08, 19/08, 24/08, 25/08, 28/08, 31/08 | 6.5 | 04_bottom_up_parsing.pdf | • LR(0) item-set and table workbench • SLR(1) workbench • LR(1) workbench |
| 5 | Semantic Analysis | 02/09, 04/09, 07/09, 08/09 | 4 | 05_semantic_analysis.pdf | MiniJava Type System (CS3300 revision) |
| 6 | Syntax Directed Translation | 09/09, 16/09, 18/09 | 2.5 | 06_sdt.pdf | Executable SDD workbench |
| 7 | Intermediate Representation | 18/09, 21/09, 22/09, 23/09, 28/09, 29/09 | 5.5 | 07_ir.pdf | AST and IR generation workbench |
| 8 | Runtime Management | 30/09, 05/10, 07/10 | 3 | 08_runtime.pdf | |
| 9 | Liveness Analysis and Register Allocation | 09/10, 12/10, 13/10 | 3 | 09_register_allocation.pdf | Linear Scan Register Allocation Paper |
| 10 | Basic Blocks and CFG | 14/10 | 1 | 10_basic_blocks_cfg.pdf | |
| 11 | Basic Block Optimizations | 11_basic_block_opt.pdf | |||
| 12 | Global Optimizations | 12_global_opt.pdf |
Total lectures so far: 36 (as of 14/10).
Lab sessions
Q slot, Tue 14:00 to 16:45, DCF. There is no lab in the first week.
| Date | Session |
|---|---|
| 04/08 | Flex and Bison tutorial (flex, bison) |
| 18/08 | Assignment 1 lab extension |
| 08/09 | Assignment 2 lab extension |
| 22/09 | Assignment 3 lab extension |
| 13/10 | Assignment 4 lab extension |
| 27/10 | Assignment 5 lab extension |
| 03/11 | Assignment 6 lab extension |
The lab extension is written during the session on DCF machines, with no network access other than the locally hosted Moodle. See the assignments page for how it is graded.