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)
An introductory lecture to the course can viewed here.
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.
Good programming skills, knowledge of fundamental algorithms, and a general comfort with mathematics.
The course will consist of lecture videos, which are between 8 and 20 minutes in length (approximately 2 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.
What are the pre-requisites for this course?
The course assumes an undergraduate computer science background with a fair amount of mathematics.
What language will be used in the course?
The modeling language is MiniZinc, a solver independent high level modeling language, including a dedicated IDE.
What is the most useful thing I will learn in this course?
A new way of solving problems, by capturing a mathematical model of the problem and then using powerful solving technology to find a solution.
How difficult is this course?
The course material is technical and the assignments will challenge you to think in a new way. Those who complete all of the assignments will have developed a completely new skill.