Solving Algorithms for Discrete Optimization (Coursera)

Solving Algorithms for Discrete Optimization (Coursera)

Discrete Optimization aims to make good decisions when we have many possibilities to choose from. Its applications are ubiquitous throughout our society. Its applications range from solving Sudoku puzzles to arranging seating in a wedding banquet. The same technology can schedule planes and their crews, coordinate the production of steel, and organize the transportation of iron ore from the mines to the ports.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

Good decisions on the use of scarce or expensive resources such as staffing and material resources also allow corporations to improve their profit by millions of dollars. Similar problems also 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, these problems are a nightmare to solve using traditional undergraduate computer science methods.
This course is intended for students who have completed Advanced Modelling for Discrete Optimization. In this course, you will extend your understanding of how to solve challenging discrete optimization problems by learning more about the solving technologies that are used to solve them, and how a high-level model (written in MiniZinc) is transformed into a form that is executable by these underlying solvers. By better understanding the actual solving technology, you will both improve your modeling capabilities, and be able to choose the most appropriate solving technology to use.

Syllabus

Week 1
Basic Constraint Programming
This module starts by using an example to illustrate the basic machinery of Constraint Programming solvers, namely constraint propagation and search. While domains represent possibilities for variables, constraints are actively used to reason about domains and can be encoded as domain propagators and bounds propagators. You will learn how a propagation engine handles a set of propagators and coordinates the propagation of constraint information via variable domains. You will also learn basic search, variable and value choices, and how propagation and search can be combined in a seamless and efficient manner. Last but not least, this module describes how to program search in MiniZinc.

Week 2
Advanced Constraint Programming
In this module, you will see how Branch and Bound search can solve optimization problems and how search strategies become even more important in such situations. You will be exposed to advanced search strategies, including restart search and impact-based search. The module also uncovers the inner workings of such global constraints as all different and cumulative.

Week 3
Mixed Integer Programming
This module starts by introducing linear programming and the Simplex algorithm for solving continuous linear optimization problems, before showing how the method can be incorporated into Branch and Bound search for solving Mixed Integer Programs. Learn Gomory Cuts and the Branch and Cut method to see how they can speed up solving.

Week 4
Local Search
This module takes you into the exciting realm of local search methods, which allow for efficient exploration of some otherwise large and complex search space. You will learn the notion of states, moves and neighbourhoods, and how they are utilized in basic greedy search and steepest descent search in constrained search space. Learn various methods of escaping from and avoiding local minima, including restarts, simulated annealing, tabu lists and discrete Lagrange Multipliers. Last but not least, you will see how Large Neighbourhood Search treats finding the best neighbour in a large neighbourhood as a discrete optimization problem, which allows us to explore farther and search more efficiently.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Sistemas Digitales: De las puertas lógicas al procesador (Coursera) Coursera
Universitat Autònoma de Barcelona

Sistemas Digitales: De las puertas lógicas al procesador (Coursera)

En este curso aprenderemos los fundamentos del diseño de los circuitos digitales actuales, siguiendo una orientación eminentemente práctica. A diferencia de otros cursos más "clásicos" de Circuitos Digitales, nuestro interés se centrará más en el Sistema que en la Electrónica que lo sustenta. Este enfoque nos permitirá sentar las bases del diseño de Sistemas Digitales complejos.

Aug 3rd 2026
5-12 Weeks
Quantitative Model Checking (Coursera) Coursera
EIT Digital

Quantitative Model Checking (Coursera)

The integration of ICT (information and communications technology) in different applications is rapidly increasing in e.g. Embedded and Cyber physical systems, Communication protocols and Transportation systems. Hence, their reliability and dependability increasingly depends on software. Defects can be fatal and extremely costly (with regards to mass-production of products and safety-critical systems).

Aug 10th 2026
5-12 Weeks
Information Theory (Coursera) Coursera
The Chinese University of Hong Kong

Information Theory (Coursera)

At the completion of this course, the student should be able to: demonstrate knowledge and understanding of the fundamentals of information theory; appreciate the notion of fundamental limits in communication systems and more generally all systems; develop deeper understanding of communication systems; apply the concepts of information theory to various disciplines in information science.

Aug 10th 2026
13-24 Weeks
Analysis of Algorithms (Coursera) Coursera
Princeton University

Analysis of Algorithms (Coursera)

This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. In addition, this course covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.

Aug 3rd 2026
5-12 Weeks
The Fundamental of Data-Driven Investment (Coursera) Coursera
Sungkyunkwan University - SKKU

The Fundamental of Data-Driven Investment (Coursera)

In this course, the instructor will discuss the fundamental analysis of investment using R programming. The course will cover investment analysis topics, but at the same time, make you practice it using R programming. This course's focus is to train you to do the elemental analysis for investment management that you might need to do in your job every day. Additionally, the study note to do using Python programming will be provided.

Aug 10th 2026
4 Weeks
Introdução ao Teste de Software (Coursera) Coursera
Universidade de São Paulo, Brasil

Introdução ao Teste de Software (Coursera)

A necessidade das empresas em produzir software com qualidade tem aumentado a demanda por profissionais com conhecimentos e habilidades em Teste de Software. Entretanto, existe uma escassez de mão-de-obra especializada nesta área. Considerando essa lacuna, o curso de Introdução ao Teste de Software foi planejado para servir como um guia para pessoas que necessitam de uma fonte de consulta e/ou aprendizado na área.

Aug 10th 2026
5-12 Weeks
Introduction to .NET Core (Coursera) Coursera
Board Infinity

Introduction to .NET Core (Coursera)

This course is an introductory-level course for software developers who want to learn the basics of developing applications with .NET Core. .NET Core is a cross-platform, open-source development platform that allows developers to create applications for Windows, Linux, and macOS. Throughout this course, students will learn the fundamental concepts of .NET Core, including its architecture, programming model, and tools. They will also learn how to create, build, and deploy applications using .NET Core.

Aug 10th 2026
3 Weeks
AI for Efficient Programming: Harnessing the Power of LLMs (Coursera) Coursera
Fred Hutchinson Cancer Center

AI for Efficient Programming: Harnessing the Power of LLMs (Coursera)

This course on Artificial Intelligence (AI) for software development explores the use of AI large language models such as ChatGPT, Bard, and others and their potential benefits and challenges. Through examples and hands-on activities, you will develop an understanding of the ways in which AI can speed up software development tasks and free up time for more creative and strategic work.

Aug 10th 2026
4 Weeks
Code Yourself! An Introduction to Programming (Coursera) Coursera
University of Edinburgh,Universidad ORT Uruguay

Code Yourself! An Introduction to Programming (Coursera)

Have you ever wished you knew how to program, but had no idea where to start from? This course will teach you how to program in Scratch, an easy to use visual programming language. More importantly, it will introduce you to the fundamental principles of computing and it will help you think like a software engineer.

Aug 3rd 2026
5-12 Weeks
Analytic Combinatorics (Coursera) Coursera
Princeton University

Analytic Combinatorics (Coursera)

Analytic Combinatorics teaches a calculus that enables precise quantitative predictions of large combinatorial structures. This course introduces the symbolic method to derive functional relations among ordinary, exponential, and multivariate generating functions, and methods in complex analysis for deriving accurate asymptotics from the GF equations. All the features of this course are available for free. It does not offer a certificate upon completion.

Aug 10th 2026
5-12 Weeks