'In our data-rich world, probabilistic programming is what allows programmers to perform statistical inference in a principled way for use in automated decision making. This rapidly growing field, which has emerged at the intersection of machine learning, statistics and programming languages, has the potential to become the driving force behind AI. But probabilistic programs can be counterintuitive and difficult to understand. This edited volume gives a comprehensive overview of the foundations of probabilistic programming, clearly elucidating the basic principles of how to design and reason about probabilistic programs, while at the same time highlighting pertinent applications and existing languages. With its breadth of topic coverage, the book will serve as an important and timely reference for researchers and practitioners.' Marta Kwiatkowska, University of Oxford