Schedule for MCS-388: Compiler Design

In the reading column, section 0 means the material at the beginning of a chapter before the first section. When a reading is indicated as going to a particular page number, it means up to the heading on that page. The same section number on the next class day then indicates to finish the section.

This is my best guess as to the rate at which we will cover material; it may be revised.
2/51.0-2.2Introduction, syntax definition
2/62.3-2.4Syntax-directed translation
2/7Lab 1: Generating Code from ASTs
2/93.0-3.1, 3.3, 3.5Lexical analysis

2/12Lexical-analyzer generators
2/134.0-4.2Context-free grammarsHW 1
2/14Lab 1 (continued)
2/164.3Writing a grammar

2/194.4.0-4.4.1Top-down parsing
2/20Rest of 4.4More on predictive parsing
2/21Lab 1 (continued)HW 1, draft 2
2/234.5-4.6.3Bottom-up parsingLab 1

2/264.7-4.7.3SLR parser generation
2/27No class
2/28Lab 2: Scanning and Parsing
3/24.7.4Canonical LR and LALR parser generationHW 2

3/54.8, 4.9Using ambiguous grammars; parser generators
3/65.0-5.4Syntax-directed definitionsHW 3
3/7Lab 2 (continued)
3/9Lab 2 (continued)

3/12Lab 2 (continued)HW 2, draft 2
3/136.0-6.2Intermediate code
3/146.3, p.481Declarations and simple assignmentsLab 2 and HW 3, draft 2
3/16Lab 3: Adding Variables

3/196.4Array access; type conversions
3/206.6Control flow
3/21Lab 3 (continued)
3/23Lab 3 (continued)

3/26Lab 3 (continued)
3/277.0-7.4Run-time environmentsLab 3
3/28Preview of lab 4
3/30Lab 4: Control Flow and Scoping

4/9Spring break (no class)
4/10Lab 4 (continued)
4/11Lab 4 (continued)HW 4
4/13No class (David in Oregon)

4/16To be announced
4/178.0-8.3Code generation
4/18Preview of lab 5Lab 4
4/20Lab 5: ProceduresHW 4, draft 2

4/238.4-8.5Basic blocks and flow graphs
4/24Lab 5 (continued)
4/279.2Loops in flow graphsHW 5

4/30Lab 5 (continued)
5/19.3Data-flow analysis
5/2Lab 5
5/4Lab 6: Wildcard Lab

5/7HW 6 and HW 5, draft 2
5/9Lab 6 (continued)

5/14Lab 6 (continued)
5/158.8Register allocationHW 6, draft 2
5/16Synthesis and evaluationLab 6