Date | Topic | Reading before class | Class Notes | Notices |
Tuesday Aug 23 | Introduction | Syllabus, Assignments, and this Schedule. | 01-Intro.pdf | |
Thursday Aug 25 | The MeggyJava Programming Language | Chapter 1 in Wirth book | 02-MeggyJava.pdf | |
Friday Aug 26 | Recit: Meggy Jrs and revision control | | Getting Started with Meggy Notes | DUE Mon Aug 29th: HW1 - Syllabus , compiler intro, and MeggyJava |
Tuesday Aug 30 | AVR assembly and Meggy Jr Simple runtime | | 03-AVR.pdf, 03-AVR.txt | |
Thursday Sept 1 | Haskell Intro and Lexing Symbols and Keywords | Chapters 2 and 3 in Wirth book and Getting Started with Haskell | 04-Haskell.pdf | |
Friday Sept 2 | Recit: Haskell basics and regression testing | | Haskell Recitation | DUE Tues Sept 6th: HW2 - Haskell Exercises (Sept 5th is labor day) |
Tuesday Sept 6 | Regular languages, finite automata, and scanning | | 05-LexicalAnalysis.pdf | |
Thursday Sept 8 | Lexing with tables in Haskell | | 06-LexicalAnalysis.pdf | |
Friday Sept 9 | Recit: Lexing with tables lab | | Lexing with tables recitation form | DUE Mon Sept 12th: PA1 - MeggyJava and AVR, DUE Thursday Sept 15: PA1 Peer Reviews |
Tuesday Sept 13 | Context Free Grammars | | 08-Lexer-finish-CFG-Intro.pdf (NOTE: there is no 07 set of notes) | |
Thursday Sept 15 | Recursive descent parsing | | 09-predictive-parsing.pdf | |
Friday Sept 16 | Recit: Haskell lexer and parser exercises | | Lexer and parser recitation form | DUE Sunday Sept 18th HW3 - Online exercises to help study for midterm, no late period |
Tuesday Sept 20 | First midterm in class | | Please note that old midterms do not cover all the same material. This midterm will cover all material through the Friday 16th recitation. 2010 Midterm, 2011 midterm, 2012 midterm, 2015 midterm | |
Thursday Sept 22 | Code generation while parsing in Haskell | | 10-predictive-parsing-n-code-gen.pdf | |
Friday Sept 23 | Recit: 15 minute compiler with recursive descent parsing in Haskell | | 15min-compiler.html | DUE Mon Sept 26th: PA2 - setPixel, DUE Thursday Sept 29: PA2 Peer Reviews |
Tuesday Sept 27 | Abstract Syntax Trees (ASTs) | | 11-AST-codegen.pdf, MainOnePass.hs, MainTwoPass.hs | |
Thursday Sept 29 | Type checking and overall strategy for implementing new language features | | 12-type-checking.pdf, TreeTraversal.hs, TreeTraversal-updated.hs | |
Friday Sept 30 | Recit: Visualizing ASTs with dot in Haskell | | ast-viz-with-dot.html | DUE Mon Oct 3rd: HW4 - programming exercise for ASTs |
Tuesday Oct 4 | Expression grammars and ambiguity | Eliminating Ambiguity in Expression Grammars | 13-exp-parsing.pdf> | |
Thursday Oct 6 | Any remaining code generation for PA3 features | | 14-control-flow-code-gen.pdf | |
Friday Oct 7 | Recit: Canceled | | | DUE Mon Oct 10: HW5 - online exercises |
Tuesday Oct 11 | Derivative-based parsing | | 16-parsing-with-derivs-intro.txt | |
Thursday Oct 13 | Derivative-based parsing | | 17-parsing-with-derivs.txt | |
Friday Oct 14 | Recit: Derivative-based parsing | | ParseWD.hs,Dictionary.hs | DUE Mon Oct 17: PA3 - checkButton, DUE Monday Oct 24: PA3 Peer Reviews |
Tuesday Oct 18 | Midterm review | | Video, 15-left-assoc-in-LL1.txt, 18-HW5-notes.txt, 18-midterm2-review-notes.txt | |
Thursday Oct 20 | LR Parsing (will be on final) | | 19-LR-parsing-Debray.pdf | Dr. Saumya Debray leading class |
Friday Oct 21 | Recit: Review session for midterm | | midterm-review-lucky-charms.txt | DUE Wed 26th: HW6 - Online exercises to help study for midterm, NO LATE PERIOD! |
Tuesday Oct 25 | Symbol tables (needed for PA4 and will be on final) | | 20-SymbolTables-Sethi.pdf | Dr. Ravi Sethi leading class |
Thursday Oct 27 | 2nd Midterm | | | |
Friday Oct 28 | Recit: Symbol table examples in Haskell | | Evaluating expressions using a kind of symbol table. | DUE Mon Oct 31: HW7 - NOTICE, HAS BEEN CANCELED, SEE PIAZZA POST |
Tuesday Nov 1 | Symbol table implementation in Haskell and error handling | | 21-midterm-n-PA3-post-mortem.txt, 22-symbol-tables-n-Haskell.txt | |
Thursday Nov 3 | Symbol table cont. | | 22-symbol-tables-n-Haskell.txt | |
Friday Nov 4 | Recit: More Haskell exercises | | | DUE Mon Nov 7: HW8 - programming exercise for symbol tables |
Tuesday Nov 8 | Implementing functions with a run-time stack | | 23-RTS-n-other-code-gen-PA4.pdf | |
Thursday Nov 10 | RTS and recursion | | 24-RTS-n-other-code-gen-PA4.pdf | |
Friday Nov 11 | Veterans Day!! No discussion sections. | | | DUE Mon Nov 14: PA4 - methods, <, tones, DUE Saturday Nov 19: PA4 Peer Reviews |
Tuesday Nov 15 | Register allocation | | | Dr. Todd Proebsting leading class |
Thursday Nov 17 | Compilation for objects, arrays, and assignments | | 25-classes-arrays-assign.pdf | |
Friday Nov 18 | Recit: Memory model for RTS and heap | | RecitFall16.java | DUE Mon Nov 21: HW9 - Memory models exercise |
Tuesday Nov 22 | Compilation for objects, local variables, and assignments cont. | | 26-arrays.pdf, PA5PaddleBall.java, PA6rainbow.java | |
Thanksgiving | No Thursday class or Friday recitation | | | |
Tuesday Nov 29 | Review: LR parsing, scopes and symbol tables, and expression register allocation. | | 27-LR-parsing-and-other-review.pdf | |
Thursday Dec 1 | Using Haskell monads to simplify compiler implementation | | 28-IO-monads-shorter.pdf, MonadForCompilerExample.hs, SymTab.hs, MonadForCompilerExample2.hs | |
Friday Dec 2 | Recit: Final review | | 29-final-review-notes.txt | DUE Mon Dec 5th: PA5 - Objects and Arrays, No PA5 Peer Reviews |
Tuesday Dec 6 | Compilation for lambda functions | | 30-implementing-lambda-functions.pdf, closure.c, closure2.c | |
Monday December 12 (3:30-5:30pm) | Final | | | |