- All DegreesExplore Bachelorâ€™s & Masterâ€™s degrees
- Bachelorâ€™s DegreesExplore masterâ€™s degrees from leading universities
- Masterâ€™s DegreesExplore Computer Science & Engineering degrees
- Postgraduate StudiesDeepen your expertise with postgraduate learning
- MasterTrackâ„¢Earn credit towards a Masterâ€™s degree
- University CertificatesAdvance your career with graduate-level learning

Back to Discrete Optimization

stars

708 ratings

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

SK

May 29, 2019

Exceptional coverage of optimization fundamentals. Learning of practical applied methods. Real university level course, no water down "data science". Absolutely love it! Thank you professor Pascal.

JB

Jul 21, 2017

Great course, the teacher is very clear and often goes into sufficient depth for the student to understand concepts.

Assignments are challenging and help understanding course content.

Filter by:

By Amin F

â€¢Sep 10, 2017

This is a fun and challenging course! Without doubt the most challenging courses I've ever done in coursera!

I have a few suggestions for anyone who is considering to start this course:

1- You have to be a skillful programmer, be comfortable with algorithm design, tree and graphs structures and recursion. Also a general knowledge of models are useful.

2- You have to have enough patience to watch loooooooong videos (but the professor teaches in a pretty awesome and in times, hilarious ways!)

3- You really need to spend +15 hours per week on this course, not only the videos for each week is long but also each programming assignment will take tremendous amount of your time!

4- And finally you should be tough and not give up and sometimes have the courage to write your code again from scratch after failure!

By Tommi J

â€¢Mar 26, 2020

One of the best courses I've ever taken, including all my main studies in three different universities. Don't expect to breeze through this course with some easy multiple choice questionnaires - the professor is not kidding in the beginning when he says the course is hard. It actually took me 3 years of on-and-off, admittedly sporadic efforts to get through the course with more than a few times when I questioned whether I would ever finish it. What kept me coming back every time though was knowing that this is a course where your efforts pay off highly in learning - coding the algorithms yourself is obviously more demanding then getting handed something already working, but at the same time this is simply the best way to learn. Pedagogically everything is set up ideally for the motivated learner - the lectures are inspiring (even entertaining!) and focus on the key ideas behind the methods rather than obscure equations. After getting through the lectures of a section and getting the programming assignment in front of you (which are superbly designed with the online grading system working flawlessly), you should have conceptually a solid basis for starting to start writing your optimisation algorithm (actually, in many cases you would have several algorithm classes to choose from and in the end especially towards the last few assignments I had to implement several different algorithms for the different individual problems of the assignment to get a passing score). The learning curve is perfectly set up with each successive assignment being a bit harder than the one before it (and also a bit more rewarding once you finally manage to get through it). Finally, it's certainly worth it to read through the informative discussion forums to get new ideas when you get stuck in an assignment. The bottom line is that if you are interested in learning about discrete optimisation and are motivated enough to spend the fairly significant amount of time and effort required, then you simply couldn't ask for a better course than this - thanks so much to the course staff for making this amazing course available on Coursera!

By Melissa J

â€¢Nov 2, 2018

Very difficult. Harder than pretty much all of the courses I've taken in college, more or less, based on how much material is covered and the amount of research you have to do on top of the lectures in order to just get a passing grade on the assignments. Definitely a grad level course, probably harder than most grad level courses I've taken in college just for the amount of effort needed to get a perfect score on all assignments (unfortunately it depends on how good of a computer you have to run your solutions). The challenge just makes it even more fun. Lectures barely covers anything needed to do the assignments, which just gives you a surface level introduction to the concepts needed to solve the problems. The discussion forum is crucial to getting good guidance on how to solve the problems. Pretty much all of the assignments involved doing your own research and reading a bunch of problem-related research papers to figure out what you want to use for your own implementations. I had a blast learning, and thank you so much for offering this course on coursera.

By Mark D

â€¢May 13, 2020

