All information in the future is subject to change, though this calendar represents my aims.

 # Date Topic Reading Examples Assignments Labs Extras 1 1/18 Introductions Functional programming Types Chapters 1-3, 5 at learn.hfm.io Intro.hs from class Lab 1: Basic Haskell Types in Math 2 1/23 Higher-order functions Parametric polymorphism Lists `map` The Haskell Report, Ch. 1, Sec. 2.7 Sections Assignment 1 out Course survey Higher-order functions 3 1/25 Types Unit testing no new reading Testing.hs Lab 2: Lists 4 1/30 Lists Modules Lists.hs Assignment 1 due List comprehension exercises 5 2/1 Algebraic data types Maybe Trees Class.hs from class Assignment 2 out Lab 3: Trees 6 2/6 More on Trees Maybe.hs from class 7 2/8 Parametricity Proofs over functional programs Chapter 6 from Real World Haskell, up to (but not including) the JSON part Peano.hs Assignment 2 due Assignment 3, Halgebra.hs, out Lab 4: Peano Parametricity exercises 2/13 8 2/15 More poofs I/O Class.hs I/O example Assignment 3 due 9 2/20 Type classes (`Num`, `Eq`, `Monoid`, etc.) Class.hs classes example Assignment 4 out markets.json 10 2/22 Functors Monads I use QuickCheck to evaluate your homework. You should, too. Class.hs examples from class FoldMap.hs Lab 5: Proofs 11 2/27 Review Assignment 4 due 12 3/1 Exam 1 3/6 SPRING BREAK 3/8 SPRING BREAK 13 3/13 GADTs `TypeRep` `Vec` Red-black trees, at least the intro and “Properties”. Read enough so that you understand this data structure. Class.hs (this includes class 14) GADT lecture notes html lhs 14 3/15 More `Vec` Type families Singletons Assignment 5 out (part of portfolio) Lab 6: `Vec` Type families lecture notes html lhs 15 3/20 Proofs in Haskell Class.hs Proofs lecture notes html lhs 3/22 Community day of learning (no class) Assignment 6 out (part of portfolio) 16 3/27 `VecList` Class.hs `VecList` lecture notes html lhs 17 3/29 `Fin` Existentials Implicits Class.hs Assignment 7 out (part of portfolio) `Fin` lecture notes html lhs 18 4/3 Existential properties `Maybe` monad Existentials lecture notes html lhs 19 4/5 `OrdList` Assignment 8 out (part of portfolio) 20 4/10 Guest Lecture: Kenny Foner on using an SMT solver for type checking 21 4/12 `OrdList` Practical Haskell Function portfolio due Lab 7: Practical Haskell 22 4/17 Monads 23 4/19 Review Final project proposal due 24 4/24 Exam 2 25 4/26 Functional programming in Java Java lecture notes html lhs java

Monday, May 1, 2:00-5:00, Park 229: Project presentations.