We may earn an affiliate commission when you visit our partners.
Course image
Prof. Jimmy Ho Man Lee and Prof. Peter James Stuckey

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. 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.

Read more

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. 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.

Watch the course promotional video here: https://www.youtube.com/watch?v=-EiRsK-Rm08

Enroll now

What's inside

Syllabus

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.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Fits well for learners who want to solve challenging discrete optimization problems
Taught by experienced instructors, Prof. Peter James Stuckey and Prof. Jimmy Ho Man Lee
Develops capabilities in modeling, helping learners improve their problem-solving skills
Covers advanced topics like Branch and Bound search, Local Search, and Mixed Integer Programming
Provides a strong foundation in Discrete Optimization, making it suitable for learners who want to pursue further studies or careers in the field
Learners are expected to have completed 'Advanced Modelling for Discrete Optimization' before taking this course

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Solving algorithms for discrete optimization

According to learners, this course provides a deep dive into the solving technologies behind discrete optimization, building directly on the foundational concepts from the prerequisite course. Students found the content, covering Constraint Programming, Mixed Integer Programming, and Local Search, to be challenging but highly rewarding. Many appreciate the focus on understanding how high-level models translate to executable forms by underlying solvers, enhancing their ability to choose appropriate methods. While the course demands effort and assumes prior knowledge, students report gaining a solid understanding and practical skills for tackling complex optimization problems.
Prior knowledge is essential.
"Definitely need to have taken the previous course first."
"If you haven't done the modelling course, this will be very difficult."
"The concepts build directly on the 'Advanced Modelling' course."
Learn to apply algorithms practically.
"The assignments let me see how these algorithms solve real problems."
"Using MiniZinc with different solvers felt very practical."
"I can now approach optimization problems with a better toolkit."
Demands effort but yields significant understanding.
"This course is tough, especially the assignments, but very rewarding."
"While challenging, the payoff in understanding optimization is huge."
"It pushes you to think deeply about algorithmic approaches."
Explore the inner workings of solvers.
"Understanding the internal workings of solvers was invaluable."
"The modules on CP and MIP solvers explained complex concepts clearly."
"I appreciate the focus on how MiniZinc models translate to solver actions."
"Delves deeply into the actual solving technologies used."
Content can be complex and fast-paced.
"The lecture videos were dense and sometimes hard to follow."
"Had to rewatch some lectures multiple times to grasp the concepts."
"Could benefit from more examples in the explanations."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Solving Algorithms for Discrete Optimization with these activities:
Review Discrete Optimization Basics
Recall the basic concepts and terminologies of Discrete Optimization to reinforce your understanding.
Browse courses on Discrete Optimization
Show steps
  • Reread lecture notes and textbooks from previous courses
  • Revisit online resources and tutorials
  • Attempt practice problems and exercises
Organize Course Materials
Compile resources, notes, and study materials from different sources and organize them systematically for easy access and review.
Show steps
  • Gather lecture notes, slides, and assignments
  • Review and organize materials by topic
  • Create a digital or physical study hub
  • Annotate and highlight key concepts
Explore Constraint Programming Resources
Enhance your understanding of Constraint Programming (CP) by following online tutorials and resources to strengthen your practical skills.
Browse courses on Constraint Programming
Show steps
  • Identify reputable CP learning platforms and tutorials
  • Follow step-by-step guides and examples
  • Experiment with different CP tools and libraries
  • Apply CP concepts to solve sample problems
  • Consult online forums and documentation for additional support
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve Discrete Optimization Problems
Sharpen your problem-solving abilities by practicing a variety of Discrete Optimization problems, covering different techniques and domains.
Browse courses on Discrete Optimization
Show steps
  • Access online platforms with problem sets and challenges
  • Attempt to solve problems independently
  • Analyze solution strategies and identify optimization techniques
  • Compare your solutions with others and seek feedback
Develop a Discrete Optimization Model
Demonstrate your modeling proficiency by designing and implementing a Discrete Optimization model using MiniZinc to solve a real-world problem.
Browse courses on Discrete Optimization
Show steps
  • Identify a suitable problem domain
  • Formulate the problem as a Discrete Optimization model
  • Implement the model in MiniZinc
  • Validate and test the model
  • Analyze and interpret the results
Attend Industry Conferences and Meetups
Expand your network and stay up-to-date by engaging with industry professionals at conferences and meetups dedicated to Discrete Optimization and related fields.
Browse courses on Discrete Optimization
Show steps
  • Identify relevant conferences and meetups
  • Attend sessions and presentations
  • Network with experts and practitioners
  • Explore potential collaborations
