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

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

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)

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

3/22

Community day of learning

(no class)

Assignment 6 out (part of portfolio)

16

3/27

  • VecList

Class.hs

17

3/29

  • Fin
  • Existentials
  • Implicits

Class.hs

Assignment 7 out (part of portfolio)

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

Final project out

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

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