Prerequisites: Basic probability, linear algebra, computer programming, and graduate or undergraduate senior standing, OR approval of instructor. This course is an introduction to machine learning and contains both theory and applications. Students will get exposure to a broad range of machine learning methods and hands on practice on real data. Topics include Bayesian classification, perceptron, neural networks, logistic regression, support vector machines, decision trees, random forests, boosting, dimensionality reduction, unsupervised learning, regression, and learning new feature spaces. There will be several programming assignments, one course project, one mid-term and one final exam.