The theory of dynamical systems is a broad and active research subject with connections to most parts of mathematics. Dynamical Systems: An Introduction undertakes the difficult task to provide a self-contained and compact introduction. Topics covered include topological, low-dimensional, hyperbolic and symbolic dynamics, as well as a brief introduction to ergodic theory. In particular, the authors consider topological recurrence, topological entropy, homeomorphisms and diffeomorphisms of the circle, Sharkovski's ordering, the Poincare-Bendixson theory, and the construction of stable manifolds, as well as an introduction to geodesic flows and the study of hyperbolicity (the latter is often absent in a first introduction). Moreover, the authors introduce the basics of symbolic dynamics, the construction of symbolic codings, invariant measures, Poincare's recurrence theorem and Birkhoff's ergodic theorem. The exposition is mathematically rigorous, concise and direct: all statements (except for some results from other areas) are proven. At the same time, the text illustrates the theory with many examples and 140 exercises of variable levels of difficulty. The only prerequisites are a background in linear algebra, analysis and elementary topology. This is a textbook primarily designed for a one-semester or two-semesters course at the advanced undergraduate or beginning graduate levels. It can also be used for self-study and as a starting point for more advanced topics.