Category Theory and Functional Programming
- 7.5hp, PhD level course, Spring 2011
- Examiner: Patrik Jansson
Course Description
Category theory, with an origin in algebra and topology, has found use in recent decades for computer science and logic applications. Category Theory is an increasingly popular setting for describing the semantics of functional programming languages. There are other connections with functional programming: the categorical paradigm has influenced the language design, and given rise to several of the language elements (functions, functors, monads, arrows, ...).
In this course, we will learn category theory starting 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 have taken courses on Programming languages, Functional programming and Logic and to have some level of mathematical maturity. (The courses "Types for Programs and Proofs" or "Advanced Functional Programming" are also recommended.) 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.
Overview
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, students are expected to be able to understand programming language research papers using category theory as a medium.
Secondary objectives:
- Follow and perform category theoretical arguments and diagram chases.
- Argue categorically about programming constructs.
- Draw parallels between programming constructions, categorical standard constructions and propositional logic.
- Read, understand, and discuss material relevant to the course.
Examination
- (4h) do a literature search to identify suitable research papers connecting Category Theory to your own research / application interests. Deliverable (by Feb 10th): a list of paper references, candidates for being presented later. (Different students must not present the same material).
- (12h/chapter) work through the book. Deliverable:
- active participation in the discussions. Bring three "WTF/Aha" remarks to the discussion (maximum 2 sessions may be missed!)
- have some idea on how to solve the picked exercises.
- (4h) Organization and chairing of the weekly seminars. Deliverable (by "your" week):
- Whatever is necessary to organize the seminar. (Room / Projector / ...)
- Whatever is necessary to structure the discussion. (Outline of the chapter / good idea of how things connect to each other / ...)
- Pick a number of interesting exercises (to work through together).
- (32h) Read, Understand and present the paper selected.
- (8h) Attend presentations by other students.
Contents
See separate literature list.