CSSE 404: Schedule

The readings and homework are listed under the due date.

WeekDatesDays and TopicsReadingsHomework
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