Schedule

  • Wed 4 Sep: Meeting 1

    What is FP? Intro to REPL and evaluating expressions.

  • Mon 9 Sep: Meeting 2

    Tuples, Booleans, partial application, operator sections, pattern guards.

  • Tue 10 Sep: Assignment 1
  • Wed 11 Sep: Meeting 3

    Recursive functions, evaluating expressions.

  • Mon 16 Sep: Meeting 4

    List constructors and pattern matching.

  • Tue 17 Sep: Assignment 2
  • Wed 18 Sep: Meeting 5

    Implementing list operators, syntax of list comprehensions.

  • Mon 23 Sep: Meeting 6

    Intro to type syntax and some built-in type classes.

  • Tue 24 Sep: Assignment 3
  • Wed 25 Sep: Meeting 7

    Type classes including Show, Eq, Ord, Enum, Bounded. Defining type synonyms and enumerated types. Brief intro to Maybe type.

  • Mon 30 Sep: Meeting 8

    More on the Maybe type, including lookup and fmap. The case expression, field selectors, and recursive data types.

  • Tue 1 Oct: Assignment 4
  • Wed 2 Oct: Meeting 9

    Function composition using . and <=<, the Either type.

  • Mon 7 Oct: Meeting 10

    Defining a bounded stack type, Functor and Bifunctor type classes.

  • Tue 8 Oct: Assignment 5
  • Wed 9 Oct: Meeting 11

    The Monoid type class.

  • Mon 14 Oct: Meeting 12

    The Ordering type, laziness, infinite data structures.

  • Tue 15 Oct: Assignment 6
  • Wed 16 Oct: Meeting 13

    Data types for abstract syntax trees.

  • Mon 21 Oct: Meeting 14

    Variable environments for expression trees, applicative functors.

  • Wed 23 Oct: Meeting 15 [exam]

    Midterm exam.

  • Mon 28 Oct: Meeting 16

    Pseudo-random number generation and threading state.

  • Tue 29 Oct: Assignment 7
  • Wed 30 Oct: Meeting 17

    Generalizing PRNG operations, leading to always / andThen.

  • Mon 4 Nov: Meeting 18

    Monad operations for Maybe and List.

  • Tue 5 Nov: Assignment 8
  • Wed 6 Nov: Meeting 19

    Remaining topics TBD…

  • Mon 11 Nov: Meeting 20
  • Tue 12 Nov: Assignment 9
  • Wed 13 Nov: Meeting 21
  • Mon 18 Nov: Meeting 22
  • Wed 20 Nov: Meeting 23
  • Mon 25 Nov: Meeting 24
  • Tue 26 Nov: Assignment 10
  • Mon 2 Dec: Meeting 25
  • Wed 4 Dec: Meeting 26
  • Mon 9 Dec: Meeting 27
  • Tue 10 Dec: Assignment 11
  • Wed 11 Dec: Meeting 28
  • Mon 16 Dec: Assignment 12