| Lecture date | Topics | Notes |
|---|---|---|
| August 20 | Syllabus, Lists and Tuples | Program file, command line log. Recommended reading: A History of Haskell: Being Lazy With Class. A youtube video on history of Haskell is available here. |
| August 22 | Currying, Pattern matching and Recursion, Higher-order functions | Program file, command line log. |
| August 27 | Higher-order functions, folds, infinite lists and laziness | Program file, command line log. Homework 1 is available here. |
| August 29 | Primes, Fibonacci and Algebraic data types | Program file, command line log. |
| September 3 | Binary tree and traversals | Program file. Homework 2 is available here. |
| September 5 | Type classes in Haskell | Program file, command line log. Recommended reading: "How to make ad-hoc polymorphism less ad hoc" by Wadler and Blott. |
| September 10 | Monoids, categories and functors | Program file, lecture note. |
| September 12 | Examples of functors, natural transformations and functor category | Program file, command line log, lecture note. Homework 3 is available here. |
| September 17 | Monad, monad type classes | Program file, lecture note. |
| September 19 | Maybe monad, List monad, do-notation | Program file, command line log. |
| September 24 | State monad | Program file, command line log. Homework 4 is available here. |
| September 26 | State monad and IO monad | Program file, command line log. |
| October 1 | Parser monad and parser combinators | Program file, command line log. |
| October 3 | More parser combinators and a simple CSV parser | Program file, command line log. Homework 5 is available here. |
| October 8 | Monad transformers, state transformer | Program file. Recommended reading: "Monad transformers and modular interpreters" by Liang, Hudak and Jones. |
| October 10 | Monad transformers, MonadState and MonadPlus | Program file. |
| October 15 | Midterm | |
| October 17 | Fall break (No class) | |
| October 22 | Foldl revisited, foldM, mapM and CSV parser command line | Program file. |
| October 24 | CSV parser command line continued, QuickCheck introduction | CSV parser file, Program file. |
| October 29 | QuickCheck: generator combinators | Program file, command line log. |
| October 31 | QuickCheck: generating random binary trees | Program file. |
| November 5 | General election day (no class) | Homework 6 is available here. |
| November 7 | QuickCheck: binary search trees | Program file. Homework 7 is available here. |
| November 12 | QuickCheck: binary search trees continued | Program file. |
| November 14 | Properties about insert and delete, start of concurrency monad | Program file. Recommended reading: "A poor man's concurrency monad" by Claessen. |
| November 19 | Continuation Passing Style, a concurrency monad | Program file, command line log. |
| November 21 | Concurrency monad: a client-server example | Program file. |