Course Schedule
Exam and Due Dates
- 1:00pm September 17, 2007: TL07 Project, Deadline 1
- 1:00pm October 3, 2007: TL07 Project, Deadline 2
- 5:30pm Monday, October 15, 2007: Midterm Exam
- 1:00pm October 31, 2007: TL07 Project, Deadline 3
- 1:00pm November 21, 2007: TL07 Project, Deadline 4
- 5:00pm Monday, December 10, 2007: Final Exam
Recommended Problems
- Overview of Compilation and Interpretation
- Scott, p. 22, "Check Your Understanding", 10, 11, 12, 13, 14, 15, 16, 17, 18
- Scott, p. 32 & 33, Exercises 1.1, 1.4
- Scott, p. 33 & 34, Exercises 1.8, 1.9, 1.0, and 1.11
- Cooper, p. 725, Exercise 3
- Scanning and Parsing:
- Rewrite the TL07 grammar
to be a backtrack free LL(1) grammar.
(c.f., Cooper 3.3.3 and 3.3.4)
- Scott, p. 97ff, Exercises 2.1, 2.2, 2.4, 2.7, 2.10, 2.12, 2.14,
2.18, 2.22, 2.23, 2.36
- Names and Bindings
- Scott, p. 151ff, Exercises 3.1, 3.2, 3.4, 3.5, 3.9, 3.13, 3.15
- Cooper, p. 746, Sec. 6.5, Exercise 1
- Code Generation
- Cooper, p. 751, Section 7.3, Exercises 1, 2, 3
- Cooper, p. 752, Section 7.4, Exercises 1, 2
- Cooper, p. 756, Section 7.8, Exercises 2
- Cooper, p. 757, Section 7.9, Exercises 1, 2
- Machine-Independent Optimizations
- Cooper, p. 760, Section 8.4, Exercises 1 and 2
- Cooper, p. 760, Section 8.5, Exercises 1 and 2
- Cooper, p. 760, Section 8.6, Exercises 1 through 4
- Cooper, p 768, Section 10.3, Exercises 3 and 4
- Iterative Dataflow Analysis
- Exercises, p. 764, Section 9.2, Exercises 1 through 4
- Static Single Assignment Form
- Cooper, p. 765, Section 9.3, Exercises 1 through 4
- Instruction Selection
- Cooper, p. 769 ff, Section 11.3, Exercises 1 and 3
- Cooper, p. 770 ff, Section 11.4, Exercises 1 through 3
- Instruction Scheduling
- Cooper, p. 771 ff, Section 12.2, Exercises 1 and 2
- Cooper, p. 772 ff, Section 12.3, Exercises 1 and 2
- Cooper, p. 773 ff, Section 12.4, Exercise 1
- Register Allocation
- Cooper, p. 773, Section 13.3, Exercise 1
- Cooper, p. 774, Section 13.4, Exercise 1
- Cooper, p. 775, Section 13.5, Exercises 1 and 2
- Cooper, p. 777, Section 13.6, Exercises 1 and 2
Lecture Topics and Readings
- August 22, 2007: Personal Introduction, Expectations, Grading, and Syllabus
- August 27, 2007: Introduction
- Programming Languages, Compilers, and Interpreters (Scott, Ch. 1)
- Structure of Compilers (Cooper, 1.4/1.5)
- August 29, 2007: Overview of Syntax and Formal Languages (Scott, Ch. 2)
- September 5 & 10, 2007: Recursive Descent Parsers (Cooper, 3.3)
- September 12, 2007: bottom up parsing
- September 17, 2007: finite automata, regular languages, and scanners
- September 19, 2007: Abstract Syntax Trees (AST's), associativity, and precedence
- September 24, 2007: Overview of Symbol Tables and Type Checking (Cooper 5.7)
- Sept. 26, Oct. 1 & 3, 2007: Names, Scopes and Bindings (Scott, Ch. 3)
- October 8: CFG's and 3-address code (Cooper 5.3, 5.4)
- October 10: Code Generation, Expressions (Cooper, Ch. 7)
- October 15: Midterm Exam
- October 17: Code Generation, Statements, Basic Blocks
- October 22 & 24: M-I Optimizations / Iterative Data Flow Analysis (Cooper, Ch. 8, Ch. 9, Ch. 10)
- October 29: Redundancy Elimination (Ch. 8)
- October 31: dominators and SSA (Cooper 5.3, Ch. 9)
- November 5: Dominator-based Value Numbering
- November 7: TL07 issues / review of machine-independent optimizations
- November 12 Machine-Dependent Optimizations / Peephole Instruction Selection(Cooper Ch. 10, 11)
- November 14 Register Allocation (Cooper Ch. 12)
- November 16 Register Allocation / Instruction Selection (Ch. 11, Ch. 12)
- November 18 Instruction Scheduling (Cooper Ch. 13)
- November 26 History of Programming Languages / Programming Paradigms (Scott Ch. 9 and Ch. 10)
- November 28 Review
Additional Reading:
- Control Flow (Scott, Ch. 6)
- Data Types (Scott, Ch. 7)
- Semantic Analysis: Attribute Grammars (Scott Ch. 4)