**Teoria kategorii** to dość abstrakcyjny dział matematyki, który bada
struktury wspólne dla wielu, czasem nawet bardzo odległych dziedzin
matematyki. Teoria kategorii to także pewien język opisu obiektów
matematycznych, będący alternatywą dla języka teorii zbiorów.
Teoria kategorii okazuje się być bardzo użyteczna w informatyce, na przykład w
teorii języków programowania. Pojęcia pochodzące z teorii kategorii
przeniknęły też do codziennego warsztatu programisty pod postacią funktorów,
monad itp. Przedmiot ten pozwoli zrozumieć skąd wzięły się te pojęcia, jakie
są ich własności i jak je wykorzystać w praktyce.
Jedynym wymogiem wstępnym jest zdolność operowania podstawowymi pojęciami
matematycznymi, ale pobieżna znajomość algebry abstrakcyjnej i programowania
funkcyjnego zdecydowanie pomogą w zrozumieniu motywacji dla wielu
abstrakcyjnych i często początkowo nieintuicyjnych definicji.
**Omawiane zagadnienia:**
* Podstawowe pojęcia teorii kategorii (kategorie, funktory, transformacje naturalne), konstrukcje na kategoriach i w kategoriach
* Dualność: dwa pojęcia/twierdzenia w cenie jednego
* Konstrukcje uniwersalne: (ko)produkty, (ko)granice, sprzężenia
* Domknięte kategorie kartezjańskie i rachunek lambda
* (Ko)algebraiczne typy danych
* Monady i ich algebry
* Kwantyfikatory jako sprzężenia
* Typy zależne jako sprzężenia
**Literatura:**
Podstawowy podręcznik:
* Steve Awodey, Category Theory (2nd ed.), Oxford Logic Guides, 2010
Inne podręczniki:
* Saunders Mac Lane, Categories for the Working Mathematician (2nd ed.), Springer, 1998
* Michael Barr, Charles Wells, Category Theory for Computing Science, Prentice Hall,1990
* Harold Simmons, An Introduction to Category Theory, Cambridge University Press, 2011
* David Spivak, Category Theory for the Sciences, MIT Press, 2014
* Tom Leinster, Basic Category Theory, Cambridge University Press, 2014