The book covers elementary aspects of category theory and topos theory. It has few mathematical prerequisites, and uses categorical methods throughout, rather than beginning with set theoretical foundations. It works with key concepts such as Cartesian closedness, adjunctions, regular categories, and the internal logic of a topos. Full statements and elementary proofs are given for the central theorems, including the fundamental theorem of toposes, the sheafification theorem, and the construction of Grothendieck toposes over any topos as base. Three chapters discuss applications of toposes in detail, namely to sets, to basic differential geometry, and to recursive analysis. The intended readership consists of graduate-level students in mathematics, computer science, logic, and category theory.