This book offers an introduction to the theory of orbifolds from a modern perspective, combining techniques from geometry, algebraic topology and algebraic geometry. One of the main motivations, and a major source of examples, is string theory. The subject is first developed following the classical approach analogous to manifold theory. Then the description branches and it includes a useful description of orbifolds by means of groupoids, as well as many examples in the context of algebraic geometry. Classical invariants (e.g. the de Rham cohomology and bundle theory) are developed for orbifolds and a careful study of orbifold morphisms as well as orbifold K-theory and its twistings is provided. The heart of the book is in the penultimate chapter, which contains a detailed description of the Chen-Ruan cohomology, which introduces a new cup product for orbifolds and has had significant impact over the past few years. The final chapter includes explicit computations for certain interesting examples.