Basic Modeling for Discrete Optimization (Coursera)

Basic Modeling for Discrete Optimization (Coursera)

Optimization is a common form of decision making, and is ubiquitous in 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. Good decisions in manpower and material resources management also allow corporations to improve profit by millions of dollars.

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

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, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

This course is intended for students interested in tackling all facets of optimization applications. You will learn an entirely new way to think about solving these challenging problems by stating the problem in a state-of-the-art high level modeling language, and letting library 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 are considered inconceivable to solve before will suddenly become easy.

Syllabus

WEEK 1
MiniZinc introduction
In this first module, you will learn the basics of MiniZinc, a high-level modeling language for discrete optimization problems. Combining the simplicity of MiniZinc with the power of open-source industrial solving technologies, you will learn how to solve applications such as knapsack problems, graph coloring, production planning and tricky Cryptarithm puzzles, with great ease.

WEEK 2
Modeling with Sets
In this module, you will learn how to model problems involving set selection. In particular, you will see different ways of representing set variables when the variable has no constraints on its cardinality, has fixed cardinality and bounded cardinality. You also have to ensure all model decisions are valid decisions, and each valid decision corresponds to exactly one model decision.

WEEK 3
Modeling with Functions
In this module, you will learn how to model pure assignment problems and partition problems, which are functions in disguise. These problems find applications in rostering and constrained clustering. In terms of modeling techniques, you will see the power of common subexpression elimination and intermediate variables, and encounter the global cardinality constraint for the first time. MiniZinc also provides constraints for removing value symmetries.

WEEK 4
Multiple Modeling
In the final module of this course you will see how discrete optimization problems can often be seen from multiple viewpoints, and modeled completely differently from each viewpoint. Each viewpoint may have strengths and weaknesses, and indeed the different models can be combined to help each other.

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

Related Courses

Functional Program Design in Scala (Scala 2 version) (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Functional Program Design in Scala (Scala 2 version) (Coursera)

In this course you will learn how to apply the functional programming style in the design of larger Scala applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world. Finally, you will learn how to leverage the ability of the compiler to infer values from types.

Oct 5th 2026
5-12 Weeks
Version Control with Git (Coursera) Coursera
Atlassian

Version Control with Git (Coursera)

The Version Control with Git course provides you with a solid, hands-on foundation for understanding the Git version control system. Git is open source software originally created by Linus Torvalds. Git manages team files for large and small projects. This allows the team to continuously improve its product. It is used by most major technology companies, and is assumed knowledge for many modern programming and IT jobs. It is a core component of DevOps, continuous delivery pipelines and cloud-native computing. You could also use Git to manage the many continuously improving revisions of that book that you are writing.

Oct 5th 2026
4 Weeks
IBM z/OS Rexx Programming (Coursera) Coursera
IBM

IBM z/OS Rexx Programming (Coursera)

This course is designed to teach you the basic skills required to write programs using the REXX language in z/OS. The course covers the TSO extensions to REXX and interaction with other environments such as the MVS console, running REXX in batch jobs, and compiling REXX. A total of 11 hands-on labs on an IBM Z server (via remote Skytap access) are part of this course.

Oct 5th 2026
5-12 Weeks
Foundations of Data Science: K-Means Clustering in Python (Coursera) Coursera
University of London,Goldsmiths, University of London

Foundations of Data Science: K-Means Clustering in Python (Coursera)

This MOOC, designed by an academic team from Goldsmiths, University of London, will quickly introduce you to the core concepts of Data Science to prepare you for intermediate and advanced Data Science courses. It focuses on the basic mathematics, statistics and programming skills that are necessary for typical data analysis tasks.

Oct 5th 2026
5-12 Weeks
Estruturas de dados Python (Coursera) Coursera
University of Michigan

Estruturas de dados Python (Coursera)

Este curso apresentará as estruturas de dados centrais da linguagem de programação Python. Vamos superar os fundamentos da programação de procedimentos e explorar como podemos usar as estruturas de dados integradas do Python, como listas, dicionários e tuplas, para realizar análises de dados cada vez mais complexas. Este curso cobrirá os capítulos 6 a 10 do livro “Python para Todos”. Este curso aborda o Python 3.

Oct 5th 2026
5-12 Weeks
C# for .NET Developers (Coursera) Coursera
Board Infinity

C# for .NET Developers (Coursera)

In this course you will be introduced to everything from the basics of programming concepts like variables, data types, and control structures, to more advanced topics like object-oriented programming, etc. By the end of the course, you'll have a solid understanding of C# programming, the .NET framework, and how to use them to build a variety of applications. You'll have the skills and knowledge you need to start your career as a C# developer or take your current skills to the next level.

Oct 5th 2026
3 Weeks
Programming Languages, Part A (Coursera) Coursera
University of Washington

Programming Languages, Part A (Coursera)

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones.

Oct 5th 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).

Oct 5th 2026
5-12 Weeks
Computer Science: Algorithms, Theory, and Machines (Coursera) Coursera
Princeton University

Computer Science: Algorithms, Theory, and Machines (Coursera)

This course introduces the broader discipline of computer science to people having basic familiarity with Java programming. It covers the second half of our book Computer Science: An Interdisciplinary Approach (the first half is covered in our Coursera course Computer Science: Programming with a Purpose, to be released in the fall of 2018). Our intent is to demystify computation and to build awareness about the substantial intellectual underpinnings and rich history of the field of computer science.

Oct 5th 2026
5-12 Weeks
Practical Time Series Analysis (Coursera) Coursera
The State University of New York

Practical Time Series Analysis (Coursera)

Many of us are "accidental" data analysts. We trained in the sciences, business, or engineering and then found ourselves confronted with data for which we have no formal analytic training. This course is designed for people with some technical competencies who would like more than a "cookbook" approach, but who still need to concentrate on the routine sorts of presentation and analysis that deepen the understanding of our professional topics.

Oct 5th 2026
5-12 Weeks