The readings and homework are listed under the due date.
Week | Dates | Days and Topics | Readings | Homework |
---|---|---|---|---|
1 | Dec.2-6 | Day 1: Introduction to course
Introduction to the compilers Introduction to the project | ||
Day 2: More in-depth look into compilation
Symbol tables Lexical analysis Tokens Details of lexical analysis | Introduction by Crenshaw
Dave^2: 1.1-1.5 | BC: Team Preference Survey | ||
Day 3: BNF
Regular expressions NFA DFA | Review: Dragon: 1.1-1.3
Read Dave^2: 1.6-1.7, 2.2.1 Read Dragon: 3.0-3.4 | |||
Day 4: The Fortran compiler and its justification
DFA minimization Lexical analyzer implementation | Dragon: 3.6-3.7
Crenshaw: Part VII: LEXICAL SCANNING and Part XI: LEXICAL SCAN REVISITED Dave^2: 3.0-3.2 | BC: Summary of "Fortran Automatic Coding System" by Backus et.al. | ||
2 | Dec.9-13 | Day 5: Parsers
Context-free grammars Derivations Ambiguity Precendence Top-down parsing Elimination left-recursion | ||
Day 6: Eliminating left-recursion
Prective parsing First and Follow sets | Dragon: 2.4, 4.0 - 4.3 (skip section on
"Non-context-free language constructs")
Dave^2: 4.0, 4.1 | |||
Day 7: Top-down recursive descent parser
Table-driven top-down parser | Dragon: 4.4
Dave^2: 4.2 | 23:59: Lexer | ||
Day 8: Algol
Bottom-up parsing Shift-reduce parsers | BC: Summary of "Structure and Use of Algol 60" by Bottenbruch. | |||
3 | Dec.16-20 | Day 9: Producing Goto and Action tables | Dragon: 4.5
Dave^s: 4.3 | |
Day 10: Lexer and Parser generators | Dragon: 4.7, 3.5
Dave^2: 3.3 | 23:59: Modified grammar and F/F sets | ||
Day 11: Code Generation for expressions
Stack machine Register allocation | Dragon 9.1, 9.2
Crenshaw: Part II: EXPRESSION PARSING | |||
Day 12: Work day, no class today. | ||||
4 | Dec.Jan.6-10 | Day 13: Register Allocation cont'd | Dragon: 9.7 | |
Day 14: Register Allocation cont'd | Dragon: 9.6 | |||
Day 15: Code generation for expressions and control flow | Dave^2: 9.2, 9.4 | 23:59: Parser | ||
Day 16: Code generation for arrays and strings
Functional programming | Dave^2: 9.3 | BC: Summary of "Can programming be liberated from the von Neuman style?" by Backus. | ||
5 | Jan.13-17 | Day 17: Procedures
Activation Records | Dragon: 7.2-7.5
Dave^2: 9.5-9.6 | |
Day 18: Activation records revisited | ||||
Day 19: Work day, no class today. | 23:59: Expression and basic control flow code generator | |||
Day 20: Simula (Object oriented programming)
Structures Support for OO languages Garbage collection | Dave^2: pp 205-6 | BC: Summary of "Compiling Simula: A Historical Study of Technological Genesis" by Jay Rune Holmevik | ||
6 | Jan.20-24 | Day 21: Typing I
Symbol table revisited | Dragon: 6.0-6.6
Dave^2: 6.0-6.8 | |
Day 22: Typing II | Dragon: 7.6
Dave^2: 4.7, 5.5 | |||
Day 23: Work day | 23:59: Code generator with procedures and array support | |||
Day 24: Declarative programming
Intermediate representations I | Dragon: 8.0-8.6
Dave^2: 8.0-8.4, 8.9 | BC: Summary of "Algorithm = Logic + Control" by Kowalski. | ||
7 | Jan.27-31 | Day 25: Optimization Techniques
Declarative programming | Dragon: 9.9, 9.10, 10.0-10.4
Dave^2: 9.7, 9.8, 10.1-10.5 | |
Day 26: Instruction Selection | ||||
Day 27: Work day | 23:59: Code generator for OO portion, compiler with type checking and conversion. (ideally a working code generator for all of MiniJava) | |||
Day 28: Instruction Scheduling | BC: Summary of the paper "Reflecting on Trusting Trust." | |||
8 | Feb.3-7 | Day 29: Work day | ||
Day 30: Work day | ||||
Day 31: Error detection and recovery | Dragon: revisit 4.4 & 4.8
Dave^2: 3.4 | 23:59: Project: Optimizing compiler, Compiler that uses intermediate languages (hard deadline for working compiler) | ||
Day 32: Error detection and recovery | Dragon: p88 | |||
9 | Feb.10-14 | Day 33: Work day | ||
Day 34: A look at some compilers | Dragon: chpt.12
Dave^2: chpt.11 | |||
Day 35: Optimizing for parallelism and locality | New Dragon: 11.0-11.2 | 23:59: Compiler with Error detection and correction | ||
Day 36: Optimizing compilers for parallel computers | ||||
10 | Feb.17-21 | Day 37: Compiling for quantum computnig | ||
Day 38: Presentations of compiler
Course evals | ||||
Day 39: Work day | ||||
Day 40: Presentations of compiler | BC: Presentation slides
5pm: Final version of compiler Wed. Feb. 26, 23:59: Take-home final |