About 10601A/C

Machine Learning (ML) asks "how can we design programs that automatically improve their performance through experience?" This includes learning to perform many types of tasks based on many types of experience, e.g. spotting high-risk medical patients, recognizing speech, classifying text documents, detecting credit card fraud, or driving autonomous robots.

Topics covered in 10601A/C include concept learning, version spaces, information theory, decision trees, neural networks and deep learning, estimation & the bias-variance tradeoff, hypothesis testing in machine learning, Bayesian learning, the Minimum Description Length principle, the Gibbs classifier, Naïve Bayes classifier, Bayes Nets, Markov Random Fields & Graphical Models, the EM algorithm, Hidden Markov Models, K-Nearest-Neighbors and nonparametric learning, Maximum Margin classifiers (SVM) and kernel based methods, and secondary methods like forests, bagging and boosting.

These sections of 10601 focus on the mathematical, statistical and computational foundations of the field. It emphasizes the role of assumptions in machine learning.  As we introduce different ML techniques, we work out together what assumptions are implicit in them. We use the Socratic Method whenever possible, and student participation is expected.  We focus on conceptual depth, at the possible expense of breadth.

Grading in 10601A/C will be based on almost-weekly programming and/or written assignments, a mid-term and a final exam.

10601A/C focuses on a mathematical and computational understanding of what makes machine learning work. If your interest is primarily in the applied side of machine learning, you should consider “Machine Learning in Practice” (11344/05834).

10601A/C is open to all but is recommended for Quantitative Masters students, and non-SCS PhD students.  However the prerequisites must be strictly adhered to.  This section is particularly recommended for students who intend to take additional ML courses.

 

 

TECHNOLOGY USE

 

1. For class communication, we will use Piazza.  If you are registered for either section A or section C, you will be automatically enrolled.  If you are registered for one of these two sections but have not received a welcome message by the first day of class, please email the TA in charge of Piazza.  Please post your questions to piazza for fast response.   If your question is general enough that it may be of interest to other students, and it doesn't disclose your solutions, post it publicly.  Otherwise, use a private post.  We also encourage students to reply to other students’ public questions if they are confident in their answer.   We will later endorse some of these replies, and top endorsees will get bonus points.

 

2. For programming assignments, we will use Autolab.  For any questions regarding Autolab, please email the TA in charge of Autolab.  These assignments will require you to use Python or Java (your choice, and you can choose differently for different assignments).  You are expected to know, or be able to pick up quickly, one of these two general purpose programming languages.  It is not the TAs’ job to teach you these languages, nor to help you debug your code.

 

3. For non-programming assignments, we will use Canvas.  For any questions regarding Canvas, please email the TA in charge of Canvas.

 

4. For any issues regarding the course website, please email the TA in charge of the website.