Caml
Power
Power
Schedule
Warning: The schedule may change slightly; refresh your browser every week or so!
| Dates | Topic | Notes/Code | Reading | |
|---|---|---|---|---|
| The Basics | ||||
| W Sep 6 | OCaml Introduction | Intro, hello.ml, sum.ml | Functional Basics, Type Checking, Optional: RWO pp 1-10 | |
| Sep 7-8 | Precept 1: OCaml Intro | precept1.zip ticket.ml .merlin fizzbuzz.ml (fizzbuzz solution) exercise1.ml | ||
| M Sep 11 | Simple Immutable Data: Variables, Tuples, Options | Let, Functions, Tuples | Type-directed Programming; Optional: RWO Chap 2 |
|
| Tu Sep 12 | Assign 1 Due | |||
| W Sep 13 | Thinking Inductively | Options, Lists, Sort, Java Rant |
Thinking Inductively; Optional: RWO Chap 3 |
|
| Sep 14-15 | Precept 2: Lists, Options, Polymorphism | precept2.zip precept2_solutions.zip | ||
| M Sep 18 | Poly-HO: Polymorphism and Higher-Order Programming | C rant, map/reduce, Poly HO! | Polymorphism and Higher-order Programming | |
| Tu Sep 19 | Assign 2 Due | |||
| W Sep 20 | More Data! | Datatypes, gml.ml | Optional: RWO Chapter 6 | |
| Sep 21-22 | Precept 3: Assignment 3, Map, Fold and Datatypes | precept3.zip; exercise3_sol.ml | ||
| Reasoning About Programs | ||||
| M Sep 25 | Building Interpreters | Abstract syntax, Substitution and evaluation | Operational Semantics | |
| Tu Sep 26 | Assign 3 Due | |||
| W Sep 27 | More Interpreters | Model of OCaml, Assignment 4; simple interpreter code: eval0.ml; with recursive functions: eval3.ml | ||
| Sep 28-29 | Precept 4: Assignment 4 and More About Closures | precept4.zip; precept4_sol.zip |
||
| M Oct 2 | How OCaml uses memory | Space model (and pruning closures); simple interpreter code: eval0.ml; with recursive functions: eval3.ml | ||
| W Oct 4 | Proving Programs Correct | Simple proofs, Induction for naturals, Induction for lists | Equational Reasoning | |
| Oct 5-6 | Precept 5: Mutually Recursive Types, Equational Reasoning | theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) |
||
| M Oct 9 | More Correctness Proofs | Induction for datatypes, Proofs about programming languages | Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem |
|
| Tu Oct 10 | Assign 4 Due | |||
| W Oct 12 | Generalizing your Induction Hypothesis | Generalized induction hypotheses; OCaml as compiled | ||
| Oct 12-13 | Precept 6: Tail Recursion and More Equational Reasoning | |||
| Oct 16-20 | Fall break | |||
| Modularity | ||||
| M Oct 23 | ML Modules | Simple modules, Design choices | Optional: RWO Chap 4 (Modules), 9 (Functors) | |
| W Oct 25 | Midterm Exam Part I (in lecture) | |||
| Th Oct 26 | Midterm Exam Part II (7:30pm) | |||
| M Oct 30 | Modules and Assignment 5 |
Functors, Module evaluation
(continuing the slide deck from last week) |
||
| W Nov 1 | Reasoning about Modules | Representation Invariants | Optional: Abstraction and Representation Invariants | |
| Nov 2-3 | Precept 8: Modules | precept8.zip ; precept8_sol.zip | ||
| M Nov 6 | Module Equivalence | Module Equivalence, Mechanized proofs | ||
| Mutation & Laziness | ||||
| W Nov 8 | Mutation | Mutable References | Optional: RWO Chapter 8 | |
| Nov 9-10 | Precept 9: Reasoning about Modules | range.mli; exercise9.txt (Solution) |
||
| M Nov 13 | Functional programming in industry | Interview with Josh Berdine | ||
| W Nov 15 | Lazy Evaluation | Laziness and Streams | ||
| Nov 16-17 | Precept 10: Laziness & Monads | |||
| M Nov 20 | Computability | Computability | Optional reading: The Birth of Computer Science at Princeton in the 1930s | |
| Tu Nov 21 | Assign 5 Due | |||
| Thanksgiving Break | ||||
| Type Systems | ||||
| M Nov 27 | Type Checking | Type Systems, Type Checking | ||
| W Nov 29 | Type Inference | Type inference | Optional: Efficient Type Inference | |
| Nov.30/Dec.1 | Precept 10: Exam Prep | |||
| Parallelism and Concurrency | ||||
| M Dec 4 | Parallel Collections | Parallel Sequences | Parallel Sequences, Optional Reading: MapReduce; NESL | |
| Tu Dec 5 | Assign 6 Due | |||
| W Dec 6 | Parallel Collections II | Parallel Prefix Scan; Assignment 7 | ||
| Dec 8-9 | Precept 11: Parallel map/reduce | precept11.zip | ||
| Th Dec 14 | Assign 7 Due | |||
| Dec 20 | Final Exam 7:30pm-10:30pm, in Jadwin Hall A09 | |||