Homogenization is a collection of powerful techniques in partial differential equations that are used to study differential operators with rapidly oscillating coefficients, boundary value problems with rapidly varying boundary conditions, equations in perforated domains, equations with random coefficients, and other objects of theoretical and practical interest. The book focuses on various aspects of homogenization theory and related topics. It comprises classical results and methods of homogenization theory, as well as modern subjects and techniques developed in the last decade. Special attention is paid to averaging of random parabolic equations with lower order terms, to homogenization of singular structures and measures, and to problems with rapidly alternating boundary conditions. The book contains many exercises, which help the reader to better understand the material presented. All the main results are illustrated with a large number of examples, ranging from very simple to rather advanced.