The purpose of the course is to explore various aspects of functional programming using Haskell. In particular, the course provides an introduction to the lambda calculus, types in programming, and the role of these in the implementation of functional programming.