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 12  OCaml Introduction  OCaml Intro, hello.ml, sum.ml, Makefile, .merlin  Functional Basics, Type Checking, Optional: RWO pp 110 
Th Sep 13  Precept 1: OCaml Intro  assert.ml ticket.ml .merlin fizzbuzz.ml (solution) exercise1.ml (TigerFile)  
M Sep 17  Simple Immutable Data: Variables, Tuples, Options  Let, Tuples, Unit, Functions  Typedirected Programming; Optional: RWO Chap 2 
W Sep 19  Thinking Inductively  Induction, Lists and Nats 
Thinking Inductively; Optional: RWO Chap 3 
W Sep 19  Assign 1 Due  
Th Sep 20  Precept 2: Lists, Options, Polymorphism  kthdup.ml Solutions merge.ml (Solution) exercise2.ml (TigerFile)  
M Sep 24  PolyHO: Polymorphism and HigherOrder Programming  Inductive programming with the Naturals; PolyHO  Polymorphism and Higherorder Programming 
W Sep 26  More Data!  Datatypes; gml.ml  Optional: RWO Chapter 6 
W Sep 26  Assign 2 Due  
Th Sep 27  Precept 3: Assignment 3, Map, Fold and Datatypes  examples; sat.ml; exercise3.ml (TigerFile)  
Reasoning About Programs  
M Oct 1  Building Interpreters  Implementing OCaml in OCaml  Operational Semantics 
W Oct 3  More Interpreters  OCaml Interpreters, Part 2; simple interpreter code: eval0.ml; with recursive functions: eval3.ml  Equational Reasoning 
W Oct 3  Assign 3 Due  
Th Oct 4  Precept 4: Assignment 4 and More About Closures  Exam problem; exercise4.ml (#13) (TigerFile) 

M Oct 8  Proving Programs Correct  Proofs about Programs  
W Oct 10  More reasoning: Data types + Space  Proofs about Datatypes  Equational reasoning about data types
Optional Reading: OddOrder Theorem; FourColor Theorem 
Th Oct 11  Precept 5: Mutually Recursive Types, Equational Reasoning  theorems.ml; types.ml (reduce version); exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) 

M Oct 15  ContinuationPassing Style  Continuationpassing Style  treeincrementcps.ml 
W Oct 17  More ContinuationPassing  More CPS and More Proofs;  
W Oct 17  Assign 4 Due  
Th Oct 18  Precept 6: Tail Recursion and More Equational Reasoning  Map CPS Proof Example; exercise6.ml (Solution: code, proofs)  
M Oct 22  Modules  ML Modules  Optional: RWO Chap 4 (Modules), 9 (Functors) 
Su Oct 21  W Oct 24 
Takehome midterm exam over any 24 hour span.  
No lecture on Wednesday 10/24  
No precepts on 10/2510/26  
Fall Break  
Modularity  
M Nov 5  Effective ML  Guest Lecturer: Yaron Minsky, Jane St. 

W Nov 7  Modules and Assignment 5  More Modules  
Th Nov 8  Precept 7: Midterm recap  
M Nov 12  Reasoning about Modules  Representation Invariants and Abstraction Functions  Optional: Abstraction and Representation Invariants 
W Nov 14  Module Equivalence; Refs  Module Equivalence; Refs  Optional: RWO Chapter 8 
Th Nov 15  Precept 8: Modules  range.mli ; exercise8.txt ; range.ml implementation(s) ; proofs for LoHiPairRange  
M Nov 19  Prof Appel: COS 510 Preview; Infinite Streams and Lazy Evaluation 
Laziness  Brigitte Pientka's lazy notes 
W Nov 21  Assign 5 Due  
Thanksgiving Break  
M Nov 26  Type Checking and Inference  Type Systems  Optional: Efficient Type Inference 
W Nov 28  Type Checking, Part II  Type Systems, Part II  
Th Nov 29  Precept 9: References  range.mli; exercise9.txt (Solution) 

Parallelism and Concurrency  
M Dec 3  Threads and Futures  Threads and Futures  Using threads and futures 
W Dec 5  Parallel Collections  Parallel Collections  Parallel Sequences, Optional Reading: MapReduce; NESL 
W Dec 5  Assign 6 Due  
Th Dec 6  Precept 10: Exam Prep  2015 Final, Problems 4 and 5  
M Dec 10  F#  F#!  Optional: Computation Expression Series, F# Parallel and Concurrent Programming 
W Dec 12  Functional Networking  Functional Networking  Optional Reading: Frenetic: A Network Programming Language 
Th Dec 13  Precept 11: FSharp  helloTest.ml to "translate" ; Mergesort Scaffolding; HelloWorld++ Solution; Mergesort Solution  F# lecture notes 
Winter Break  
Tu Jan 15  Dean's Date: Assign 7 Due at 4:59pm  
M Jan 21  Final Exam. 7:30pm in Friend 101. 