# Online courses

Online courses are a great way to learn about optimization modelling. There are many courses available, ranging from general introductions to linear programming to deep dives into specific advanced topics. We focus on courses that are available for free or for a small fee.

A curated list of awesome mathematical optimization courses, lectures, books, notes, libraries, frameworks and software.

The list consists mainly of links to optimization courses, though other resources are also included:

- Video Lectures and Courses. Covers a wide range of topics, inlcuding: convex optimization; discrete, combinatorial; and integer optimization; Operations Research; constraint programming; continuous optimization; and stochastic optimization and control.
- Books and lecture notes. Categories: Operations Research, convex optimization, constraint programming, combinatorial optimization, and stochastic optimization.
- Other resources. Includes tools, solvers, and libraries; repositories; and conferences.

Github: Awesome Optimization Courses.

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.

Coursera: Discrete optimization.

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. 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 series consists of the following courses:

Coursera: Basic modeling for discrete optimization.

Coursera: Advanced modeling for discrete optimization.

Coursera: Solving algorithms for discrete optimization.

Operations Research (OR) is a field in which people use mathematical and engineering methods to study optimization problems in Business and Management, Economics, Computer Science, Civil Engineering, Industrial Engineering, etc.

This course introduces frameworks and ideas about various types of optimization problems in the business world. In particular, we focus on how to formulate real business problems into mathematical models that can be solved by computers.

This series consists of the following courses:

Coursera: Operations Research (1): Models and applications.

Coursera: Operations Research (2): Optimization algorithms.

Coursera: Operations Research (3): Theory.

In this data-driven world, companies are often interested in knowing what is the "best" course of action, given the data. For example, manufacturers need to decide how many units of a product to produce given the estimated demand and raw material availability? Should they make all the products in-house or buy some from a third-party to meet the demand?

Prescriptive Analytics is the branch of analytics that can provide answers to these questions. It is used for prescribing data-based decisions. The most important method in the prescriptive analytics toolbox is optimization.

This course will introduce students to the basic principles of linear optimization for decision-making. Using practical examples, this course teaches how to convert a problem scenario into a mathematical model that can be solved to get the best business outcome. We will learn to identify decision variables, objective function, and constraints of a problem, and use them to formulate and solve an optimization problem using Excel solver and spreadsheet.

Coursera: Optimization for decision making.

Learn the basics of constraint programming from the implementation of solvers to modeling techniques for solving concrete combinatorial problems such as routing and scheduling.

What you'll learn in this course:

- Understand the constraint programming paradigm.
- Design and implement a modern constraint programming library.
- Model using the constraint programming.
- Extend the solver with new global constraints.
- Design custom and black-box searches.
- Approach Scheduling and Vehicle Routing problems with constraint programming.

EdX: Constraint Programming.

This course concentrates on recognizing and solving convex optimization problems that arise in applications.

The syllabus includes:

- Convex sets, functions, and optimization problems.
- Basics of convex analysis.
- Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems.
- Optimality conditions, duality theory, theorems of alternative, and applications.
- Interior-point methods.
- Applications to signal processing, statistics and machine learning, control and mechanical engineering, digital and analog circuit design, and finance.

EdX: Convex optimization.

Learn the mathematical and computational basics for applying optimization successfully. Master the different formulations and the important concepts behind their solution methods. Learn to implement and solve optimization problems in Python through the practical exercises.

This course is useful to students of all engineering fields. The mathematical and computational concepts that you will learn here have application in machine learning, operations research, signal and image processing, control, robotics and design to name a few.

We will start with the standard unconstrained problems, linear problems and general nonlinear constrained problems. We will then move to more specialized topics including mixed-integer problems; global optimization for non-convex problems; optimal control problems; machine learning for optimization and optimization under uncertainty. Students will learn to implement and solve optimization problems in Python through the practical exercises.

Massachusetts Institute of Technology OpenCourseWare (MIT OCW) is a free and open collection of material from thousands of MIT courses, covering the entire MIT curriculum. There is no enrollment or registration required to access the courses.

All content is freely available, with no signup, and no start or end dates. Most of the content can be either viewed online or downloaded.

Many optimization modelling papers are available in the MIT OCW, including:

MIT OCW: Optimization methods in Management Science.

MIT OCW: Introduction to mathematical programming.

MIT OCW: Introduction to convex optimization.

MIT OCW: Optimization methods.

MIT OCW: Network optimization.

MIT OCW: Integer programming and combinatorial optimization.

This course concentrates on recognizing and solving convex optimization problems that arise in engineering.

Applications to signal processing, control, digital and analog circuit design, computational geometry, statistics, and mechanical engineering.

There are two parts:

- Part I. Basics of convex analysis, including least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems.
- Part II. Extends Part I, covering topics that include subgradient, cutting-plane, and ellipsoid methods, plus decentralized convex optimization via primal and dual decomposition.

Stanford: Convex optimization I.

Stanford: Convex optimization II.