subject
Intro

Coursera: Discrete Optimization

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

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.

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.

Knapsack
These lectures introduce optimization problems and some optimization techniques through the knapsack problem, one of the most well-known problem in the field. It discusses how to formalize and model optimization problems using knapsack as an example. It then reviews how to apply dynamic programming and branch and bound to the knapsack problem, providing intuition behind these two fundamental optimization techniques. The concept of relaxation and search are also discussed.

Constraint Programming
Constraint programming is an optimization technique that emerged from the field of artificial intelligence. It is characterized by two key ideas: To express the optimization problem at a high level to reveal its structure and to use constraints to reduce the search space by removing, from the variable domains, values that cannot appear in solutions. These lectures cover constraint programming in detail, describing the language of constraint programming, its underlying computational paradigm and how it can be applied in practice.

Local Search
Local search is probably the oldest and most intuitive optimization technique. It consists in starting from a solution and improving it by performing (typically) local perturbations (often called moves). Local search has evolved substantially in the last decades with a lot of attention being devoted on which moves to explore. These lectures explore the theory and practice of local search, from the concept of neighborhood and connectivity to meta-heuristics such as tabu search and simulated annealing.

Linear Programming
Linear programming has been, and remains, a workhorse of optimization. It consists in optimizing a linear objective subject to linear constraints, admits efficient algorithmic solutions, and is often an important building block for other optimization techniques. These lectures review fundamental concepts in linear programming, including the infamous simplex algorithm, simplex tableau, and duality. .

Mixed Integer Programming
Mixed Integer Programming generalizes linear programming by allowing integer variables, which dramatically changes the complexity of the problems but also broadens the potential applications significantly. These lectures review how to model problems in mixed-integer programming and how to solve mixed-integer programs using branch and bound. Advanced techniques such as cutting planes and polyhedral cuts are also covered.

Advanced Topics: Part I
These lectures cover some more advanced concepts in optimization. They introduce constraint-programming techniques for scheduling and routing.

Advanced Topics: Part II
These lectures continues to cover some more advanced concepts in optimization. They introduce large neighborhood search, which often combines constraint programming and local search, and column generation which decomposes an optimization model into a master and pricing problem, using more complex variables.

12 Student
reviews
Cost Free Online Course (Audit)
Pace Upcoming
Provider Coursera
Language English
Certificates Paid Certificate Available
Hours 10-20 hours a week
Calendar 8 weeks long
Sign up for free? Learn how

Disclosure: To support our site, Class Central may be compensated by some course providers.

+ Add to My Courses
FAQ View All
What are MOOCs?
MOOCs stand for Massive Open Online Courses. These are free online courses from universities around the world (eg. Stanford Harvard MIT) offered to anyone with an internet connection.
How do I register?
To register for a course, click on "Go to Class" button on the course page. This will take you to the providers website where you can register for the course.
How do these MOOCs or free online courses work?
MOOCs are designed for an online audience, teaching primarily through short (5-20 min.) pre recorded video lectures, that you watch on weekly schedule when convenient for you.  They also have student discussion forums, homework/assignments, and online quizzes or exams.

Reviews for Coursera's Discrete Optimization
4.3 Based on 12 reviews

  • 5 stars 67%
  • 4 stars 17%
  • 3 star 8%
  • 2 star 0%
  • 1 star 8%

Did you take this course? Share your experience with other students.

Write a review
  • 1
4.0 3 years ago
by Gregory J Hamel ( Life Is Study) completed this course and found the course difficulty to be very hard.
Discrete optimization is a quasi-self-paced programming course offered by the University of Melbourne through Coursera that is all about solving hard problems. Hard problems in the context of this course means NP-hard problems--problems with exponential worst-case running times. The course differs from most classes on Coursera and elsewhere on the web in that all the materials are available as soon as the course opens, but there is a final deadline for the programming assignments, so it is not a self-paced course in the truest sense. The entire course grade is based on 5 programming assignments: the knapsack problem, graph coloring, traveling salesman, warehouse location and vehicle routing. An average score of 7 (out of 10) on each part of each programming assignment is required to earn a certificate.

Discrete optimization opens with an introductory lecture series on the knapsack problem that lasts a couple of hours followed by three longer lecture series, covering constr
Read more
Discrete optimization is a quasi-self-paced programming course offered by the University of Melbourne through Coursera that is all about solving hard problems. Hard problems in the context of this course means NP-hard problems--problems with exponential worst-case running times. The course differs from most classes on Coursera and elsewhere on the web in that all the materials are available as soon as the course opens, but there is a final deadline for the programming assignments, so it is not a self-paced course in the truest sense. The entire course grade is based on 5 programming assignments: the knapsack problem, graph coloring, traveling salesman, warehouse location and vehicle routing. An average score of 7 (out of 10) on each part of each programming assignment is required to earn a certificate.

Discrete optimization opens with an introductory lecture series on the knapsack problem that lasts a couple of hours followed by three longer lecture series, covering constraint programming, local search and mixed integer programming. The lectures do not need to be viewed in any particular order. Similarly, students can work on the homework projects in any order they choose. This level of freedom is great for students who want to work ahead but it may make it difficult to complete the course if you don't plan ahead because the programming assignments can be very time consuming. The assignment skeleton and submission code is written in Python 2.7, but you can use languages if you want.

The professor, Pascal Van Hentenryck, is extremely energetic and passionate about the subject. He makes the lecture videos surprisingly fun for such a dense subject. The lecture videos themselves are well-made and the professor does a good job explaining the material, although I sometimes felt like the course was trying to cover too many different topics and it wasn't always clear how one would go about applying the methods in lecture to the assignments or using them without using some external package or solver. A little more instruction and direction in that regard would be helpful.

