Every nonzero non-unit element of a Notherian domain R admits a factorization into atoms (or irreducible elements) of R. In general, there are many such decompositions which are essentially distinct, i.e., that differ not just up to units and the ordering of the factors. The main purpose of factorization theory is to describe and classify the various phenomena of non-uniqueness of factorizations occurring in R, in terms of some invariants, e.g. arithmetical or algebraic, of R. A crucial step in the development of the theory was the observation that most of the questions on non-unique factorizations in integral domains can be formulated and studied in the context of (commutative and cancellative) monoids. In this course, we give a gentle introduction to factorization theory and its tools. We explore, in particular, the central role played by Krull monoids (including all integrally closed Noetherian domains) and monoids of zero-sum sequences.