This course provides an intensive treatment of a cross-section of the key elements of machine learning, with an emphasis on implementing them in modern programming environments, and using them to solve real-world problems. The course will begin with the fundamentals of data preparation and regression, but will quickly build to cover more advanced topics, including support vector machines, decision trees, random forest, hierarchical clustering, artificial neural networks and convolutional neural networks, etc. It will also cover the concepts of dimensionality reduction, model selection & boosting. A key focus of the course is on providing students with not only theory but also hands-on practice of building their own machine learning models.