We may earn an affiliate commission when you visit our partners.
Take this course
Dr. Carleton Coffrin and Professor Pascal Van Hentenryck

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

Read more

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

Optimization technology is ubiquitous in our society. It schedules planes and their crews, coordinates the production of steel, and organizes the transportation of iron ore from the mines to the ports. Optimization clears the day-ahead and real-time markets to deliver electricity to millions of people. It organizes kidney exchanges and cancer treatments and helps scientists understand the fundamental fabric of life, control complex chemical reactions, and design drugs that may benefit billions of individuals.

This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.

Enroll now

What's inside

Syllabus

Welcome
These lectures and readings give you an introduction to this course: its philosophy, organization, and load. They also tell you how the assignments are a significant part of the class. This week covers the common input/output organization of the assignments, how they are graded, and how to succeed in this class.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Develops skills used in optimization technology, which is used in various industries
Taught by Carleton Coffrin and Pascal Van Hentenryck, who are recognized for their work in this field
Explores advanced topics including advanced local search and cutting planes
Requires proficiency in optimization concepts and algorithms
Assessment includes assignments that form a significant part of the grade

Save this course

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

Reviews summary

Challenging introduction to optimization

According to learners, this course provides a strong theoretical foundation for discrete optimization, covering techniques like constraint programming, local search, and mixed-integer programming. Many highlight the programming assignments as particularly valuable and practical, helping to solidify understanding. However, students frequently note the material is challenging and moves at a fast pace, often requiring a solid background in mathematics and programming. While the core concepts are praised, some reviewers found the course content dense, particularly in later modules, indicating it may be more suitable for those with prior exposure or a willingness to invest significant time.
Provides deep understanding of algorithms.
"The course provides a deep dive into the theory behind optimization algorithms."
"Excellent coverage of foundational concepts like Branch and Bound and MIP."
"Focuses on understanding the algorithms themselves, which I appreciated."
"Great for building a strong theoretical understanding of the field."
"The lectures are well-structured and explain complex ideas clearly..."
Assignments are key to learning and very practical.
"The programming assignments are excellent and the best part of the course."
"Working through the assignments really helped me understand the concepts."
"The auto-grader was helpful and provided good feedback."
"I learned the most by actually implementing the algorithms in the assignments."
"Assignments are practical and reflect real-world problem types."
Lectures can be difficult to follow.
"Some lectures felt rushed and packed with too much information."
"The material can be quite dry at times."
"Wish there were more examples or slower explanations in the lectures."
"Found myself relying heavily on external resources to supplement lectures."
"The later modules were particularly dense and hard to digest solely from the videos."
Needs solid math and programming skills.
"Make sure you have a strong background in discrete math and linear algebra."
"Programming skills are essential for the assignments."
"Not recommended if you are not comfortable with mathematical notation."
"Assumes a level of mathematical maturity that beginners might lack."
"Brush up on data structures and algorithms before starting this one."
Material is dense and requires significant effort.
"This course was quite challenging, especially for someone new to optimization."
"The pace is very fast, covering complex topics quickly. Be prepared to work hard."
"Definitely not an easy course. Requires a solid foundation in math and programming."
"I found some lectures dense and had to rewatch them multiple times."
"Requires a lot of self-study beyond the lectures to grasp everything fully."

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 Discrete Optimization with these activities:
Connect with Optimization Experts
Expand your network and gain valuable insights by seeking guidance from experienced optimization practitioners.
Browse courses on Networking
Show steps
  • Identify potential mentors in the field of optimization.
  • Reach out to them, express your interest in optimization, and request mentorship.
Review Combinatorics Concepts
Strengthen your foundation by refreshing combinatorial ideas, a cornerstone of optimization.
Browse courses on Combinatorics
Show steps
  • Review basic combinatorics principles, such as permutations, combinations, and counting techniques.
  • Solve practice problems to reinforce your understanding.
Read 'Optimization with Python' by Andreas Antoniou
Enhance your understanding of optimization techniques and their implementation in Python.
Show steps
  • Read the book, paying attention to the mathematical concepts and Python implementations.
  • Solve the exercises provided in the book to practice your skills.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Explore Branch and Bound Algorithms Online
Develop foundational knowledge of Branch and Bound, a technique used to find optimal solutions to complex problems.
Browse courses on Branch and Bound
Show steps
  • Identify a tutorial that covers Branch and Bound algorithms.
  • Follow the tutorial, understanding the underlying concepts.
  • Practice implementing Branch and Bound algorithms in the tutorial.
Collaborate on Optimization Problem-Solving
Enhance problem-solving skills and diverse perspectives through peer collaboration.
Browse courses on Optimization Techniques
Show steps
  • Form a study group with peers taking this course.
  • Select optimization problems to work on together.
  • Discuss solution strategies, share insights, and provide feedback.
Solve Constraint Satisfaction Problems Exercises
Sharpen your problem-solving skills by practicing Constraint Satisfaction Problems.
Show steps
  • Find a collection of Constraint Satisfaction Problem exercises.
  • Solve the exercises, applying the concepts of constraint satisfaction.
  • Review your solutions, identifying areas for improvement.
  • Repeat the exercises to enhance your proficiency.
Develop a Visual Guide to Mixed-Integer Programming
Solidify your understanding of Mixed-Integer Programming concepts by creating a visual representation.
Browse courses on Mixed-Integer Programming
Show steps
  • Identify key concepts and algorithms in Mixed-Integer Programming.
  • Develop visual representations, such as diagrams or flowcharts, to explain these concepts.
  • Create a comprehensive guide that incorporates the visual representations.
