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 13 OCaml Introduction OCaml Intro,,, Makefile, .merlin Functional Basics, Type Checking, Optional: RWO pp 1-10
Th Sep 14 Precept 1: OCaml Intro .merlin (solution) (Dropbox)
M Sep 18 Simple Immutable Data: Variables, Tuples, Options Type Checking Basics; Let, Tuples, Unit; Type-directed Programming;
Optional: RWO Chap 2
W Sep 20 Thinking Inductively Induction, Lists and Nats Thinking Inductively;
Optional: RWO Chap 3
W Sep 20 Assign 1 Due
Th Sep 21 Precept 2: Lists, Options, Polymorphism Solutions (Solution) (Dropbox)
M Sep 25 Poly-HO: Polymorphism and Higher-Order Programming Inductive programming with the Naturals; Poly-HO Polymorphism and Higher-order Programming
W Sep 27 More Data! Combinators and Datatypes; Optional: RWO Chapter 6
W Sep 27 Assign 2 Due
Th Sep 28 Precept 3: Assignment 3, Map, Fold and Datatypes examples;; (Dropbox)
Reasoning About Programs
M Oct 2 Datatypes and Interpreters Datatype Design; Implementing OCaml in OCaml Optional: Blog on F#, Error Processing and Functional Design;
Optional: RWO Chapter 7;
Operational Semantics
W Oct 4 More Interpreters OCaml Interpreters, Part 2; simple interpreter code:; with recursive functions: Equational Reasoning
W Oct 4 Assign 3 Due
Th Oct 5 Precept 4: Assignment 4 and More About Closures (#1-3) (Dropbox)
M Oct 9 Proving Programs Correct Proofs about Programs
W Oct 11 More reasoning: Data types + Space Proofs about Datatypes; Space Model Equational reasoning about data types
Optional Reading: Odd-Order Theorem; Four-Color Theorem
Th Oct 12 Precept 5: Mutually Recursive Types, Equational Reasoning (reduce version);; (#4) (Sample solution, with proofs); (solution)
M Oct 16 Continuation-Passing Style Continuation-passing Style
W Oct 18 More Continuation-Passing More CPS and More Proofs; Type Checking
W Oct 18 Assign 4 Due
Th Oct 19 Precept 6: Tail Recursion and More Equational Reasoning Map CPS Proof Example; (Solution: code, proofs)
M Oct 23 Type Inference Type Inference
W Oct 25 Midterm Exam
Fall Break
M Nov 6 Effective ML Guest Lecture:
Yaron Minsky, Jane St
W Nov 8 Modules ML Modules Optional: RWO Chap 4 (Modules), 9 (Functors)
Th Nov 9 Precept 7: Midterm recap Solutions
M Nov 13 Reasoning about Modules Representation Invariants and Abstraction Functions Optional: Abstraction and Representation Invariants
W Nov 15 More Modules and References More Modules; Reference Types; Optional: RWO Chapter 8
Th Nov 16 Precept 8: Modules range.mli ; exercise8.txt ; implementation(s) ; proofs for LoHiPairRange
Parallelism and Concurrency
M Nov 20 Infinite Streams and Lazy Evaluation Laziness
W Nov 22 Assign 5 Due
Thanksgiving Break
M Nov 27 Introduction to Formal Methods Guest Lecture:
Prof Andrew Appel
M Nov 27 Parallelism Intro Parallelism and Threads Using threads and futures
W Nov 29 Parallel Complexity More Threads and Futures Parallel Complexity Models, Parallel Scheduling
Th Nov 30 Precept 9: References and Futures range.mli;
M Dec 4 Parallel Collections Parallel Collections Parallel Sequences, Optional Reading: NESL
W Dec 6 F# F#! Optional: Computation Expression Series, F# Parallel and Concurrent Programming
Th Dec 7 Assign 6 Due
Th Dec 7 Precept 10: FSharp to "translate" ; IDE Links ; Mergesort Scaffolding F# lecture notes
M Dec 11 Liquid Types Guest Lecture:
Prof Zak Kincaid
Optional Reading: Learn you a Haskell for Great Good
W Dec 13 Functional Networking Functional Networking Optional Reading: Frenetic: A Network Programming Language
Th Dec 14 Precept 11: Exam Prep 2015 Final, Problems 4 and 5
Winter Break
Tu Jan 16 Dean's Date: Assign 7 Due at 4:59pm
F Jan 26 Final Exam. 1:30pm in McCosh 46