This book provides a thorough introduction to the formal foundations and practical applications of Bayesian networks. It provides an extensive discussion of techniques for building Bayesian networks that model real-world situations including techniques for synthesizing models from design learning models from data and debugging models using sensitivity analysis.