Understanding the behavior of basic sampling techniques and intrinsic geometric attributes of data is an invaluable skill that is in high demand for both graduate students and researchers in mathematics, machine learning, and theoretical computer science. The last ten years have seen significant progress in this area, with many open problems having been resolved during this time. These include optimal lower bounds for epsilon-nets for many geometric set systems, the use of shallow-cell complexity to unify proofs, simpler and more efficient algorithms, and the use of epsilon-approximations for construction of coresets, to name a few. This book presents a thorough treatment of these probabilistic, combinatorial, and geometric methods, as well as their combinatorial and algorithmic applications. It also revisits classical results, but with new and more elegant proofs. While mathematical maturity will certainly help in appreciating the ideas presented here, only a basic familiarity with discrete mathematics, probability, and combinatorics is required to understand the material.