Schedule
Date | Topic | Slides | Handouts |
1/11 | |||
1/13 | Introductions: Compilers, Interpreters, and OCaml | lec01.pdf | simple.ml |
1/18 | *no class | ||
1/20 | OCaml Crash Course: Translating SIMPLE to OCaml | lec02.pdf | simple.ml translate.ml |
1/25 | OCaml Crash Course, Part II / X86lite | lec03.pdf | |
1/26 | HW01 (HW1: Hellocaml) due | ||
1/27 | X86lite / C calling conventions | lec04.pdf | lec04.zip |
2/1 | X86lite - code generation | lec05.pdf | lec05.zip |
2/3 | Intermediate Representations I | lec06.pdf | lec06.zip |
2/8 | IRs II / LLVM | lec07.pdf | lec07.zip |
2/9 | HW02 (HW2: X86lite simulator) due | ||
2/10 | Structured Data in the LLVM IR | lec08.pdf | struct.c unsafestack.c |
2/15 | LLVM IR Data Types II / Intro to Lexing | lec09.pdf | handlex0.ml handlex.ml |
2/17 | Lexing: DFAs and ocamllex / Parsing I: Context Free Grammars | lec10.pdf | lec09.zip |
2/22 | Parsing II: Context Free Grammars, menhir, LL parsing | lec11.pdf | lec11.zip |
2/23 | HW03 (HW3: LLVMlite backend) due | ||
2/24 | Parsing III: LL(k) parsing, LR(0) parsing | lec12.pdf | handparser.ml |
3/1 | Parsing III: LR(1) Parsing | lec13.pdf | lec13.zip |
3/3 | Midterm | ||
3/8 | Spring Break | ||
3/10 | Spring Break | ||
3/15 | OAT v1 overview, First-class Functions I | lec14.pdf | lec14.zip |
3/17 | First-class Functions II: lambda calculus | lec15.pdf | lec14.zip |
3/22 | Closure Conversion / Judgments & Derivations / Scope Checking | lec16.pdf | lec14.zip |
3/23 | HW04 (HW4: Oat language compiler v.1) due | ||
3/24 | Types I: Typechecking | lec17.pdf | oat-v1-defn.pdf |
3/29 | Types II: Rich Types, Subtyping, Mutability | lec18.pdf | |
3/31 | OO: Dynamic Dispatch and Inheritance | lec19.pdf | |
4/5 | OO: Multiple Inheritance / Intro to Optimizations | lec20.pdf | |
4/7 | Optimizations I | lec21.pdf | opt-example.c opt-example.oat |
4/12 | Data Flow Analysis | lec22.pdf | |
4/13 | HW05 (HW5: Oat language compiler v.2) due | ||
4/14 | Data Flow Analysis II / Control Flow Analysis | lec23.pdf | |
4/19 | Control Flow Analysis / Register Allocation | lec24.pdf | |
4/21 | Register Allocaion / SSA Revisited / Compiler Verification | lec25.pdf | |
4/26 | Compiler Verification / Course Wrap Up | lec26.pdf | |
4/27 | HW06 (HW6: Analysis & Optimizations) due |