This book provides a thorough introduction to the theory of classical integrable systems, discussing the various approaches to the subject and explaining their interrelations. The book begins by introducing the central ideas of the theory of integrable systems, based on Lax representations, loop groups and Riemann surfaces. These ideas are then illustrated with detailed studies of model systems. The connection between isomonodromic deformation and integrability is discussed, and integrable field theories are covered in detail. The KP, KdV and Toda hierarchies are explained using the notion of Grassmannian, vertex operators and pseudo-differential operators. A chapter is devoted to the inverse scattering method and three complementary chapters cover the necessary mathematical tools from symplectic geometry, Riemann surfaces and Lie algebras. The book contains many worked examples and is suitable for use as a textbook on graduate courses. It also provides a comprehensive reference for researchers already working in the field.