Caml
Power
Power
Lecture Notes
Warning: The schedule below is only approximate. It may and probably will change. Amended lectures that reflect the content of the lecture may be posted after lecture.
| Dates | Topic | Notes/Code | Reading |
|---|---|---|---|
| The Basics | |||
| Sep 17 | Course Introduction | Course Intro | - |
| Sep 17 | O'Caml Introduction | Ocaml Intro, Makefile, hello.ml, sum.ml | Functional Basics, Type Checking |
| Sep 19 | Simple Data | Let and Tuples, Unit and Options | Type-directed Programming |
| Sep 20/21 | Precept 1: OCaml Intro, Records | precept01.ml | |
| Sep 24 | Thinking Recursively | Structural Recursion, lists.ml | Thinking Recursively |
| Sep 26 | Poly-HO: Polymorphism and Higher-Order Programming | Poly-HO!, mapreduce.ml | Polymorphism and Higher-order Programming |
| Sep 27/28 | Precept 2: Lists, map, reduce | folds.ml, folds-solutions.ml, precept02.ml | |
| Oct 1 | Pipelines, Datatypes | Pipelines, Datatypes, pipeline.ml | |
| Reasoning About Programs | |||
| Oct 3 | The Functional Evaluation Model | Core OCaml Operational Semantics, eval0.ml, eval1.ml | Operational Semantics |
| Oct 4/5 | Precept 3: Assignment 3, Logic, Satisfiability | precept03.ml | |
| Oct 8 | Recursive Evaluators, Mutual Recursion, Proving Programs Correct (Intro) | eval2.ml, mutual.ml | Equational Reasoning (up to the definitions of total and partial functions) |
| Oct 10 | Proving Programs Correct (Lists) | - | Equational Reasoning |
| Oct 11/12 | Precept 4: Assignment 4, Equational Reasoning | precept04.pdf, precept04-solutions.pdf | |
| Oct 15 | Proving Programs Correct (Naturals and Data Types)
Representations of Data Types |
tree-properties.ml | Equational Reasoning about Natural Numbers and Trees Optional Reading: Odd-Order Theorem, Four-Color Theorem |
| Oct 17 | Functional Space Model: Closures, Tail-Calls and Continuations | Space Model, closure.ml tail.ml | - |
| Oct 18/19 | Precept 5: More Equational Reasoning, CPS and Closure Conversion | precept05.pdf, solutions05-code.ml, solutions05-proofs.txt | |
| Oct 22 | More Closures and Continuations | Continuations Continued, closure.ml | - |
| Modularity | |||
| Oct 22 | OCaml Modules | Signatures and Structures | - |
| Oct 24 | Midterm I | ||
| Nov 5 | More Modules and Functors | More Modules and Functors, an abstract, infinite data structure: streams.tgz | OCaml Manual: Signatures, Structures, Functors |
| Nov 7 | Modular Reasoning | class notes | Abstraction and Representation Invariants |
| Effects, Parallelism and Concurrency | |||
| Nov 12 | Mutable Data Structures and Imperative Interfaces | Mutable Data | - |
| Nov 12 | Parallelism Intro | Parallelism, Concurrency and Technology Trends | - |
| Nov 14 | Threads and Futures | slides | notes |
| Nov 19 | Quiz I | ||
| Nov 19 | Threads, Locks and Mutable Data | slides | |
| Nov 21 | Asynchronous Workflows | Guest Lecture: Ron Minsky (Jane St) slides |
- |
| Nov 26 | Parallel Complexity Models | - | Parallel Complexity Models |
| Nov 28 | Scheduling; Parallel Sequences | - | Scheduling, Parallel Sequences Optional Reading: NESL |
| Dec 3 | Map-Reduce | slides | Map-Reduce OSDI 2004 |
| Dec 5 | Parallel Scans and Filters | - | - |
| Dec 10 | Quiz II | - | - |
| Dec 12 | Monads and Software Transactional Memory | STM slides | Optional Reading: Beautiful Concurrency |