Welcome to CME 250!

CME 250: Introduction to Machine Learning

Brought to you by the Institute for Computational and Mathematical Engineering (ICME).


  • 02/10: Office hours for questions about the exercises or the Kaggle competition will be held tomorrow (Thursday 02/11) from 4:30pm to 5:30pm in the basement of Huang as well as next Thursday (02/18) at the same time and place for questions about the Kaggle competition.

  • 02/04: The Kaggle competition is live.

  • 02/04: Due to the university holiday on Feb 15th, the deadline to submit the applied exercises (hard copy required, details on how to submit here) will be extended until Feb 16th at noon.

  • 02/02: If you are having difficulty accessing the course Piazza page, please email the instructors.

  • 02/02: The required class Kaggle competition will be explained during the lecture on Thursday (02/04) - we advise all students to attend!

  • 01/28: Please fill out the (optional, anonymous) mid-course feedback form (here).

  • 01/28: Office hours for CME 250 are held informally at the end of each lecture and by appointment. We will offer an additional office hour session before the homework/project deadline (details to come). We also encourage students to post their questions on the course Piazza page.

  • 01/26: The mini-project data collection survey has been released and can be accessed here. The (anonymous) survey is mandatory for all students enrolled in the course for credit and must be completed by Thursday, January 28th at 11:59pm. Auditors are encouraged to 'give back' by also completing a response.

    • To confirm your completion of the survey, send a screen shot of the completion screen with to cme250-win1516-staff [at] lists [dot] stanford [dot] edu with the email subject "CME 250 PROJSURV".

    • 01/14: The online multiple choice questions for Lectures 1-2 have been posted (here)

  • 12/01: Welcome to CME 250!


  • Tuesday and Thursday, 4:30 - 5:50pm (with a total of 8 sessions): January 12, 14, 19, 21, 26, 28, and February 2 and 4.

  • Location: Bishop Auditorium (map)

Lecture Topics (tentative)

Course Description

A four week short course presenting the principles behind when, why, and how to apply modern machine learning algorithms. We will discuss a framework for reasoning about when to apply various machine learning techniques, emphasizing questions of overfitting/underfitting, regularization, interpretability, supervised/unsupervised methods, and handling of missing data.

The principles behind various algorithms—the why and how of using them—will be discussed, while some mathematical detail underlying the algorithms—including proofs—will not be discussed.

Unsupervised machine learning algorithms presented will include k-means clustering, principal component analysis (PCA), and independent component analysis (ICA). Supervised machine learning algorithms presented will include support vector machines (SVM), neural nets, classification and regression trees (CART), boosting, bagging, and random forests. Imputation, the lasso, and cross-validation concepts will also be covered. The R programming language will be used for examples, though students need not have prior exposure to R.


  • Alexander Ioannidis: ioannidis [at] stanford [dot] edu

  • Karianne Bergen: kbergen [at] stanford [dot] edu

Course Requirements

    1. complete an anonymous online competition to gain practical experience applying course concepts to a real data set.


Course assumes no prior background in machine learning. Previous exposure to undergraduate-level mathematics (calculus, linear algebra, statistics) and basic programming (R/Matlab/Python) helpful.