How can we select the best performing data-driven model? How can we rigorously estimate its generalization error? Statistical learning theory answers these questions by deriving non-asymptotic bounds on the generalization error of a model or, in other words, by upper bounding the true error of the learned model based just on quantities computed on the available data. However, for a long time, Statistical learning theory has been considered only an abstract theoretical framework, useful for inspiring new learning approaches, but with limited applicability to practical problems. The purpose of this book is to give an intelligible overview of the problems of model selection and error estimation, by focusing on the ideas behind the different statistical learning theory approaches and simplifying most of the technical aspects with the purpose of making them more accessible and usable in practice. The book starts by presenting the seminal works of the 80’s and includes the most recent results. It discusses open problems and outlines future directions for research.