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 |