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.

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 1-10
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 Type-directed 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 Poly-HO: Polymorphism and Higher-Order Programming Inductive programming with the Naturals; Poly-HO Polymorphism and Higher-order 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 (#1-3) (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: Odd-Order Theorem; Four-Color 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 Continuation-Passing Style Continuation-passing Style tree-increment-cps.ml
W Oct 17 More Continuation-Passing 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/25-10/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.