Contribute to Open-Source Discrete Optimization Projects
Enhance your practical skills and gain valuable experience by contributing to real-world Discrete Optimization projects on platforms like Github.
Browse courses on Discrete Optimization
Show steps
  • Identify open-source projects in need of assistance
  • Review codebases and documentation
  • Identify areas for improvement or contribution
  • Submit pull requests with bug fixes or enhancements
  • Engage with project maintainers and community

Career center

Learners who complete Solving Algorithms for Discrete Optimization will develop knowledge and skills that may be useful to these careers:
Operations Research Analyst
Operations Research Analysts use advanced analytical techniques to solve complex problems in various industries, including finance, healthcare, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Operations Research Analysts. You will learn how to formulate and solve optimization problems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Operations Research Analyst.
Data Scientist
Data Scientists use data analysis techniques to extract insights from data. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Data Scientists. You will learn how to collect, clean, and analyze data, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Data Scientist.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Software Engineers. You will learn how to design and implement efficient algorithms, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Software Engineer.
Management Consultant
Management Consultants help organizations improve their performance. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Management Consultants. You will learn how to analyze business problems and develop solutions, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Management Consultant.
Financial Analyst
Financial Analysts provide financial advice to individuals and organizations. They work in a variety of industries, including banking, investment management, and insurance. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Financial Analysts. You will learn how to analyze financial data and make investment recommendations, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Financial Analyst.
Actuary
Actuaries use mathematical and statistical methods to assess risk and uncertainty. They work in a variety of industries, including insurance, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Actuaries. You will learn how to analyze risk and develop risk management strategies, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Actuary.
Statistician
Statisticians collect, analyze, and interpret data. They work in a variety of industries, including government, academia, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Statisticians. You will learn how to design and conduct statistical studies, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Statistician.
Operations Manager
Operations Managers plan and oversee the production and delivery of goods and services. They work in a variety of industries, including manufacturing, retail, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Operations Managers. You will learn how to design and manage production systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Operations Manager.
Business Analyst
Business Analysts help organizations improve their performance by analyzing business processes and developing solutions. They work in a variety of industries, including technology, finance, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Business Analysts. You will learn how to analyze business problems and develop solutions, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Business Analyst.
Project Manager
Project Managers plan and execute projects. They work in a variety of industries, including technology, construction, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Project Managers. You will learn how to plan and manage projects, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Project Manager.
Logistics Manager
Logistics Managers plan and coordinate the movement of goods and services. They work in a variety of industries, including transportation, retail, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Logistics Managers. You will learn how to design and manage logistics systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Logistics Manager.
Supply Chain Manager
Supply Chain Managers plan and manage the flow of goods and services from suppliers to customers. They work in a variety of industries, including manufacturing, retail, and healthcare. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Supply Chain Managers. You will learn how to design and manage supply chain systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Supply Chain Manager.
Transportation Manager
Transportation Managers plan and manage the movement of people and goods. They work in a variety of industries, including transportation, logistics, and manufacturing. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Transportation Managers. You will learn how to design and manage transportation systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Transportation Manager.
Industrial Engineer
Industrial Engineers design and improve processes in a variety of industries, including manufacturing, healthcare, and retail. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Industrial Engineers. You will learn how to design and improve processes, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as an Industrial Engineer.
Quality Engineer
Quality Engineers ensure that products and services meet quality standards. They work in a variety of industries, including manufacturing, healthcare, and technology. This course on Solving Algorithms for Discrete Optimization can provide you with a strong foundation in the mathematical and computational methods used by Quality Engineers. You will learn how to design and implement quality control systems, and gain experience using specialized software tools. This course can help you develop the skills and knowledge needed to succeed as a Quality Engineer.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Solving Algorithms for Discrete Optimization.
This textbook provides a comprehensive overview of constraint programming, a powerful technique for solving combinatorial optimization problems.
This handbook provides a comprehensive overview of the state-of-the-art in constraint programming, covering both theoretical foundations and practical applications.
This textbook provides a comprehensive overview of linear programming, a fundamental technique for solving continuous optimization problems.
Provides a comprehensive overview of local search algorithms, a powerful technique for solving combinatorial optimization problems.
This textbook provides a comprehensive overview of discrete mathematics, a fundamental foundation for studying computer science.
This textbook provides a comprehensive overview of calculus, a fundamental foundation for studying computer science.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser