stanford university

F09-MATH-198-01 : Category Theory and Functional Programming

FALL 2009

Course Description

Category theory, with an origin in algebra and topology, has found use in recent decades for computer science and logic applications. Possibly most clearly, this is seen in the design of the programming language Haskell - where the categorical paradigm suffuses the language design, and gives rise to several of the language constructs, most prominently the Monad.

In this course, we will teach category theory from first principles with an eye towards its applications to and correspondences with Haskell and the theory of functional programming. We expect students to previously or currently be taking CS242 and to have some level of mathematical maturity. We also expect students to have had contact with linear algebra and discrete mathematics in order to follow the motivating examples behind the theory expounded.

Course Meetings


Name Instructor Day Time Location
Lecture Section(s)
MATH-198-01 Mikael Vejdemo Johansson
W 4:15 PM - 5:05 PM 380-380F

Other Meetings

Name Staff Day Time Location
Mikael Vejdemo-Johansson
Office Hours
Mikael Vejdemo-Johansson

Course Syllabus


This course aims to give an introduction to Category Theory from first principles, with a close view to its role in functional programming theory, in programming language design, and in the design and structure of Haskell.

Learning objectives

After the course is completed, I expect a participating student to be able to


The course will be evaluated on weekly homework and a final exam. For a passing grade, I expect 60% of assignments completed satisfactory. In this, the 10 homework assignments will represent 60% of the total grade - 6% per homework assignment - and the final exam will represent 40%.

Homework will have partial grades, with 2% of the full course grade for each exercise up to the assignment cap. Further exercise solutions are welcome - and will be given feedback on your solutions.

Homework is to be handed in through the CourseWork dropbox tool, and in the form of a single PDF file. Deadline for each homework assignment is 23.59, Wednesday after the lecture it was assigned in.

The final exam has been scheduled for Thursday December 10, 12.15-3.15. Should you have conflicting courses during this time, please speak to the instructor so we can find an accomodation.


The course will be based on the lectures and the lecture notes, which will be published on the Haskell wiki. There are several good books that may serve as reference or inspiration - among the more technical, we can recommend

In addition to these, I will give a sequence of web-based sources as we go along: blog posts, wiki pages, papers et.c. with good expositions and perspectives on the subjects discussed.

Office hours

I will keep open office hours in my room, 383-BB, Wednesdays 11-12.

In addition to these, I will track the coursework discussion page closely.

For course site members only