Caml
Power

Schedule

Warning: The schedule below is only approximate. It will almost certainly change --- we make no promises. Amended lectures notes that better reflect the content of the lecture may be posted after class.

Note: reading assigments in "RWO" refer to the Real World OCaml book, which is also available online.

Dates Topic Notes/Code Reading
The Basics
W Sep 16 Course Introduction Course Intro -
W Sep 16 O'Caml Introduction Ocaml Intro, hello.ml, sum.ml Functional Basics, Type Checking, Optional: RWO pp 1-10
Th Sep 17 Precept 1: OCaml Intro printEg.ml fizzbuzz.ml exercise1.ml (Dropbox)
M Sep 21 Simple Immutable Data: Variables, Tuples, Options Let, Tuples, Unit, Options; Type-directed Programming;
Optional: RWO Chap 2
W Sep 23 Thinking Inductively Induction, Lists and Nats Thinking Inductively;
Optional: RWO Chap 3
W Sep 23 Assign 1 Due
Th Sep 24 Precept 2: Lists merge.ml exercise2.ml (Dropbox)
M Sep 28 Poly-HO: Polymorphism and Higher-Order Programming Inductive programming with the Naturals; Poly-HO Polymorphism and Higher-order Programming
W Sep 30 Datatypes and Functional Design Lists and Pipe; Datatypes Optional: RWO Chapter 6
W Sep 30 Assign 2 Due
Th Oct 1 Precept 3: Assignment 3, Map, Fold and Datatypes exercise3.ml (Dropbox)
Reasoning About Programs
M Oct 5 Datatype design and Error Processing Datatype Design; Error Processing; Evaluation Optional: Blog on F#, Error Processing and Functional Design;
Optional: RWO Chapter 7;
Operational Semantics
W Oct 7 Proving Programs Correct Evaluation; Proofs about Programs; interpreter code: eval.ml Equational Reasoning
Th Oct 8 Precept 4: Datatypes, Equational Reasoning exercise4.ml (Dropbox)
M Oct 12 Proving Programs Correct Proofs about Programs; Permutations
W Oct 14 Space Model Space Model; tail.ml
W Oct 14 Assign 3 Due
Th Oct 15 Precept 5: Closures and More Equational Reasoning exercise5.ml (solution)
M Oct 19 More CPS and Equational Reasoning Continuation-passing Style; Proofs about Datatypes Equational Reasoning about Natural Numbers and Trees;
Optional Reading: Odd-Order Theorem;
Four-Color Theorem;
tree-increment-cps.ml
Modularity
W Oct 21 Modules and Functors Modules; Reasoning about Modules Optional: RWO Chaper 4, 9; Even More Optional: Chapter 10
W Oct 21 Assign 4 Due
Th Oct 22 Precept 6: Tail Recursion and More Equational Reasoning Precept 6 exercises (Solution: code, proofs)
M Oct 26 Reasoning about Modules and Representation Invariants Modules II Abstraction and Representation Invariants
W Oct 28 Midterm Exam
Fall Break
M Nov 9 Modules (continued); References Modules II, References Intro
W Nov 11 Refs (Continued) Refs Continued Optional: RWO Chapter 8
T Nov 12 Precept 7: Midterm recap
Effects, Parallelism and Concurrency
M Nov 16 Invited Lecturer: Yaron Minsky, Jane St Capital Effective ML -
W Nov 18 Streams and Lazy Evaluation Streams Inf.mli, StreamMain.ml
W Nov 18 Assign 5 Due
T Nov 19 Precept 8: Modules range.mli
M Nov 23 Parallelism Intro Parallelism and Threads Using threads and futures
Thanksgiving Break
M Nov 30 Futures, Threads, and Locks Futures and locks Using threads and futures
W Dec 2 Parallel Complexity Parallel complexity; Parallel Collections Parallel Complexity Models, Parallel Scheduling
Th Dec 3 Precept 9: References and Futures range.mli;
exercise.txt
M Dec 7 Parallel Sequences Parallel Folds and Scans Parallel Sequences, Optional Reading: NESL
W Dec 9 Haskell Haskell Intro Optional Reading: Learn you a Haskell for Great Good
W Dec 9 Assign 6 Due
Th Dec 10 Precept 10: Functional data type proof of correctness bst.ml; exercise.txt Modules II lecture notes
M Dec 14 Communicating Sequential Processes; Assignment 7 overview CSP; Assignment 7 Assignment 7
M Dec 14 Final Assignment Handout: Due Dean's Date
W Dec 16 Machine-checked proofs about functional programs Machine Proof Software Foundations Preface and Basics
T Dec 17 Precept 11: Map/Reduce Parallel lecture notes: (20) and (21)
Winter Break
T Jan 12 Dean's Date: Assign 7 Due at 4:59pm
M Jan 18 Final Exam at 9:00am in McCosh 10