Category Theory now permeates most of Mathematics, large parts of theoretical Computer Science and parts of theoretical Physics. Its unifying power brings together different branches, and leads to a deeper understanding of their roots.This book is addressed to students and researchers of these fields and can be used as a text for a first course in Category Theory. It covers its basic tools, like universal properties, limits, adjoint functors and monads. These are presented in a concrete way, starting from examples and exercises taken from elementary Algebra, Lattice Theory and Topology, then developing the theory together with new exercises and applications.Applications of Category Theory form a vast and differentiated domain. This book wants to present the basic applications and a choice of more advanced ones, based on the interests of the author. References are given for applications in many other fields.