The theory of modular forms and especially the so-called 'Ramanujan Conjectures' have been applied to resolve problems in combinatorics, computer science, analysis and number theory. This tract, based on the Wittemore Lectures given at Yale University, is concerned with describing some of these applications. In order to keep the presentation reasonably self-contained, Professor Sarnak begins by developing the necessary background material in modular forms. He then considers the solution of three problems: the Ruziewicz problem concerning finitely additive rotationally invariant measures on the sphere; the explicit construction of highly connected but sparse graphs: 'expander graphs' and 'Ramanujan graphs'; and the Linnik problem concerning the distribution of integers that represent a given large integer as a sum of three squares. These applications are carried out in detail. The book therefore should be accessible to a wide audience of graduate students and researchers in mathematics and computer science.