This class is an introductory undergraduate course in machine learning. The class will briefly cover topics in regression, classification, mixture models, neural networks, deep learning, ensemble methods and reinforcement learning.
Prerequisites: You should understand basic probability and statistics, (STA 107, 250), and collegelevel algebra and calculus. For example it is expected that you know about standard probability distributions (Gaussians, Poisson), and also how to calculate derivatives. Knowledge of linear algebra is also expected, and knowledge of mathematics underlying probability models (STA 255, 261) will be useful. For the programming assignments, you should have some background in programming (CSC 270), and it would be helpful if you know Python.
Lectures: Monday 111pm (section 1), Wednesday 111pm (section 2), Thursday 46pm (section 3), Friday 111pm (section 4)
Lecture Room: AH 400 (section 1), MS 2170 (section 2), KP 108 (section 3), MS 2172 (section 4)
Instructor: Raquel Urtasun (sections 1 and 2), Richard Zemel (sections 3 and 4)
Office hours: Monday 45; Wednesday 45; Thursday 23; Pratt 290C
Tutorials: Monday 34pm (section 1), Wednesday 34pm (section 2), Thursday 67pm (section 3), Friday 34pm (section 4)
Tutorial Room: AH 400 (section 1), BA 1170 (section 2), KP 108 (section 3), MS 2172 (section 4)
The format of the class will be lectures, with some discussion. We strongly encourage interaction and questions. There are assigned readings for each lecture that are intended to prepare you to participate in the class discussion for that day.
The final grade will consist of the following  

Assignments  55% (3 assignments, first two worth 15%, last 25%) 
MidTerm Exam  20% 
Final Exam  25% 
The best way to learn about a machine learning method is to program it yourself and experiment with it. So the assignments will generally involve implementing machine learning algorithms, and experimentation to test your algorithms on some data. You will be asked to summarize your work, and analyze the results, in brief (34 page) write ups. The implementations may be done in any language, but Matlab and Python are reocmmended. A brief tutorial on Matlab is included here. You may also use Octave.
Collaboration on the assignments is not allowed. Each student is responsible for his or her own work. Discussion of assignments and programs should be limited to clarification of the handout itself, and should not involve any sharing of pseudocode or code or simulation results. Violation of this policy is grounds for a semester grade of F, in accordance with university regulations.
The schedule of assignments is included in the syllabus. Assignments are due at the beginning of class/tutorial on the due date. Because they may be discussed in class that day, it is important that you have completed them by that day. Assignments handed in late but before 5 pm of that day will be penalized by 5% (i.e., total points multiplied by 0.95); a late penalty of 10% per day will be assessed thereafter. Extensions will be granted only in special situations, and you will need a Student Medical Certificate or a written request approved by the instructor at least one week before the due date.
There will be a midterm in class during the 6th week of classes, which will be a closed book exam on all material covered up to that point in the lectures, tutorials, required readings, and assignments.
The final will not be cumulative, except insofar as concepts from the first half of the semester are essential for understanding the later material.
We expect students to attend all classes, and all tutorials. This is especially important because we will cover material in class that is not included in the textbook. Also, the tutorials will not only be for review and answering questions, but new material will also be covered.
There is no required textbook for this course. There are several recommended books. We will recommend specific chapters from Pattern Recognition and Machine Learning by Chris Bishop. We will also recommend other readings.
Click on the syllabus
Lecture  Topic  Readings  Slides 

Lecture 1  Course Introduction  lecture1 (handout)
lecture1 (animated) 

Lecture 2  Linear Regression  Bishop, Chapter 1.01.1; 3.1  lecture2 (handout) lecture2 (animated) 
Tutorial 1  Tutorial: Review on Probability  tutorial1  
Lecture 3  Linear Classification  Bishop: Pages 179195  lecture3 
Lecture 4  Logistic Regression  Bishop: Pages 203207  lecture4 
Tutorial 2  Tutorial: Gradient Descent  tutorial2  
Lecture 5  Nonparametric Methods  Bishop: Pages 120127  lecture5 
Lecture 6  Decision Trees  lecture6  
Tutorial 3  Tutorial: KNN and Decision Trees  tutorial3  
Lecture 7  Multiclass Classification  Bishop 4.1.2, 4.3.4  lecture7 
Lecture 8  Probabilistic Classifiers I  Bishop 4.2.2  lecture8 
Lecture 9  Probabilistic Classifiers II  Bishop, 380381  lecture9 
Tutorial 4  Tutorial: Naive Bayes  tutorial4  
Lecture 10  Neural Networks I  Bishop 5.1  5.3  lecture10 
Lecture 11  Neural Networks II  lecture11  
Tutorial 5  Tutorial: Neural Networks  tutorial5  
Tutorial 6  Tutorial: Midterm Review  
Lecture 12  Clustering  Bishop 9.1  lecture12 
Lecture 13  Mixture of Gaussians  Bishop 9.2, 9.3  lecture13 
Tutorial 6  Tutorial: Clustering  tutorial6  
Lecture 14  PCA & Autoencoders  Bishop 12.1  lecture14 
Lecture 15  SVM  Bishop: Chapter 7, pages 325337  lecture15 
Tutorial 7  Tutorial: PCA  tutorial7  
Lecture 16  Kernels  lecture16  
Lecture 17  Ensemble Methods I  Bishop 14.2  14.3  lecture17 
Tutorial 8  Tutorial: SVM  tutorial8  
Lecture 18  Ensemble Methods II  lecture18  
Lecture 19  Reinforcement Learning  lecture19  
Tutorial 9  Tutorial: RL  tutorial9 