The lectures are fine, but there is no guidance on how to actually complete the assignments. If the lecture is "Space vehicles are fascinating", then the assignment is "Go knit a space shuttle".

By Marko Å

â€¢Jun 3, 2020

This is, without a doubt, one of the most interesting courses I have ever taken. You will be challenged to create your own ideas and you will get to know what NP hard means in practice.

By Li Z

â€¢Jul 4, 2017

I guess this could be the most challenging course I've had on Coursera.

1, almost all assignments are NP-hard combinatorial optimization problems.

2, data scale can be huge, assessment criteria can be strict.

3. choosing between CP, MIP solver and all kinds of stochastic and meta-heuristic algorithms is fun, gives you the chance to learn both with hands-on experience.

4. even discouraged from doing so, you'll still read a lot of research papers, about 20+ for me.

5. several thousands of SLOC to be expected, if you're honest with yourself.

6. even if you're looking to cheat your way through, you still need solid programming ability and understanding of the problem to do it, so don't bother, why ruin all the fun?

7. the facility location problem drove me nuts.

8. randomization is Pandora's box.

By Slav K

â€¢May 29, 2019

Exceptional coverage of optimization fundamentals. Learning of practical applied methods. Real university level course, no water down "data science". Absolutely love it! Thank you professor Pascal.

By Galley D

â€¢May 2, 2019

I just completed the course. This an amazing course with an Outstanding professor and highly interesting, although difficult, assignments. Thanks for this! I am proud to have finished

By Aditya D

â€¢Jun 6, 2019

Excellent course! The course video are very clear and build on each other as the course progress. It is well structured. The assignments have the right amount of difficulty.

By Deleted A

â€¢Mar 2, 2020

While I appreciate the instructors knowledge and enthusiasm, there's far too much hand waving and not enough math or code to make any sense of the subject. Overall, this course is worthless.

By Brian H

â€¢Apr 26, 2020

The instructor for this course, Professor Hentenryck, is wonderful. His excitement and passion are palpable in his lectures and his team has clearly put in a ton of effort into creating all the graphics, images, etc. to make the illustrations as lucid as possible. Make no mistake - despite the simplicity of the problems you learn (in terms of how you can state them), this can be a very tough course. The positive side is that depending on your goals (do you want to learn the heuristics of discrete programming, or get your hands dirty with the details?), all of the problems in this course can easily be solved with an optimization framework (e.g. Python OR-tools, Julia JuMP). However, it's like Professor Hentenryck says, the real fun of the course is trying to approach the problems you learn from different angles. I first solved each problem through the basic approaches, but always went back to try something else and that's truly what made the course so enjoyable - by the end, you really feel as though you have a toolbox of optimization knowledge at your disposal!

By Yeap Y M

â€¢Sep 2, 2020

Great instructor. Great content. Easy to follow.

The course is on par with the level of graduate courses, and assumes intermediate knowledge of coding in Python/Java/C++. The assignment load is very heavy - almost one assignment every week. They are all NP-hard problems. The good news is that the course does not restrict you from using commercial optimization software, which helps a bit. After completing this course, I have developed deeper understanding on optimization and feel more confident applying it to my work.

My only gripe is that the course is overloaded - could have been divided into two parts: constraint programming and linear programming.

By Hichem C

â€¢Mar 25, 2022

