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.
| Dates | Topic | Notes/Code | Reading |
|---|---|---|---|
| The Basics | |||
| W Sep 11 | Course Introduction | Course Intro | - |
| W Sep 11 | O'Caml Introduction | Ocaml Intro, hello.ml, sum.ml | Functional Basics, Type Checking |
| T Sep 12 | Precept 1: OCaml Intro | printEg.ml fizzbuzz.ml precept01.ml | |
| M Sep 16 | Simple Immutable Data: Variables, Tuples, Options | Let, Tuples; Options; Java Rant | Type-directed Programming |
| W Sep 18 | Thinking Inductively | Induction, Lists and Nats | Thinking Inductively |
| W Sep 18 | Assign 1 Due | ||
| T Sep 19 | Precept 2: Lists | merge.ml precept02.ml | |
| M Sep 23 | Poly-HO: Polymorphism and Higher-Order Programming | Poly-HO; Lists and Pipe | Polymorphism and Higher-order Programming |
| W Sep 25 | Datatypes and Functional Design | Datatypes, Error Processing, gml.ml | Optional: Blog on F#, Error Processing and Functional Design |
| W Sep 25 | Assign 2 Due | ||
| T Sep 26 | Precept 3: Assignment 3, Map, Fold and Datatypes | ||
| Reasoning About Programs | |||
| M Sep 30 | The Functional Evaluation Model | Type def note, Evaluation, eval.ml | Operational Semantics |
| W Oct 2 | Proving Programs Correct (Intro) | Equational Reasoning (up to the definitions of total and partial functions) | |
| T Oct 3 | Precept 4: Closures, Assignment 4, Equational Reasoning | M Oct 7 | Proving Programs Correct (Lists) | - | Equational Reasoning |
| M Oct 7 | Assign 3 Due | ||
| W Oct 9 | Proving Programs Correct (Naturals and Data Types)
Representations of Data Types |
Equational Reasoning about Natural Numbers and Trees Optional Reading: Odd-Order Theorem, Four-Color Theorem | |
| T Oct 10 | Precept 5: More Equational Reasoning | ||
| Modularity | |||
| M Oct 14 | OCaml Modules | - | |
| W Oct 16 | More Modules and Functors | - | |
| W Oct 16 | Assign 4 Due | ||
| T Oct 17 | Precept 6: Moogle and Modules | ||
| M Oct 21 | Modular Reasoning | Abstraction and Representation Invariants | |
| W Oct 23 | Midterm I | ||
| Fall Break | |||
| Effects, Parallelism and Concurrency | |||
| M Nov 6 | What comes next? Tail-Calls and Continuations | - | |
| W Nov 8 | Mutable Data Structures, Imperative Interfaces and Functional Arrays | - | - |
| M Nov 11 | Infinite Data Structures and Lazy Evaluation | - | - |
| T Nov 12 | Assign 5 Due | ||
| W Nov 13 | Parallelism Intro | - | |
| M Nov 18 | Threads and Futures | Using threads and futures | |
| W Nov 20 | Threads, Locks and Mutable Data | ||
| T Nov 21 | Possible Precept Quiz | ||
| M Nov 25 | ? | - | |
| M Dec 2 | Asynchronous Workflows | - | |
| W Dec 4 | Parallel Complexity Models | - | Parallel Complexity Models |
| M Dec 9 | Scheduling; Parallel Sequences | - | Scheduling, Parallel Sequences Optional Reading: NESL |
| W Dec 11 | Functional Data Center Programming Models | Map-Reduce OSDI 2004, Apache Spark | |
| Dec 14 | Software Transactional Memory | STM slides | Optional Reading: Beautiful Concurrency |
| M Dec 16 | Functional Networking | - | - |