The course is an introduction to category theory emphasizing applications in computer science, especially functional programming, from a type theoretic perspective. We cover the basic concepts of category theory: categories, duality, functors and natural transformations, adjunctions, the Yoneda lemma, products and coproducts, cartesian closed categories, initial algebras and terminal coalgebras, limits and colimits, monads and comonads.