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