Caml
Power
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 |