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.

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