Caml
Power
Power
Schedule
Warning: The schedule is under construction and will change.
Dates | Topic | Notes/Code | Reading |
---|---|---|---|
The Basics | |||
Tu Sep 2 | IF YOU READ THIS, SET UP YOUR CODING ENVIRONMENT! SEE HERE | ||
W Sep 3 | OCaml Introduction | hello.ml, sum.ml | Reading: OCaml Basics: 2.1-2.8 |
Sep 4-5 | Precept 1: OCaml Intro | precept1.zip | |
M Sep 8 | Simple Immutable Data: Variables, Tuples, Records, Options | Reading: Data and Types: 3.4, 3.6, 3.7 | |
Tu Sep 9 | Assign 1 Due | ||
W Sep 10 | Thinking Inductively: Lists | Reading: Lists: 3.1, 3.8 Optional: Testing with OUnit | |
Sep 11-12 | Precept 2: Lists, Options | precept2.zip | |
M Sep 15 | Poly-HO: Polymorphism and Higher-Order Programming | Reading: Higher-order Programming: 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7 | |
Tu Sep 16 | Assign 2 Due | ||
W Sep 17 | More Data! | gml.ml | Reading: ML Data types: 3.2, 3.5, 3.9, 3.10, 3.11, 3.12 |
Sep 18-19 | Precept 3: Assignment 3, Map, Fold and Datatypes | precept3.zip | |
Reasoning About Programs | |||
M Sep 22 | Building Interpreters | Abstract syntax, Substitution and evaluation | Operational Semantics |
Tu Sep 23 | Assign 3 Due | ||
W Sep 24 | More Interpreters | Model of OCaml, Assignment 4; simple interpreter code: eval0.ml; with recursive functions: eval3.ml | |
Sep 25-26 | Precept 4: Assignment 4 and More About Closures |
Space model (and pruning closures);
precept4.zip; precept4_sol.zip |
|
M Sep 29 | In-class Test 1 | Functional programming and debugging. | |
W Oct 1 | Proving Programs Correct | Simple proofs, Induction for naturals, Induction for lists | Equational Reasoning |
Oct 2-3 | Proofs by Induction; Questions about Space Model | theorems.ml; exercise4.ml (#4) exercise5.ml Space model (and pruning closures) |
|
M Oct 6 | More Correctness Proofs | Induction for datatypes, Proofs about programming languages | Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem |
W Oct 8 | Generalizing your Induction Hypothesis | Generalized induction hypotheses; OCaml as compiled | |
Oct 9-10 | No formal precept; Optional Assignment 4 Help | ||
Fr Oct 10 | Assign 4 Due | ||
Oct 11-19 | Fall break | ||
Effects | |||
M Oct 20 | Refs and Lazy Evaluation | ||
W Oct 22 | Probabilistic Functional Programmng | Dice | Optional: Dice |
Oct 23-24 | Precept 6: Mutually Recursive types, tail recursion and More Equational Reasoning | theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) |
|
Modularity | |||
M Oct 27 | Modules and Interfaces | Simple modules, Design choices | Optional: RWO Chap 4 (Modules), 9 (Functors) |
Tu Oct 28 | Assign 5 Due (Theory) | ||
W Oct 29 | Functors | Functors, Module evaluation | |
Oct 30-31 | Precept 6: Mutually Recursive types, tail recursion and More Equational Reasoning | theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) |
|
M Nov 3 | Reasoning about Modules and Abstract Types | Representation Invariants | Optional: Abstraction and Representation Invariants |
Tu Nov 4 | Assign 6 Due | ||
W Nov 5 | Module Equivalence | Module Equivalence, Mechanized proofs | |
Nov 6-7 | Precept 8: Modules | precept8.zip ; precept8_sol.zip | |
Cool Stuff | |||
M Nov 10 | In-class Test 2 | ||
W Nov 12 | Type Systems | ||
Nov 13-14 | Precept 9 | ||
M Nov 17 | Type Inference | ||
Tu Nov 18 | Final Assignment Proposal Due | ||
Thanksgiving Break | |||
M Nov 24 | Natural Deduction and Curry-Howard Isomorphism | ||
Parallelism and Concurrency | |||
W Nov 26 | Parallelism: Futures | ||
Nov 27-28 | |||
M Dec 1 | Parallel Collections | Parallel Sequences | Parallel Sequences, Optional Reading: MapReduce; NESL |
W Dec 3 | Parallel Collections | Parallel Prefix Scan | |
Dec 4-5 | Precept 11: Parallel map/reduce | precept11.zip | |
Final Assessment Day for COS 326 (Dec 13-19) | Final Assignment Report Due |