Please note that the schedule is subject to revision and modification as the semester proceeds.
| Week of | Topic(s) | Notes* | Reading** |
|---|---|---|---|
| August 30 | Introduction to course, course policies | ||
| September 6 | Introduction to compilers Scanners, FSMs |
Compiler Overview The Scanner |
Chapter 1 Chapter 2 |
| September 13 | FSMs, non-deterministic FSMs Regular expressions |
September 20 | Scanners, JLex Parsing, Context-Free Grammars |
JLex Context-Free Grammars |
Chapter 3 |
| September 27 | CFGs, Predictive parsing, LL(1) grammars | Parsing | |
| October 4 | LL(1) grammars, Syntax-directed translation, ASTs, | Syntax-Directed Translation | |
| October 11 | ASTs, Java Cup | Java Cup | |
| October 18 | Symbol tables | Symbol Tables and Static Checks | Chapter 4, 5.7 |
| October 25 | Type checking Runtime environments |
Runtime Environments |
Chapter 6 |
| November 1 | Runtime access to locals, globals, non-locals | Runtime Access to Variables | |
| November 8 | Runtime access to locals, globals, non-locals | ||
| November 15 | Parameter passing | Parameter Passing | |
| November 22 | Code generation | Code Generation | Chapter 7 |
| November 29 | Code generation | ||
| December 6 | Code generation Optimization |
Optimization |
|
| December 13 | Optimization Review |
* Notes are a set of on-line notes for the class written by Professor
Susan Horwitz.
** Readings are from the recommended text by Keith Cooper and Linda Torczon, Engineering a Compiler,
published by Morgan Kaufmann, 2004