Machine Learning is centered on automated methods that improve their own performance through learning patterns in data. Data is available and abundant in different domains. In many of these data rich domains, machine learning provides cost effective solutions and has had successful applications in business (speech recognition systems, recommendation systems, information retrieval systems) and applications in science (annotation of genome, predicting disease biomarkers, etc.). In this undergraduate-level class, students will get an introduction to the core mathematical and statistical techniques required to understand some of the most common machine learning algorithms and some of these algorithms. Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning); unsupervised learning (clustering, dimensionality reduction), and some additional topics (active learning, semi-supervised learning). The course will draw examples from recent applications of machine learning. Programming and theoretical assignments include hands-on practice with various learning algorithms. The course project will give students an opportunity to work on a problem of their interest. Students entering the class are expected to have a pre-existing working knowledge of probability, statistics, programming and algorithms.