Prime numbers have fascinated mathematicians since the time of Euclid. This book presents some of our best tools to capture the properties of these fundamental objects, beginning with the most basic notions of asymptotic estimates and arriving at the forefront of mathematical research. Detailed proofs of the recent spectacular advances on small and large gaps between primes are made accessible for the first time in textbook form. Some other highlights include an introduction to probabilistic methods, a detailed study of sieves, and elements of the theory of pretentious multiplicative functions leading to a proof of Linnik's theorem. Throughout, the emphasis has been placed on explaining the main ideas rather than the most general results available. As a result, several methods are presented in terms of concrete examples that simplify technical details, and theorems are stated in a form that facilitates the understanding of their proof at the cost of sacrificing some generality. Each chapter concludes with numerous exercises of various levels of difficulty aimed to exemplify the material, as well as to expose the readers to more advanced topics and point them to further reading sources.