Caml
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 - -