CPSC 532H - Machine Learning and Optimisation for Automated Algorithm Design

[General Info] · [Grading]
Latest news (13/10/16): The slides from yesterday's class with information about course projects and the final exam can be found here.

Latest news (13/09/05): The slides from today's class with general information about the course can be found here.

   Tue+Thu, 14:00-15:30 in
   First class: Thu, 2013/09/05

   Holger H. Hoos
   E-mail: hoos "at" cs.ubc.ca
   Office: ICICS/CS complex, Room X541
   Office hours: TBA

What this course is about and why you might want to take it:

In a nutshell, it is about leveraging machine learning and optimisation to solve computationally challenging problems as efficiently as possible. It will cover cutting edge techniques from statistics, machine learning, optimisation, algorithm design and software engineering. If you are interested in automating the design of highly effective algorithms, in using machine learning for solving difficult optimisation tasks more efficiently and in using optimisation techniques for improving machine learning methods, this course is for you. If you are interested in automated algorithm configuration, hyperparameter optimisation, algorithm/model selection, automated parallelisation and similar topics, you may also find it worth your while.

How it works:

This course is new and somewhat unusual in that I will not teach any classes. Instead, students will prepare and deliver learning units, facilitated and guided by me, during the first half of the course (facilitated peer instruction). During the second half of the course, they will work on practical projects that apply and deepen some of the material covered previously (by them or others). All components will have clearly and explicitly stated learning goals and activities to facilitate meeting those goals.

How to register:

This is a pilot offering, which is structured in a way that would not work well beyond 12 students, because of the mechanisms to be used for content delivery and student assessment. (If successful, I have ideas on how to scale it to larger class sizes, but it would be unwise to try these for the first offering.)

I expect that there will be more than 12 students interested in taking this course. Although I am a strong believer in the power of randomisation, and I see merit in first-come-first-served mechanisms, I have decided to use neither to allocate the 12 seats. Instead, I will assign seats as follows:

I will explain in detail how the course is going to work at our first meeting on Thursday, 5 September. I will then ask those still interested in taking it to submit their transcript along with a brief statement of interest (<= 100 words). This will be due Fri, 6 September, 18:00 (sharp), via e-mail to me. Based on the information received, I will select the 12 students to be registered, based on their academic preparation and motivation (breaking ties uniformly at random).

Students interested in the course who won't get a seat will be put on a waitlist and have the option of getting seats that may be freed if any enrolled students drop out before the official drop date. They will also have the option to audit the course or to attend those parts that are of interest to them, but will not be assessed and will not receive credit for it. I am also planning to video record all classes (with the possible exception of the very first one) and to release those videos so anyone interested can watch them.

Prerequisite knowledge: Algorithms, statistics, high proficiency in programming; ideally, some AI, complexity theory (NP-hardness) and some machine learning.


Final grades for this course will be determined based on calibrated peer assessments (details to be discussed in class) of learning units and projects, quality of peer assessments produced, in-class participation and an oral exam (to be conducted at the beginning of December, precise dates TBA). The oral exam can cover all learning materials used in the course (preparatory reading, in-class material and activities) and all course components (learning units and projects).

last update: 13/09/03 [hh]