Discrete optimization is challenging course with great programming assignments that introduces many different tools and leaves them on the table for you to play with. The tools don't always with full instruction manuals, so you'll have to figure out many of the details yourself. You won't have time to apply every tool to every problem, but if you focus on one and budget your time well, you'll have a good shot at making it through.

I give discrete optimization 4 out of 5 stars: Very Good.
6 people found
this review helpful
Was this review helpful to you? Yes
3.0 4 years ago
Mark Wilbur partially completed this course.
I was really torn on this class. On one hand, it focuses on really cool problems. If you’ve ever wanted to know how best to handle intractable problems like the traveling salesman problem or the map coloring problem, this is your course. Prof Pascal Van Hentenryck’s explanations of the problems were top-notch and his enthusiasm was just contagious! Unfortunately, he chose to use only “pseudo-code” in lecture examples. This made deciphering his algorithms needlessly troublesome. Worse yet, his pseudo-code wasn’t similar to Javascript, Ruby, C, Java, Lisp or any other major language. Instead it was most similar to his own commercial language, Comet. Also, we were free to solve the problems in any order we chose, so long as we did one per week. Furthermore, we were allowed to return to previous assignments as we learned new techniques apply them for a better ranking. I loved that!
8 people found
this review helpful
Was this review helpful to you? Yes
5.0 3 years ago
Wei En dropped this course, spending 6 hours a week on it and found the course difficulty to be very hard.
This course was excellently designed.

Students who prefer a rigid workflow and hand-holding will strongly dislike this course, as its content is quite challenging. However, students who like a flexible schedule and exploration will appreciate the effort placed into making this course catered just for that.

Professor Pascal Van Hentenryck gives very good explanations and makes use of visuals to help students understand the content. Furthermore, there is a leaderboard for the 6 problems which are tackled in this course, where students get to challenge themselves to produce excellent solutions. The videos are released all at once for students to go through the course in whatever way they want.

Also, this is one of the few courses where the professor is actively following the students. A weekly video is released describing the course situation and giving some interesting information.

Unfortunately, I was unable to complete this course due
Read more
This course was excellently designed.

Students who prefer a rigid workflow and hand-holding will strongly dislike this course, as its content is quite challenging. However, students who like a flexible schedule and exploration will appreciate the effort placed into making this course catered just for that.

Professor Pascal Van Hentenryck gives very good explanations and makes use of visuals to help students understand the content. Furthermore, there is a leaderboard for the 6 problems which are tackled in this course, where students get to challenge themselves to produce excellent solutions. The videos are released all at once for students to go through the course in whatever way they want.

Also, this is one of the few courses where the professor is actively following the students. A weekly video is released describing the course situation and giving some interesting information.

Unfortunately, I was unable to complete this course due to the level of difficulty. I am planning to retake this course when I have gained a better understanding of the fundamental concepts.
5 people found
this review helpful
Was this review helpful to you? Yes
1.0 4 years ago
Wickwack partially completed this course, spending 6 hours a week on it and found the course difficulty to be hard.
I appreciated the sense of humor, the goofy costumes even. But after the first unit, in my experience, the course becomes almost unworkable. The lectures are long, rambling, and often off-topic. The programming assignments are difficult, and very little can be gleaned from the lectures that directly helps in solving the problems. In the end, I made several time-consuming attempts at solving the 2nd and 3rd assignments, before giving up.

After the first unit, Professor Van Hentenryck does very little to show actual techniques for solving the given problems. The goal, it seems, is for the students to come up with their own. While I understand this to a point, for a newcomer to the field, this is an extremely inefficient way of doing things. I spent hours debugging a solution, only to find the solution wouldn't actually solve the problem.

If I were already versed in this area, I might well have enjoyed this format.
5 people found
this review helpful
Was this review helpful to you? Yes
5.0 4 years ago
Anonymous completed this course.
Outstanding! Very challenging, but rewarding!

All materials are available from the beginning.

Scores are based on several types of problems. For each one, you code algorithms and run them.

Although many techniques are covered in the lectures,

it's up to you to figure out which one will work for particular problem and how to get it done, so creativity and some experience would help.
2 people found
this review helpful
Was this review helpful to you? Yes
5.0 4 years ago
Anonymous completed this course.
Amazing class, large real world problems in vehicle routing, warehouse location tackled as programming assignments. Expect to spend a lot of time on the programming assignments if you intend to get a statement of accomplishment or better.
2 people found
this review helpful
Was this review helpful to you? Yes
5.0 3 years ago
by Juan Ignacio Gil Gómez completed this course, spending 10 hours a week on it and found the course difficulty to be very hard.
Hard course, with very open and hard programming tasks. Requires a lot of work to get it done, but it's the most rewarding MOOC I've ever done.
3 people found
this review helpful
Was this review helpful to you? Yes
5.0 3 years ago
Anonymous partially completed this course.
Great courses. Assignements are hard, do not try to get 10/10 or you will spend your life on it.

Thank you teacher.
1 person found
this review helpful
Was this review helpful to you? Yes
5.0 2 years ago
by Michael A. Alcorn completed this course.
1 person found
this review helpful
Was this review helpful to you? Yes
4.0 2 years ago
by Juliano Ignacio audited this course.
1 person found
this review helpful
Was this review helpful to you? Yes
5.0 2 years ago
by Asr dropped this course.
0 person found
this review helpful
Was this review helpful to you? Yes
5.0 a year ago
by Noah completed this course.
Was this review helpful to you? Yes
  • 1

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free