Open Haskell A course in Haskell & FP


A community maintained course for learning Haskell

Welcome to the community maintained Open Haskell course! This was originally derived from the popular CIS194 course by Brent Yorgey. This variant of the course is maintained by Chris Allen who is writing a book for learning Haskell called Haskell Programming with his coauthor Julie. This resource is maintained for those that need or want a free & open resource, want a more rapid introduction, or just don't like buying books.

Haskell is a high-level, pure functional programming language with a strong static type system and elegant mathematical underpinnings, and is being increasingly used in industry by organizations such as Facebook, AT&T, and NASA. In the first 3/4 of the course, we will explore the joys of pure, lazy, typed functional programming in Haskell (warning: euphoric, mind-bending epiphanies may result!). The last 1/4 of the course will consist of case studies in fun and interesting applications of Haskell. Potential case study topics include automated randomized testing, software transactional memory, graphics generation, parser combinators, or others as time and interest allow. Evaluation will be based on class participation, weekly programming assignments, and an open-ended final project.

The course goes by notional "weeks", don't worry if it takes you longer than that. They're in the order they should be completed in.


  1. Introduction to Haskell
  2. Algebraic data types
  3. Recursion patterns, polymorphism, and the Prelude
  4. Higher order functions
  5. More polymorphism and type classes
  6. Lazy evaluation
  7. Folds and monoids
  8. IO
  9. Functors
  10. Applicative functors
  11. Applicative functors, Part 2
  12. Monads