- Type systems. 2003. (In
*Programming Methodology*)

Category theory is a branch of pure mathematics
that is becoming an increasingly important tool in theoretical computer science,
especially in programming language semantics, domain theory, and concurrency,
where it is already a standard language of discourse.

Assuming a minimum of mathematical preparation, *Basic Category Theory for Computer Scientists*
provides a straightforward presentation of the basic constructions and terminology of category theory,
including limits, functors, natural transformations, adjoints, and cartesian closed categories.
Four case studies illustrate applications of category theory to programming language design,
semantics, and the solution of recursive domain equations.
A brief literature survey offers suggestions for further study in more advanced texts.

The tutorial in section 1 provides a treatment of basic category theory that is deep enough to prepare readers for some of the current research papers applying category theory to computer science. It covers essential notation and constructions and a few more advanced topics, such as adjoints, that are sometimes skipped in short introductions but are relevant to an appreciation of the field.

Section 2 illustrates the concepts presented in the tutorial with four case studies – a sketch of the connections between cartesian closed categories and lambda calculi, an application to the design of programming languages, a summary of work in categorical models of programming language semantics, and a detailed description of some category-theoretic tools for the solution of recursive domain equations.

Section 3 provides a useful guide to the existing literature, including textbooks, standard reference works, and selected research papers.