Date   Topic Reading (after lecture) Homework
Jan 16 Welcome; Haskell basics SOE chapters 1 to 3 (just skim pp. 30-32), Handout 1 (1-up, 6-up) HW1 out; due 1/23 at 2PM (Haskell basics)
  21 MLK day: no class    
23 Higher-order functions; polymorphism; datatypes SOE chapters 5 and 7, Handout 2 (1-up, 6-up), Handout 3 (1-up, 6-up) HW2 out; due Monday, 1/28 at 3PM (here are the files to use as a starting point)
  28 More higher-order functions; qualified types SOE chapters 9 and 12, Handout 4 (1-up, 6-up)
  30 case study: functional red-black trees Handout 5 (1-up, 6-up) HW3 out; due Wednesday, 2/6 at 3PM (here is a template for some of the code)
Feb 4 Case study: regions and pictures SOE chapters 4, 6, 8, 10; Handout 6 (1-up, 6-up)
6 Case study: Functional Animation SOE chapter 13 HW4 out; due Wednesday, 2/13 at 3PM (here is a template for the warm-up exercises)
Feb 11 Monads SOE chapter 18; Handout 7 (1-up, 6-up)
13 The parsing monad; Handout 8 (1-up, 6-up) SOE chapter 13 HW5 out; due Wednesday, 2/20 at 3PM
Feb 18 Review
Feb 20 Monadic evaluators; monad transformers Bird ("Introduction to Functional Programming Using Haskell"), chapter 10; Handout 9 HW6 out; due Wednesday, 2/26 at 3PM (lec9.hs)
Feb 25 Review; functional hardware description
Feb 27 QuickCheck Handout 10; QuickCheck paper HW7 out; due Wednesday, 3/5 at 3PM (circuits.hs)
Mar 3 Modularity Handout 11; HUnit user guide
Mar 5 Guest lecture by Yaron Minsky in Berger Auditorium HW8 out; due Wednesday, 3/19 at 3PM (first round) and Wednesday, 3/26 at 3PM (second round)
Mar 17 Continuations Handout 12
Mar 19 Discussion of mini-projects
Mar 24 Tackling the awkward squad Handout 13 and Tackling the Awkward Squad by Simon PJ
Mar 26 Intro to concurrency Handout 14 HW9 out
Mar 31 Intro to concurrency (cont'd)
Apr 2 Semantics of MVars HW10 out (template and test harness)
Apr 7 Semantics of exceptions Handout 15
Apr 9 Software Transactional Memory Handout 16 and Handout 17 and Composable Memory Transactions (Harris et al.) HW11 out
Apr 14 Composing Financial Contracts
(guest lecture by Anton van Straaten)
How to write a financial contract (by Simon Peyton Jones and Jean-Marc Eber)
Apr 16 Generalized Algebraic Data Types
(guest lecture by Chris Casinghino)