This course will provide an introduction to the theory of statistical learning and practical machine learning algorithms with applications in signal processing and data analysis. In contrast to most traditional approaches to statistical inference and signal processing, in this course we will focus on how to learn effective models from data and how to apply these models to practical signal processing problems. We will approach these problems from the perspective of statistical inference. We will study both practical algorithms for statistical inference and theoretical aspects of how to reason about and work with probabilistic models. We will consider a variety of applications, including classification, prediction, regression, clustering, modeling, and data exploration/visualization.