The objective of this module is to provide students with a familiarity with the core concepts in Machine Learning. Key techniques in supervised machine learning will be covered - for instance, k-Nearest Neighbour Classifiers, Decision Trees, Naive Bayes, and Supervised Neural Networks. Ensemble techniques for supervised learning will be covered in detail. In unsupervised machine learning, unsupervised neural network architectures will be covered and some basic clustering algorithms will be presented in detail (e.g. k-Means Clustering, Hierarchical Clustering). Dimension reduction techniques will also be covered in detail.This module has a practical focus and students will be expected to complete three practical assignments. One assignment will involve the implementation of a machine learning algorithm in a general programming language such as C++ or Java.This module requires significant mathematical ability as some of the algorithms require an understanding of matrix decomposition techniques. In addition the evaluation of the performance of machine learning algorithms requires an understanding of statistical significance testing.