26,28c26 < noClassDate(1, 16, ""); < < noClassDate(1, 18, "*No Class - Dr. Zdancewic is away"); --- > //noClass("") 30,32c28 < lec(SHOW, "Introductions: Compilers, Interpreters, and OCaml", ["lec01.zip"]); < < lec(HIDE, "OCaml Crash Course: Translating SIMPLE to OCaml", ["simple.ml","translate.ml"]); --- > lec(SHOW, "Introductions: Compilers and Interpreters", ["simple.ml", "lec01.zip"]); 34c30,32 < lec(HIDE, "OCaml Crash Course, Part II / X86lite", []); --- > //noClassDate(1, 18, "*no class"); > > lec(SHOW, "Translating Simple to OCaml", ["lec02.zip"]); 36c34 < hw(HIDE, "1/31", "HW1: Hellocaml"); --- > //lec(HIDE, "OCaml Crash Course, Part II", []); 38c36,38 < lec(HIDE, "X86lite / C calling conventions", ["lec04.zip"]); --- > lec(SHOW, "X86lite / C calling conventions", ["lec03.zip"]); > lec(SHOW, "X86lite programming", ["lec04.zip"]); > hw(SHOW, "2/2", "HW1: Hellocaml", "hw1-hellocaml"); 40,46c40,42 < lec(HIDE, "X86lite - code generation", ["lec05.zip"]); < < lec(HIDE, "Intermediate Representations I", ["lec06.zip"]); < < lec(HIDE, "IRs II / LLVM", ["lec07.zip"]); < < hw(HIDE, "2/14", "HW2: X86lite simulator"); --- > lec(SHOW, "Intermediate Representations", ["lec05.zip"]); > lec(SHOW, "Intermediate Representations II", ["lec06.zip"]); > hw(SHOW, "2/9", "HW2: X86lite simulator", "hw2-x86sim"); 48c44,46 < lec(HIDE, "Structured Data in the LLVM IR", ["struct.c", "unsafestack.c"]); --- > lec(SHOW, "LLVM ", ["lec07.zip"]); > lec(SHOW, "Structured Data in the LLVM IR", ["lec08.zip"]); > hw(SHOW, "2/16", "HW3: X86lite Assembler"); 50c48,54 < lec(HIDE, "LLVM IR Data Types II / Intro to Lexing", ["handlex0.ml", "handlex.ml"]); --- > lec(SHOW, "Lexing: DFAs and ocamllex", ["lec09.zip"]); > lec(SHOW, "Parsing I: Context Free Grammars", ["lec10.zip"]); > //noClassDate(2, 22, "(No class -- Monday schedule)"); > //noClassDate(2, 24, " "); > noClassDate(2, 28, "Class Canceled due to Water main rupture"); > noClassDate(3, 2, ""); > hw(SHOW, "3/2", "HW4: LLVMlite backend", "hw4-llvmlite"); 52,68c56,59 < lec(HIDE, "Lexing: DFAs and ocamllex / Parsing I: Context Free Grammars", ["lec09.zip"]); < < lec(HIDE, "Parsing II: Context Free Grammars, menhir, LL parsing", ["lec11.zip"]); < < hw(HIDE, "2/28", "HW3: LLVMlite backend"); < < lec(HIDE, "Parsing III: LL(k) parsing, LR(0) parsing", ["handparser.ml"]); < < noClassDate(3, 5, "Spring Break"); < < noClassDate(3, 7, "Spring Break"); < < lec(HIDE, "Parsing III: LR(1) Parsing", ["lec13.zip"]); < < exam(3, 14, "Midterm", "", "midterm", [], ""); < < lec(HIDE, "OAT v1 overview, First-class Functions I", ["lec14.zip"]); --- > lec(SHOW, "Parsing II: Recursive Descent, LL(1)", ["parser.ml"]); > //lec(HIDE, "Parsing III: ", ["lec12.zip"]); > //exam(3, 3, "Midterm", "", "midterm", [], ""); > lec(SHOW, "Parsing II: LR(0) parsing, LR(1) Parsing", ["lec13.zip"]); //12 70c61,62 < lec(HIDE, "First-class Functions II: lambda calculus", ["lec14.zip"]); --- > noClassDate(3, 14, "(No class -- Spring Break)"); > noClassDate(3, 16, ""); 72c64,66 < lec(HIDE, "Closure Conversion / Judgments & Derivations / Scope Checking", ["lec14.zip"]); --- > lec(SHOW, "First-class Functions / Lambda Calculus", ["fun.ml"]);//13 > lec(SHOW, "Closure Conversion / Scope Checking", ["cc.ml"]); //14 > hw(SHOW, "3/23", "HW5: Lexing and Parsing", "hw5-lexing-and-parsing"); 74,76c68,69 < hw(HIDE, "3/27", "HW4: Oat language compiler v.1"); < < lec(HIDE, "Types I: Typechecking", ["oat-v1-defn.pdf"]); --- > lec(SHOW, "Typechecking", ["tc.ml"]);//15 > lec(SHOW, "Compilation as Translating Judgments", []); //16 78c71,73 < lec(HIDE, "Types II: Rich Types, Subtyping, Mutability", []); --- > lec(SHOW, "Types Generally, Subtyping, Oat v2 Typing", ["oat-v1-defn.pdf"]); //17 > lec(SHOW, "OO: Dynamic Dispatch and Inheritance", []);//18 > hw(SHOW, "4/06", "HW6: Frontend Compilation", "hw6-frontend-compilation"); 80c75,77 < lec(HIDE, "OO: Dynamic Dispatch and Inheritance", []); --- > lec(HIDE, "(Skipping OO content in lec19.)", []); //19 > lec(SHOW, "Optimizations", ["opt-example.c", "opt-example.oat"]); //20 > hw(HIDE, "4/13", "HW7: Typechecking", "[name-of-rst-file]"); 82d78 < lec(HIDE, "OO: Multiple Inheritance / Intro to Optimizations", []); 84c80,82 < lec(HIDE, "Optimizations I", ["opt-example.c", "opt-example.oat"]); --- > lec(SHOW, "Analysis I: Live Variable, Dataflow Analysis", []); //21 > lec(SHOW, "Analysis II: Generalized Dataflow Analysis", []); //22 > hw(HIDE, "4/20", "HW8: Compiling Structs and Function Pointers", "[name-of-rst-file]"); 86c84,95 < lec(HIDE, "Data Flow Analysis", []); --- > /* > HW1 75pts - Ocaml > HW2 50pts - X86 Simulator (hw2.1) > HW3 50pts - X86 Assembler (hw2.2) > HW4 100pts - LLVM Lite (hw3) not split > HW5 50pts - Lexing (hw4.1) > HW6 50pts - Frontend Compilation (hw4.2) > HW7 50pts - Typechecking (hw5.1) > HW8 50pts - Compiling structs and function pointers (hw5.2) > HW9 50pts - Dataflow Analysis, Alias Analysis, Dead Code (hw6.1) > HW10 50pts - Register Allocation and Experiments (hw6.2) > */ 88,90d96 < hw(HIDE, "4/17", "HW5: Oat language compiler v.2"); < < lec(HIDE, "Data Flow Analysis II / Control Flow Analysis", []); 92c98,100 < lec(HIDE, "Control Flow Analysis / Register Allocation", []); --- > lec(SHOW, "Register Allocation", []);//23 > lec(SHOW, "Wrap-up", []); //24 > hw(HIDE, "4/27", "HW9: Dataflow Analysis, Alias Analysis, Dead Code", "[name-of-rst-file]"); 94c102,104 < lec(HIDE, "Register Allocaion / SSA Revisited / Compiler Verification", []); --- > lec(HIDE, "t.b.d.", []); > lec(HIDE, "t.b.d.", []); > hw(HIDE, "5/04", "HW10: Register Allocation and Experiments", "[name-of-rst-file]"); 97,98c107 < < hw(HIDE, "4/30", "HW6: Analysis & Optimizations"); --- > // hw(HIDE, "4/27", "HW6: Analysis & Optimizations");