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.

Section(s)

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 |
---|---|---|---|---|

Lecture |
Mikael Vejdemo-Johansson |
Wednesdays |
4.15-5.05 |
380-F |

Office Hours |
Mikael Vejdemo-Johansson |
Wednesdays |
11.00-12.00 |
383-BB |

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.

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

- Follow and perform category theoretical arguments and diagram chases.
- Argue categorically about Haskell code constructs.
- Draw parallells between Haskell constructions, categorical standard constructions and propositional logic.

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

- Mac Lane: Categories for the Working Mathematician
- Somewhat aged by now, but still a good exposition of the basics.

- Awodey: Category Theory
- Somewhat pricey, but a very good heir to the throne possessed by Mac Lane's book.

- Lawvere and Schanuel: Conceptual Mathematics
- Written for an advanced High School level audience, but very didactical in presentation.

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.

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.