Wow, Wow, Wow I discovered something in computer science, I didn't know it's so interesting and challenging. Constraint Programming !!! (you don't have to code and develop your algorithms !!!) You need to know that it exists, and know how to connect the wires !!! between your real problem and the Constraint Programming Solvers !!! Thanks for the excellent teatcher !!! thanks thanks thanks !!!

By Greg W

â€¢Dec 23, 2018

The most challenging course that I've ever enrolled in. The instruction videos are just a 30% of what it takes to get perfect score on the assignments. Its the only course that I feel it was totally worth the time trying to complete it at 100%. Amazing instructor, and I'm totally gonna keep and revisit all of the course videos.

By Stefano M

â€¢Feb 12, 2020

The quality of the lectures, as well as of the teaching material (slides, exercises, etc.), is just excellent. Thanks a lot to the instructors for putting so much effort in preparing it! Although having worked with optimization for a few years, I could learn a lot from this course. For someone aiming at learning optimization, there are not many well-structured courses/resources available; and this is surely one of the best resources I have found in years.

The course is difficult - much more difficult than other data science courses on Coursera - and thus requires many hours, good programming skills, and some dedication. But for me it was surely worth it!

My only remark/negative feedback is the lack of guidance - especially at the very beginning - on what external resources students are supposed to use for the assignments. I understand that this is in part intentional in order to make the course more challenging; however, compared to other courses I took, I feel that here the guidance is sometimes excessively little, and it is quite easy to get stuck on a given exercise. I honestly felt a bit lost at the beginning, and doubted whether it made sense to continue the course. Also, having access or not to licences of professional tools can make a significant difference in the level of difficulty of the assignments (implementing from scratch some solvers is, in some cases, a rather difficult task, which also requires quite advanced programming skills). I really think that providing more guidance/instructions on this would be of very high benefit here. There is actually a video which partly addresses this point, but it is only at the end of Week 3 (I guess many people abandon before having seen it - I recommend students to watch it at the very beginning).

Also, possibly related to this, my feeling is that currently the course is far less active than in the last years; the forums are not very active, and very seldom instructors/tutors intervene in the discussion.

By Ioan A C

â€¢Nov 24, 2016

While doing Tim Roughgarden's Algorithms course (https://www.coursera.org/specializations/algorithms) I became interested about the topic of solving NP-hard problems and wanted more. That's how I bumped into this course. I'm VERY happy I did. I never had so much fun programming since I was in high school. The assignments are tough and time consuming and super addictive. Don't be surprised if you find yourself at 5:00 AM trying to squeeze a slightly better solution then what you currently have.

The course covers a lot of material: constraint programming, local search heuristics and meta-heuristics, linear and mixed integer programming. I think each of these topics could be extended and made into separate course. If you want to get a thorough understanding of all of the presented topics, you're gonna have to go through the additional materials. However, prof. Pascal Van Hentenryck is an excellent teacher so even though you don't have a thorough understanding of everything, things are gonna make sense and feel very natural and intuitive. Dr. Carleton Coffrin is also very active on the forums, constantly answering questions or encouraging interesting conversations. I've never seen a MOOC which such actively involved staff.

Bottom line, if you have10+ hours/week and you like CS, definitely take this one.

By Christoph L

â€¢Mar 29, 2020

Great course - with very nice instructor. Assignments are very challenging at times and one should not take the course if one is not rather confident in one's programming abilities (preferably python). You will likely have to program a lot and write your own codes from scratch. I did the course with Matlab but figuring out how to upload the results into python was initially a pain. If you enjoy programming, have sufficient time per week to do the course (at least 5-10 hours - no re-scheduling of overall course deadline!) and want to learn about discrete optimization - then this course is clearly for you!

By Michael R S

â€¢Jun 20, 2022

This is an amazing course, Pascal is very enthusiastic, informative and entertaining. The assignments are tough and a great way of improving my/your programming skills. Lots to read about too, as these are classic real-world problems where the optimum solution would take far too long to compute. Wasn't sure I'd even be able to pass each assignment until I eventually did. A real Indiana Jones journey! Thank you!

By Philippe C

â€¢Jul 19, 2018

Great course, very challenging as problems are NP-hard and hence force you to find the right approaches for various problem set sizes. After a while, you get hooked and tried to find better and better solutions, reviewing videos for overlooked information, looking at research papers and available resources on the net. Programming times are only a minimum and I spent much more time than indicated.

By Max B

â€¢Jan 24, 2017

This course is absoutely excellent. It has really time consuming and challenging programming assignments, but I learned more than I have in a long while. I could not recommend this course more highly, and I have completed 20+ MOOCs. This is one of the best ones by far. :D

By Adrian F M

â€¢Feb 6, 2017

I like the instructor teaching approach and the evaluation system, the subject itself took me a lot of effort and i think the LNS technique should be teached just after local search.

By PaweÅ‚ W

â€¢Sep 1, 2018

Most difficult on-line course I've ever had. Demanding and engaging at the same time. Good luck to people without IT background :D.

By Rafael H

â€¢Aug 8, 2021

My master's internship involved developing and improving an existing planning system, in its underlying it uses optimization to solve rich VRP problems. After I finished my thesis I kept working with VRP and optimisation. We develop tailored models for specific problems of our clients. From my experience, an optimization method is not enough to solve a problem, sometimes we have to use CP, SAT solvers, dynamic programming to solve sub-problems. One example is distributing products by compartments for fuel and liquids transports. This course was amazing and real shows what is intractability and NP-Hardness, for simple problems but with an huge temporal growth in optimization time. I'm familiar with some local search algorithms, but I had never understood the real difference between LP, MIP and CP. This course gave me a clean explanation of the principles behind this solvers. Regarding the assignments, the grading system is amazing. I did not spend more than a day in each assignment, but I hope in the future to have some time to improve the algorithms. Congratulations for the professors which provided excellent educational material and all the ones that made possible for this content to be available.

By Alan A

â€¢Jun 3, 2022

The core of the learning for course was in the assignments. I personally enjoyed the their structure, which was highly computational and focused on output without restricting your choice of approach. Each student could choose either to stick with tool that they are already comfortable with, or break out and experiment with something new. (For me, that was Mixed Integer Programming tools like Pyomo, GLPK and XPress.) The note that the assignments will take 12-15 hours per week is something to factor in. If you're someone who suffers from 'just one more run to improve this score' syndrome, you will likely spend that time and more.

The lectures were very informative about the topics, and Prof. von Hentenryck had an engaging style. It is clear he has tought this course many times and has polished both the material and his presentation of it.

My only criticism is that at the end of the course, the material started getting into esoterica about specific problems, e.g. hyper-specific algorithms for handling the travelling saleman problem. While interesting, it raised more questions than it answered in my mind; it could have been left out of the course without affecting the student experience.

By Akash S

â€¢Jul 2, 2019

I am sure this is the best course out there to help students/Professionals to understand the complexity of the optimization problems specially designed and explained by Professor Pascal Van Hentenryck in his own hilarious style . The assignments are really challenging and make you up to try different strategies. Most of the times the classical approaches like Mixed Integer programming and Constraint Programming fail to provide solution in a reasonable time.But that's when you become of intuitive developing your own ideas/ heuristics.This course covers a lot of optimization concepts like dynamic programming, Constraint Programming ,Mixed Integer programming and Local search.

Waiting for the next one!.. Till then keep optimizing ....

- AWS Cloud A Practitioner's Guide
- Basics of Computer Programming with Python
- Beginners Python Programming in IT
- Developing Professional High Fidelity Designs and Prototypes
- Get Google CBRS-CPI Certified
- Introduction to MATLAB Programming
- Learn HTML and CSS for Building Modern Web Pages
- Learn the Basics of Agile with Atlassian JIRA
- Managing IT Infrastructure Services
- Mastering the Fundamentals of IT Support

- Basics of Computer Programming with Python
- Beginners Python Programming in IT
- Building a Modern Computer System from the Ground Up
- Getting Started with Google Cloud Fundamentals
- Introduction to Cryptography
- Introduction to Programming and Web Development
- Introduction to UX Design
- Learn HTML and CSS for Building Modern Web Pages
- Mastering the Fundamentals of IT Support
- Utilizing SLOs & SLIs to Measure Site Reliability

- Building an Agile and Value-Driven Product Backlog
- Foundations of Financial Markets & Behavioral Finance
- Getting Started with Construction Project Management
- Getting Started With Google Sheets
- Introduction to AI for Non-Technical People
- Learn the Basics of SEO and Improve Your Website's Rankings
- Mastering Business Writing
- Mastering the Art of Effective Public Speaking
- Social Media Content Creation & Management
- Understanding Financial Statements & Disclosures