This course is an introduction to machine learning covering supervised and unsupervised learning. Supervised learning will focus on regression problems and how algorithms, such as gradient descent, can be used for fitting model parameters. The course then moves to multiple classification algorithms, such as logistic regression, support vector machines, K-nearest neighbor. Example algorithms on dimensionality reduction, such as principal component analysis, will also be discussed. Artificial neural networks and their use in applications such as, image processing and natural language processing will also be covered. In the unsupervised learning, the course will focus on clustering. Throughout the course, students will write code to gain practice in applying the course concepts.