| Wed, Aug 31 |
Lec1 |
Slides: Introduction |
| Wed, Sep 7 |
Lec2 |
Slides: Announcements |
| Wed, Sep 7 |
Basics |
Haskell Basics |
| Mon, Sep 12 |
HigherOrder |
Higher-Order Programming Patterns |
| Wed, Sep 14 |
Foldr |
In class exercise: foldr |
| Wed, Sep 14 |
SecretCode |
In class exercise: SecretCode |
| Mon, Sep 19 |
Datatypes |
User-defined datatypes |
| Wed, Sep 21 |
DList |
In class exercise: Difference lists |
| Wed, Sep 21 |
TreeFolds |
Extra practice: Tree folds |
| Mon, Sep 26 |
Classes |
Type Classes |
| Mon, Sep 26 |
IOExercise |
In class exercise: IOExercise |
| Wed, Sep 28 |
Lec8 |
Slides: Monoid and Foldable classes |
| Wed, Sep 28 |
MonoidFoldable |
In class exercise: Semigroup, Monoid and Foldable |
| Mon, Oct 3 |
QuickCheck |
Type-directed Property Testing |
| Wed, Oct 5 |
Lec10 |
Video: How to Specify It |
| Mon, Oct 10 |
Queue |
In class exercise: Purely Functional Queues |
| Wed, Oct 12 |
RedBlack |
Red Black Trees |
| Mon, Oct 17 |
GADTs |
GADTs |
| Wed, Oct 19 |
RedBlackGADT0 |
Red Black Trees (Redux) |
| Wed, Oct 19 |
RedBlackGADT1 |
Red Black Trees (with GADTs 1) |
| Wed, Oct 19 |
RedBlackGADT2 |
Red Black Trees (with GADTs 2) |
| Wed, Oct 19 |
RedBlackGADT3 |
Red Black Trees (with GADTs 3) |
| Mon, Oct 24 |
Monads |
The Maybe and List Monads |
| Wed, Oct 26 |
EitherMonad |
In class exercise: The Either Monad |
| Wed, Oct 26 |
GenericMonads |
In class exercise: General Monadic Functions |
| Wed, Oct 26 |
MaybePractice |
In class exercise: Practice with Maybe Monad |
| Mon, Oct 31 |
RandomGen |
In class exercise: Random Generation |
| Mon, Oct 31 |
State |
A Generic State Transformer |
| Mon, Oct 31 |
StateMonad |
The State Monad! |
| Wed, Nov 2 |
Graph |
Optional exercise: DFS using the state monad |
| Mon, Nov 7 |
Parsers |
Parsing with Applicative Functors |
| Wed, Nov 9 |
Xml |
In class exercise: XML parsing |
| Mon, Nov 14 |
Freer |
Optional module: The Freer Monad |
| Mon, Nov 14 |
Transformers |
Monad Transformers |
| Wed, Nov 16 |
FreerExercise |
Optional in class exercise: Freer Monad |
| Wed, Nov 16 |
TransExercise |
In class exercise: Monad Transformers |
| Mon, Nov 21 |
LiquidHaskell |
LiquidHaskell |
| Mon, Nov 28 |
Client |
Concurrency client |
| Mon, Nov 28 |
Concurrency |
A Poor Man's Concurrency Monad |
| Wed, Nov 30 |
TransC |
In class exercise: Concurrency Monad Transformer |
| Mon, Dec 5 |
Demo1 |
Project Presentations |
| Wed, Dec 7 |
Demo2 |
Project Presentations |
| Mon, Dec 12 |
ProjectWorkday |
Project Workday |