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 |