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