This book integrates coverage of random/probabilistic algorithms, assertion-based program reasoning, and refinement programming models, providing a highly focused survey on probabilistic program semantics. It illustrates by example the typical steps necessary in computer science to build a mathematical model of any programming paradigm, addressing an essential foundation topic for modern sequential programming methodology.