Schedule

DateTopicSlidesHandouts
1/11
1/13Introductions: Compilers, Interpreters, and OCamllec01.pdfsimple.ml
1/18*no class
1/20OCaml Crash Course: Translating SIMPLE to OCamllec02.pdfsimple.ml
translate.ml
1/25OCaml Crash Course, Part II / X86litelec03.pdf
1/26HW01  (HW1: Hellocaml) due
1/27X86lite / C calling conventionslec04.pdflec04.zip
2/1X86lite - code generationlec05.pdflec05.zip
2/3Intermediate Representations Ilec06.pdflec06.zip
2/8IRs II / LLVMlec07.pdflec07.zip
2/9HW02  (HW2: X86lite simulator) due
2/10Structured Data in the LLVM IRlec08.pdfstruct.c
unsafestack.c
2/15LLVM IR Data Types II / Intro to Lexinglec09.pdfhandlex0.ml
handlex.ml
2/17Lexing: DFAs and ocamllex / Parsing I: Context Free Grammarslec10.pdflec09.zip
2/22Parsing II: Context Free Grammars, menhir, LL parsinglec11.pdflec11.zip
2/23HW03  (HW3: LLVMlite backend) due
2/24Parsing III: LL(k) parsing, LR(0) parsinglec12.pdfhandparser.ml
3/1Parsing III: LR(1) Parsinglec13.pdflec13.zip
3/3Midterm
3/8Spring Break
3/10Spring Break
3/15OAT v1 overview, First-class Functions Ilec14.pdflec14.zip
3/17First-class Functions II: lambda calculuslec15.pdflec14.zip
3/22Closure Conversion / Judgments & Derivations / Scope Checkinglec16.pdflec14.zip
3/23HW04  (HW4: Oat language compiler v.1) due
3/24Types I: Typecheckinglec17.pdfoat-v1-defn.pdf
3/29Types II: Rich Types, Subtyping, Mutabilitylec18.pdf
3/31OO: Dynamic Dispatch and Inheritancelec19.pdf
4/5OO: Multiple Inheritance / Intro to Optimizationslec20.pdf
4/7Optimizations Ilec21.pdfopt-example.c
opt-example.oat
4/12Data Flow Analysislec22.pdf
4/13HW05  (HW5: Oat language compiler v.2) due
4/14Data Flow Analysis II / Control Flow Analysislec23.pdf
4/19Control Flow Analysis / Register Allocationlec24.pdf
4/21Register Allocaion / SSA Revisited / Compiler Verificationlec25.pdf
4/26Compiler Verification / Course Wrap Uplec26.pdf
4/27HW06  (HW6: Analysis & Optimizations) due