This graduate-level textbook covers modelling, programming and analysis of stochastic computer simulation experiments, including the mathematical and statistical foundations of simulation and why it works. The book is rigorous and complete, but concise and accessible, providing all necessary background material. Object-oriented programming of simulations is illustrated in Python, while the majority of the book is programming language independent. In addition to covering the foundations of simulation and simulation programming for applications, the text prepares readers to use simulation in their research. A solutions manual for end-of-chapter exercises is available for instructors.