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