skip to primary navigationskip to content

Department of Computer Science and Technology

Part II CST

 

Course pages 2025–26 (working draft)

Algebraic Techniques for Programming

Principal lecturer: Dr Neel Krishnaswami
Taken by: Part II CST
Term: Lent
Format: In-person lectures
Prerequisites: Category Theory
timetable

Aims

The goal of this course is to teach students how to understand a variety of algorithmic techniques from the point of view of abstract algebra, lattice theory and category theory. They will be introduced to structured recursion and corecursion, fixed point computations, and an algebraic approach to graph
algorithms via modules over Kleene algebras.

Lectures

This will be a lecture course, divided into three sections of four lectures.

  • Data, codata, Recursion and corecursion. Representing (co)data as initial and final algebras of polynomial functors. Understanding generalized folds and unfolds. Sorting algorithms via hylomorphisms. Implementing algorithms with linear state. [4 lectures]
  • Lattices, dataflow, and incremental computation. Introduction to lattices and fixed points. Representing dataflow problems as fixed point computations. Incremental algorithms for dataflow problems. Programming with monotonic state. [4 lectures]
  • Linear algebra and graph algorithms. Representing graphs as matrices. Introduction to Kleene algebra and modules over semirings. The algebraic path problem. [4 lectures]

Objectives

At the end of the course students should:

  • understand the role of the three great recursion schemes in programming
  • have a unified perspective on a host of algorithmic techniques
  • understand how to apply algebraic techniques to algorithm design

Recommended reading

  • The Algebra of Programming, Richard Bird and Oege de Moor
  • Graph Algorithms in the Language of Linear Algebra, edited by J. Kepner and J. Gilbert
  • Introduction to Lattices and Order, B.A. Davies and H.A. Priestly
  • Principles of Program Analysis, Nielsen and Nielsen