All readings are from Crafting a Compiler, unless otherwise indicated. The reading assignment associated with a particular day should be completed by the start of class that day, not afterwards. Your ability to participate effectively depends on this.
As appropriate to the needs of this learning community, we will alter details of this schedule to reflect a slower or faster pace. Check back here for regular updates.
Last Update: January 24, 2016
||01/20 - 01/23||Compiler Structure; Lexical Analysis (FSAs and Regular Expressions)||Ch. 1 (skim); Ch. 2.1–2.3|
||01/24 - 01/30||Lexical Analysis (Implementation, Specification); Grammars||Ch. 2.4; JFlex Manual; 3.1–3.2||Lab #0 (Simple Compiler) due on Wednesday, January 27|
||01/31 - 02/06||Recursive descent ("top down") parsing; LL(k) grammars||Ch. 3.3, 3.5.4||Lab #1 (Lexer Construction) due on Thursday, February 4|
||02/07 - 02/13||Bottom-up parsing; LR(k) grammars||Ch. 3.4||Lab #2 (Recursive Descent Parsing) due on Thursday, February 11|
||02/14 - 02/20||LALR(1) parsing; parser generators||Ch. 3.6; CUP manual|
||02/21 - 02/07||Abstract Syntax Trees; Syntax-directed translation||Ch. 4.4 (pp. 198–206)|
||02/28 - 03/05||Interpreters and their implementation; Symbol Tables||Notes on interpeter structure; Notes on the visitor pattern; Ch. 5.5|
||03/06 - 03/11||Type systems; semantic analysis||Notes on type systems; Tiger Language Reference manual; Ch. 4.1–4.2|
||03/12 - 03/19||SPRING BREAK|
||03/20 - 03/26||Semantic analysis and abstract interpretation|
||03/27 - 04/02||Java Virtual Machine; Code generation and partial evaluation||JVM notes; Notes on partial evaluation;|
||04/03 - 04/09||Code generation; Runtime structures for variable access & procedures||Ch. 6.1–6.2, 7.1–7.8|
||04/10 - 04/16||Translation to intermediate representation||Ch. 5.1–5.4; 6.4–6.5|
||04/17 - 04/23||Code generation||Ch. 7.5–7.7, 7.9|
||04/24 - 04/30||TBD (project work)||Time permitting, we'll look at data flow analysis and other optimization techniques|
|Week 15 / Reading Days
||05/01 - 05/07||Wrap-up||Final class meeting is Monday, 05/02|
Final Exam Time is Sunday May 8, 8:30AM-11:30AM (sorry y'all - I don't make the schedule). Projects are due at 8:30 am that day. You will present your work during meetings held throughout the exam period.