This book provides a systematic development of the Rubio de Francia theory of extrapolation, its many generalizations and its applications to one and two-weight norm inequalities. The book is based upon a new and elementary proof of the classical extrapolation theorem that fully develops the power of the Rubio de Francia iteration algorithm. This technique allows us to give a unified presentation of the theory and to give important generalizations to Banach function spaces and to two-weight inequalities. We provide many applications to the classical operators of harmonic analysis to illustrate our approach, giving new and simpler proofs of known results and proving new theorems. The book is intended for advanced graduate students and researchers in the area of weighted norm inequalities, as well as for mathematicians who want to apply extrapolation to other areas such as partial differential equations.