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.
Dates | Topic | Notes/Code | Reading |
---|---|---|---|
The Basics | |||
W Sep 11 | Course Introduction | Course Intro | - |
W Sep 11 | O'Caml Introduction | Ocaml Intro, hello.ml, sum.ml | Functional Basics, Type Checking |
T Sep 12 | Precept 1: OCaml Intro | printEg.ml fizzbuzz.ml precept01.ml | |
M Sep 16 | Simple Immutable Data: Variables, Tuples, Options | Let, Tuples; Options; Java Rant | Type-directed Programming |
W Sep 18 | Thinking Inductively | Induction, Lists and Nats | Thinking Inductively |
W Sep 18 | Assign 1 Due | ||
T Sep 19 | Precept 2: Lists | merge.ml precept02.ml | |
M Sep 23 | Poly-HO: Polymorphism and Higher-Order Programming | Poly-HO; Lists and Pipe | Polymorphism and Higher-order Programming |
W Sep 25 | Datatypes and Functional Design | Datatypes, Error Processing, gml.ml | Optional: Blog on F#, Error Processing and Functional Design |
W Sep 25 | Assign 2 Due | ||
T Sep 26 | Precept 3: Assignment 3, Map, Fold and Datatypes | precept03.ml | |
Reasoning About Programs | |||
M Sep 30 | The Functional Evaluation Model | Type def note, Evaluation, eval.ml | Operational Semantics |
W Oct 2 | Proving Programs Correct | Proofs about Programs | Equational Reasoning |
T Oct 3 | Precept 4: Datatypes, Equational Reasoning | precept04.ml | M Oct 7 | Functional Space Model | Space Model; tail.ml |
M Oct 7 | Assign 3 Due | ||
W Oct 9 | Proving Programs Correct (Data Types) | (blackboard lecture) | Equational Reasoning about Natural Numbers and Trees Optional Reading: Odd-Order Theorem, Four-Color Theorem |
T Oct 10 | Precept 5: Closures and More Equational Reasoning | Precept 5 exercises | |
M Oct 14 | Continuation-passing Style | Continuation-passing Style | tree-increment-cps.ml |
Modularity | |||
W Oct 16 | Modules and Functors | Modules I | - |
W Oct 16 | Assign 4 Due | ||
T Oct 17 | Precept 6: Tail Recursion and More Equational Reasoning | Precept 6 exercises | |
M Oct 21 | More Modules and Representation Invariants; Midterm Prep | Modules II | |
W Oct 23 | Midterm I | ||
Fall Break | |||
M Nov 6 | Guest Lecture: Ron Minsky on Effective ML | - | |
W Nov 8 | Reasoning about Modules | Modules III | Abstraction and Representation Invariants |
Effects, Parallelism and Concurrency | |||
M Nov 11 | Mutation | Mutation | Streams teaser: Inf.mli, StreamMain.ml |
W Nov 13 | Laziness | Laziness | - |
W Nov 13 | Parallelism Intro | Parallelism | |
F Nov 15 | Assign 5 Due | ||
M Nov 18 | Threads and Futures | Lazy fix: Lazy Fix, Threads | Using threads and futures |
W Nov 20 | Futures (cont) Threads and Locks |
Parallel Complexity Models, Parallel Scheduling | |
M Nov 25 | Parallel Sequences | (blackboard) | Parallel Sequences, Optional Reading: NESL |
W Nov 27 | Assign 6 Due | ||
Thanksgiving Break | |||
M Dec 2 | Software Transactional Memory | STM slides | Optional Reading: Beautiful Concurrency |
W Dec 4 | Midterm II | ||
M Dec 9 | Final Assignment Handout: Due Dean's Date | ||
M Dec 9 | STM Continued, Parallel Scans and Prefix Sums | STM 2, Parallel Scans | Optional Reading: Prefix Sums and Their Applications |
W Dec 11 | Functional Networking | ||
Winter Break | |||
Tues Jan 14 (Dean's Date) |
Assign 7 Due |