Discrete Optimization

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

About The Course

Optimization technology is ubiquitous in our society. It schedules planes and their crews, coordinates the production of steel, and organizes the transportation of iron ore from the mines to the ports. Optimization clears the day-ahead and real-time markets to deliver electricity to millions of people. It organizes kidney exchanges and cancer treatments and helps scientists understand the fundamental fabric of life, control complex chemical reactions, and design drugs that may benefit billions of individuals.

This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.

An introductory lecture to the course can viewed here.

Frequently Asked Questions

  • What are the pre-requisites for the class?
  • Good programming skills, knowledge of algorithms and linear algebra.
  • What programming language will be used in this class?
  • A minimal knowledge of python is necessary to integrate with the course infrastructure.  Outside of that, students are free to use any language of their choice.
  • What is the coolest thing I'll learn if I take this class?
  • To be the coolest waiter in the world.
  • How difficult is this class?
  • A motivated student spending the time on the programming assignment will succeed in this class.
  • Where can I get one of those T-Shirts?
  • At the discrete optimization store!

Recommended Background

Good programming skills, knowledge of fundamental algorithms, and linear algebra.