Design an Algorithm for Dynamic Programming
Deepen your comprehension of Dynamic Programming by implementing an algorithm from scratch.
Browse courses on Dynamic programming
Show steps
  • Select a complex optimization problem suitable for Dynamic Programming.
  • Design an efficient algorithm using Dynamic Programming principles.
  • Implement the algorithm in a programming language of your choice.
  • Test and analyze the algorithm's performance.

Career center

Learners who complete Discrete Optimization will develop knowledge and skills that may be useful to these careers:
Operations Research Analyst
Operations Research Analysts use mathematical and analytical techniques to improve the efficiency of systems and processes. They work in a variety of industries, including manufacturing, healthcare, and transportation. Discrete Optimization is a core course for Operations Research Analysts, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Operations Research Analyst.
Industrial Engineer
Industrial Engineers design, improve, and install integrated systems for managing industrial production and operations. They use a variety of techniques, including optimization, to improve the efficiency of production processes. Discrete Optimization is a valuable course for Industrial Engineers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Industrial Engineer.
Data Scientist
Data Scientists analyze data to extract insights and solve business problems. They use a variety of techniques, including optimization, to find the best solutions to complex problems. Discrete Optimization is a foundational course for Data Science, providing a strong foundation in optimization techniques that can be applied to a wide range of real-world problems. By taking this course, you will gain the skills and knowledge you need to succeed as a Data Scientist.
Logistics Manager
Logistics Managers plan, direct, and control the movement of goods and services. They work in a variety of industries, including manufacturing, retail, and transportation. Discrete Optimization is a valuable course for Logistics Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Logistics Manager.
Transportation Manager
Transportation Managers plan, direct, and control the movement of people and goods. They work in a variety of industries, including manufacturing, retail, and transportation. Discrete Optimization is a valuable course for Transportation Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Transportation Manager.
Operations Manager
Operations Managers plan, direct, and control the operations of an organization. They work in a variety of industries, including manufacturing, healthcare, and transportation. Discrete Optimization is a valuable course for Operations Managers, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as an Operations Manager.
Financial Analyst
Financial Analysts analyze financial data and make investment recommendations. They work in a variety of financial institutions, including investment banks, hedge funds, and pension funds. Discrete Optimization is a valuable course for Financial Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Financial Analyst.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical techniques to analyze financial data and make investment decisions. They work in a variety of financial institutions, including investment banks, hedge funds, and pension funds. Discrete Optimization is a valuable course for Quantitative Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Quantitative Analyst.
Statistician
Statisticians collect, analyze, and interpret data. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Statisticians, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Statistician.
Actuary
Actuaries use mathematical and statistical techniques to assess risk and uncertainty. They work in a variety of industries, including insurance, finance, and healthcare. Discrete Optimization is a valuable course for Actuaries, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as an Actuary.
Management Consultant
Management Consultants advise businesses on how to improve their performance. They use a variety of techniques, including optimization, to help businesses make better decisions. Discrete Optimization is a valuable course for Management Consultants, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the skills you need to succeed as a Management Consultant.
Data Analyst
Data Analysts analyze data to identify trends and patterns. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Data Analysts, providing them with the skills and knowledge they need to develop and implement optimization models. By taking this course, you will gain the foundation you need to succeed as a Data Analyst.
Business Analyst
Business Analysts use data analysis and problem-solving skills to help businesses improve their performance. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Business Analysts, providing them with the skills and knowledge they need to develop and implement optimization solutions. By taking this course, you will gain the foundation you need to succeed as a Business Analyst.
Systems Analyst
Systems Analysts design, develop, and implement computer systems. They work in a variety of industries, including healthcare, finance, and manufacturing. Discrete Optimization is a valuable course for Systems Analysts, providing them with the skills and knowledge they need to develop and implement optimization algorithms. By taking this course, you will gain the foundation you need to succeed as a Systems Analyst.
Software Engineer
Software Engineers design, develop, and maintain software applications. They use a variety of techniques, including optimization, to create efficient and effective software solutions. Discrete Optimization is a valuable course for Software Engineers, providing them with the skills and knowledge they need to develop and implement optimization algorithms. By taking this course, you will gain the foundation you need to succeed as a Software Engineer.

Reading list

We've selected 13 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 Discrete Optimization.
Provides a comprehensive overview of constraint programming, covering both the theoretical foundations and practical applications. It would be particularly useful for students who want to learn more about the underlying concepts of constraint programming and its potential applications.
Provides a comprehensive overview of constraint programming, covering the theoretical foundations, algorithms, and applications of this powerful technique. It would be a valuable resource for students and practitioners who want to learn more about constraint programming.
Provides a thorough introduction to local search, a widely used optimization technique for solving combinatorial problems.
Provides a comprehensive overview of local search techniques for combinatorial optimization problems. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about local search.
Provides a comprehensive overview of linear programming and network flows. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about linear programming and network flows.
Provides a comprehensive overview of vehicle routing. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about vehicle routing.
Provides a comprehensive overview of supply chain optimization. It covers a wide range of topics, from basic concepts to advanced techniques. It would be a valuable resource for students and practitioners who want to learn more about supply chain optimization
Provides a comprehensive overview of vehicle routing problems, a type of optimization problem that arises in a wide variety of applications.
Provides a comprehensive overview of knapsack problems, a type of optimization problem that arises in a wide variety of applications.
Provides a detailed and comprehensive introduction to linear programming, with a focus on theory and applications.

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