Category Theory and Functional Programming
- 7.5hp, Hybrid course (shared between MSc and PhD level), Autumn 2013
- Examiner: Patrik Jansson
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.
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, students are expected to be able to understand programming language research papers using category theory as a medium.
- 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.
- (4h) do a literature search to identify suitable research papers connecting Category Theory to your own research / application interests. Deliverable (by 2013-11-25): 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 remarks to the discussion (maximum 2 sessions may be missed!)
- Hand in detailed solutions to two exercises per chapter (from chapter 1).
- (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 / ...)
- (32h) Read, Understand and present (20 min) the paper selected.
- (8h) Attend presentations by other students.
Mortal deadline: 2014-01-19
See separate literature list.