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 |