This course will give an overview of machine learning techniques, their strengths and weaknesses, and the problems they are designed to solve. This will include the broad differences between supervised, unsupervised and reinforcement learning and associated learning problems such as classification and regression. Techniques covered, at the discretion of the instructor, may include approaches such as linear and logistic regression, neural networks, support vector machines, kNN, decision trees, random forests, Naive Bayes, EM, k-Means, and PCA. After taking the course, students will have a working knowledge of these approaches and experience applying them to learning problems. Enforced Prerequisites: COMP 2370 and COMP 2355.