Students will learn Markov chain Monte Carlo theory while working with through several real world examples. The course will cover irreducibility, ergodicity, (detailed) balance, mixing rates, central limit theorems, and convergence. We will explore various sampling techniques including Metropolis-Hastings, tempering, Gibbs sampling, heat-bath sampling, skew detailed balance, and more. The course will involve developing code to implement the ideas covered in the class. Prerequisites are MATH 216/221, 230/340, COMPSCI 101, or equivalent.