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 13 | OCaml Introduction | OCaml Intro, hello.ml, sum.ml, Makefile, .merlin | Functional Basics, Type Checking, Optional: RWO pp 1-10 |
| Th Sep 14 | Precept 1: OCaml Intro | assert.ml ticket.ml .merlin fizzbuzz.ml (solution) exercise1.ml (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 | kthdup.ml Solutions merge.ml (Solution) exercise2.ml (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; pipeline.ml | Optional: RWO Chapter 6 |
| W Sep 27 | Assign 2 Due | ||
| Th Sep 28 | Precept 3: Assignment 3, Map, Fold and Datatypes | examples; sat.ml; exercise3.ml (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: eval0.ml; with recursive functions: eval3.ml | Equational Reasoning |
| W Oct 4 | Assign 3 Due | ||
| Th Oct 5 | Precept 4: Assignment 4 and More About Closures | exercise4.ml (#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 | types.ml (reduce version); theorems.ml; exercise4.ml (#4) (Sample solution, with proofs); exercise5.ml (solution) |
|
| M Oct 16 | Continuation-Passing Style | Continuation-passing Style | tree-increment-cps.ml |
| 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; exercise6.ml (Solution: code, proofs) | |
| M Oct 23 | Type Inference | Type Inference | |
| W Oct 25 | Midterm Exam | ||
| Fall Break | |||
| Modularity | |||
| 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 ; range.ml 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; exercise9.txt |
|
| 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 | hello.ml 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 | ||