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 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. |