In this course, students learn to master core concepts related to inference and learning from data. Emphasis is on mathematical foundations and the theoretical underpinnings and statistical limits of learning theory. Students learn how to design learning algorithms and how to quantify their limits of performance. In particular, the course covers topics related to optimal inference, regularization, proximal techniques, online and batch methods, stochastic learning, generalization, statistical learning theory, Bayes and naive classifiers, nearest-neighbor rules, clustering, decision trees, logistic regression, discriminant analysis, Perceptron, support vector machines, kernel methods, bagging, boosting, random forests, cross-validation, neural networks, and principal component analysis.