| Date | Topic | Reading | Handouts and Suggested Exercises | Due |
| Introduction | ||||
| Jan 17 (W) | Subversion, Eclipse, and other tools | Syllabus | ||
| Jan 19 (F) | Visitor Design Pattern | Ch 1 | ||
| Jan 22 (M) | Introduction to Compilers | Ch 4.3 and visitor design pattern wikipedia entry | Code up one of the wikipedia examples and step through it in the debugger | |
| Jan 24 (W) | Nondeterministic and Deterministic Finite Automaton | Ch 6 in Gagnon's Masters Thesis and PA2 | ||
| Jan 26 (F) | PA1 (slides) | |||
| Jan 29 (M) | Lexical Analysis: Regular Expressions (slides) | Ch 2 through 2.2, Ch 4 in Gagnon's Masters Thesis | 2.2, 2.4 | |
| Jan 31 (W) | Lexical Analysis: Recognizing Tokens (slides) | Ch 2 | 2.5, 2.6, 2.9 | |
| Feb 2 (F) | Parsing: Context Free Grammars (slides) | Ch 3 through 3.1 | ||
| Feb 5 (M) | Parsing: Ambiguous Grammars (slides) | Ch 5 through 5.5, Ch 4 in Gagnon's Masters Thesis (All his references to AST should really be parse tree or concrete syntax tree) | ||
| Feb 7 (W) | Parsing: Bottom-Up Parsing (slides) | Ch 3.3 and Section about FIRST and FOLLOW sets in Ch 3.2 | ||
| Feb 9 (F) | Parsing: Generaing LR Parse Tables (slides) | 3.10, 3.11, 3.12 | ||
| Feb 12 (M) | Parsing: shift-reduce and reduce-reduce errors (slides) | Try class examples in SableCC | ||
| Feb 14 (W) | Parsing: Top-Down Parsing (slides) | Ch 3.2 | 3.6, 3.14, write a top-down parser for example grammar given in class | |
| Feb 16 (F) | Syntax directed translation (slides) | Ch 4 | Test yourself problems listed here | |
| Feb 19 (M) | Translating CST to AST in SableCC (Dave)(slides)(grammar files) | short tutorial,online docs | ||
| Feb 21 (W) | Review for Midterm (Dave) | Bring questions about suggested exercises | ||
| Feb 23 (F) | Visitor Design Pattern (slides) | Ch. 4.3, Ch 6 in Gagnon's Masters Thesis | ||
| Feb 26 (M) | Symbol Table (slides) | |||
| Feb 28 (W) | Programming with Exceptions (slides) | Sun Tutorial on Exceptions in Java | ||
| Mar 2 (F) | Semantic Analysis: Type Checking (slides) | Ch 5 | ||
| Mar 5 (M) | Semantic Analysis cont... (slides) | |||
| Mar 7 (W) | Midterm Review | |||
| Mar 9 (F) | Midterm Exam (in class) | |||
| Mar 12 (M) | Spring Recess -- No Class | |||
| Mar 14 (W) | Spring Recess -- No Class | |||
| Mar 16 (F) | Spring Recess -- No Class | |||
| Mar 19 (M) | Error Handling (slides) | pgs. 53-55, Section 3.5, pg. 114 | ||
| Mar 21 (W) | Error Handling cont... (slides) | Suggested exercises on slides | Mar 23 (F) | MIPS and Spim | A13 exercise A.7 |
| Mar 26 (M) | Implementing function calls (slides) | |||
| Mar 28 (W) | Stack frame layout for MiniJava compiler (slides) | Ch. 6.1 in Tiger book | 6.1, 6.2, 6.3 | |
| Mar 30 (F) | Stack frames (slides) | Suggested exercises on slides | ||
| Apr 2 (M) | Frames in the MiniJava compiler (slides) | Ch. 6.2 | ||
| Apr 4 (W) | MiniJava to MIPS (slides) | |||
| Apr 6 (F) | Intermediate Representation Trees (slides) | Ch. 7 through 7.1 | ||
| Apr 9 (M) | Translation to IRT (slides) | Ch. 7.2, 7.3 | 7.1, 7.3 | |
| Apr 11 (W) | Translation to IRT cont... (slides) | |||
| Apr 13 (F) | Translation to IRT cont... (slides) | |||
| Apr 16 (M) | Translation to IRT cont ... (slides) | |||
| Apr 18 (W) | Cannonicalization and Traces (slides) | Ch. 8.1 and 8.2 | ||
| Apr 20 (F) | Instruction Selection (slides) | Ch. 9.1 | ||
| Apr 23 (M) | Instruction selection for MiniJava (slides) | Ch. 9.3 and Program section | ||
| Apr 25 (W) | Instruction selection for MiniJava cont... (slides) | |||
| Apr 27 (F) | Instruction selection for CISC machines (slides) | Ch. 9.2 | Suggested exercises on slides, 9.1 | |
| Apr 30 (M) | Other register allocation options (slides) | Ch. 12 | ||
| May 2 (W) | Register allocation for expression trees (slides) | |||
| May 4 (F) | Final Review (slides) | |||
| May 7 (M) | Final Exam (7:00-9:00am) | |||