  In these lecture notes, we give a brief introduction to some elements of
category theory. The choice of topics is guided by applications to functional
programming. Firstly, we study initial algebras, which provide a mathematical
characterization of datatypes and recursive functions on them. Secondly, we
study monads, which give a mathematical framework for effects in functional
languages. The notes include many problems and solutions.
