Bayesian Data Analysis and Probabilistic Programming