Modelling Discrete Optimization (University of Melbourne, Coursera)

Learn a new way to approach problem solving by stating the problem and letting powerful constraint solving software do the rest. This class teaches you the art of encoding complex discrete optimization problems in the MiniZinc modeling language and then shows you how to effortlessly solve them by leveraging state-of-the-art open-source constraint solving software.

About the Course

The world is full of hard discrete optimization problems. You have experienced them already if you have ever solved a sudoku puzzle or organized the seating at a wedding banquet. These problems underpin much of our daily lives and are part of determining daily delivery routes for packages, making school timetables, and delivering power to our homes. Despite their fundamental importance, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

In this course you will learn an entirely new way to think about solving these challenging discrete optimization problems by stating the problem in the high level modeling language, MiniZinc, and letting constraint solving software do the rest. This will allow you to unlock the power of industrial solving technologies, which have been perfected over decades by hundreds of PhD researchers. With access to this advanced technology, problems that you could not conceive solving before will suddenly become easy and bring you one step closer to "the holy grail of programming: the user states the problem, the computer solves it." (Eugene Freuder '96)

Course Syllabus

The course has an open format. At the start of the course all of the assignments and lectures are available and each student is free to design their own plan of study and proceed at their own pace. The assessments in the course consist of five modeling tasks where students experience the challenges of solving discrete optimization problems. The class community is an important aspect of this course and students are encouraged to collaborate and help each other in the completion of the assignments.

Recommended Background

Good programming skills, knowledge of fundamental algorithms, and a general comfort with mathematics.

Course Format

The course will consist of lecture videos, which are between 8 and 20 minutes in length (approximately 3 hours per week), and modeling assignments, which exercise the course concepts and require some creativity. Extensive workshop exercises and auxiliary materials are provided to help students practice modeling, broaden their understanding, and fill gaps in their background knowledge. Successful students often spend between 5 to 10 hours a week on the assignments depending on their background knowledge and level of interest.


Prof. Peter James Stuckey
The University of Melbourne

Dr Carleton Coffrin
The University of Melbourne


Monday, August 3, 2015