This text presents topos theory as it has developed from the study of sheaves. Sheaves arose in geometry as coefficients for cohomology and as descriptions of the functions appropriate to various kinds of manifolds (algebraic, analytic, etc.). Sheaves also appear in logic as carriers for models of set theory as well as for the semantics of other types of logic. Grothendieck introduced a topos as a category of sheaves for algebraic geometry. Subsequently, Lawvere and Tierney obtained elementary axioms for such (more general) categories. This introduction to topos theory begins with a number of illustrative examples that explain the origin of these ideas and then describes the sheafification process and the properties of an elementary topos. The applications to axiomatic set theory and the use in forcing (the Independence of the Continuum Hypothesis and of the Axiom of Choice) are then described. Geometric morphisms- like continuous maps of spaces and the construction of classifying topoi, for example those related to local rings and simplicial sets, next appear, followed by the use of locales (pointless spaces) and the construction of topoi related to geometric languages and logic. This is the first text to address all of these varied aspects of topos theory at the graduate student level.