340 - Machine Learning & Data Mining

The analysis of data (DNA, music, images, video, financial records, blogs, medical records, software, computer game logs, multimedia, social networks) is an important frontier in computer science. This frontier is expanding vastly thanks to new developments in mathematical modelling, algorithms, and computing infrastucture. This course will teach the basic principles and skills required for analysing data in a principled way: finding statistical patterns, dimensionality reduction, clustering, classification and prediction. Students will also have the opportunity of learning Python, one of the most widely used new programming languages.

Time: Mon Wed Fri 1:00-2:00pm

Location: Dempster 301

Instructor: Nando de Freitas (nando at cs)

Office hours: W 10:30-12:00 and 2:00-3:00pm (ICICS 104).

TAs: Bo Chen (bochen at cs) and Pooyan Fazli (pooyanf at cs).

Bo's TA hour: Monday 10:00am (Learning Centre - X150)

Pooyan's TA hour: Thursday 1pm (Learning Centre - X150)


There's no official textbook. I will provide handouts, but do recommend the following books:
  • The elements of Statistical Learning.
  • Pattern Recognition and Machine Learning.
  • All of Statistics.
  • Pattern Classification.


    You can befriend the user cpsc340 at Worio to see a set of websites related to the course content.


  • Assignments: 20%
  • Midterm 1: 20%. (Friday Oct 17)
  • Midterm 2: 20%. (Friday Nov 14)
  • Final: 40% (3:30pm, December 3)
  • There will also be a special research project for advanced students.
  • The instructor has the right to change the marking scheme under reasonable circumstances.


  • Assignments will involve both written and python programming problems.
  • All assignments are due on the specified time. 20% off for each day late. Assignments will not be accepted after 5 days late.

    Newsgroup: ubc.courses.cpsc.340