Calendar
Readings are from A Practical Approach to Compiler Construction by Des Watson, unless otherwise noted.
Optional readings are given from the classic “Dragon Book”, Compilers: Principles, Techniques & Tools by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman.
Date | Topic | Reading | Work Due |
---|---|---|---|
Tuesday, September 3 | Introduction, overview of compilation | 1.1-1.3, 2.4 & Optional: Rich Programmer Food & Optional: Svelte is Compiled (JavaScript web app framework) & Optional: Dragon 1.1-1.4 | |
Thursday, September 5 | Lexical Analysis | 3.1-3.3 & Optional: Dragon 2.6, 3.1-3.5, 3.8 | |
Tuesday, September 10 | 3.4 | ||
Thursday, September 12 | Languages, Syntax, and Parsing | 2.1-2.3, 4 & Optional: Dragon 4.1-4.3 | |
Tuesday, September 17 | Top-Down Parsing | Assignment 1 | |
Thursday, September 19 | 5.1 & Optional: Dragon 4.4 | ||
Tuesday, September 24 | Bottom-Up Parsing | Project: Lexer | |
Thursday, September 26 | 5.2 & Optional: Dragon 4.5-4.7 | ||
Tuesday, October 1 | |||
Thursday, October 3 | Parse trees and error handling | 5.3, 5.5 | Assignment 2 |
Tuesday, October 8 | Optional: Podcast: Machine powered refactoring with ASTs | ||
Thursday, October 10 | Symbol Tables | 5.6 & Optional: Dragon 2.7, 7.1-7.3 | |
Tuesday, October 15 | Semantic Analysis | 6.1-6.2 | |
Thursday, October 17 | Optional: Why choose Rust? | ||
October Break | |||
Tuesday, October 29 | Syntax-directed translation | 6.3 & Optional: Dragon 5 | Project: Parser |
Thursday, October 31 | Intermediate Code Generation | 6.4-6.5 & Optional: Dragon 2.8, 6.1-6.6 | |
Tuesday, November 5 | |||
Thursday, November 7 | |||
Tuesday, November 12 | Assignment 3 | ||
Thursday, November 14 | |||
Tuesday, November 19 | |||
Thursday, November 21 | Optimization | 7 & Optional: Dragon 9.1-9.4 | |
Tuesday, November 26 | Project: Semantic Analyzer | ||
Thanksgiving recess | |||
Tuesday, December 3 | Machine Code Generation | 8 & Optional: Dragon 8.1 | Assignment 4 |
Thursday, December 5 | |||
Tuesday, December 10 | Wrap up | ||
End of classes | |||
Sunday, December 15 | Project: Generator |