The task of efficiently finding the maximum or the minimum value of a function subject to constraints on its domain has classically be of fundamental importance in many areas of computer science (e.g., machine learning), engineering, and logistics. In the last fifty years, optimization became the cornerstone of computational finance, where the need for efficient methods becomes as extreme as the speed of investing.

In this course we introduce the main classes of optimization problems (linear, quadratic, convex, integer, stochastic, and robust) and the algorithms to efficiently compute the optimum in each case

We ground the theory into practice by discussing, for each optimization class, one or more applications to problems from computational finance, from cash management to portfolio optimization, to the construction of index funds.

Among the topics covered in the course:

- Linear Programming, the Simplex Algorithm, Short-term financing, and asset pricing;
- Integer programming, Gomory cuts, and constructing an index fund;
- Non-linear programming, Newton's method, gradient descent, and volatility estimation;
- Quadratic programming, the interior point method, and mean-variance optimization;
- Stochastic programming, two-stage problems, and risk measures;
- Robust optimization, uncertainty sets, and robust portfolio selection.