MS&E 114/214: Applied Optimization

Aut 2024-25

Tu, Th 1:30-2:50pm
Hewlett Teaching Center 201

INSTRUCTOR
Ashish Goel
ashishg@stanford.edu, 650 814 1478
Office Hours: Wed 5-6 pm in person (Huang 203), 7-8 pm on Zoom.

TEACHING ASSISTANTS
Mohak Goyal
mohakg@stanford.edu
Office Hours: Monday 5-6:30 pm, Shriram SB33.

Annie Wang
jingyi.annie.wang@stanford.edu
Office Hours: Wed 9-10 am, on Zoom.


Problem Sessions: Fri 1:30-2:30 (optional; the TAs will solve one or two example problems). Location: on Zoom.

Week 10 Updates; extra OH and Problem Sessions

IMPORTANT NOTES
DESCRIPTION
This class will illustrate applications of optimization principles such as linear and non-linear programming, decision making under uncertainty, and dynamic programming in several important real-world scenarios, including Machine Learning, Market Design, Logistics and Revenue Management, Centralized and Decentralized Finance, and Social Choice and Welfare. While we will also provide a rigorous introduction to many of these techniques, the focus will be on applications. There will be several hands-on assignments that will require you to deal with large and complex data sets. Hands-on work will be in both Python and Microsoft Excel Solver, but no prior knowledge will be assumed. Prerequisite: CME 100, MATH 51, or equivalent.

OBJECTIVE
To enable students to apply optimization in complex real-world settings. Expose students to how optimization works in conjunction with data science and product management. Expose students to specific domains from the social sciences, technology, finance, and business where optimization plays a key role.

DETAILED PLAN
This class will be structured in multiple modules, each revolving around an applied area, and each involving a substantial HW, and a guest lecture. We will assume familiarity with basic linear programming and basic python, but we will also review linear programming at the beginning of the class in sufficient detail for a mathematically well-prepared student to pick it up, and we will also provide basic templates for linear programming in python. The focus of the class will be on applications, and not on theorem proving or getting very deep into techniques. The list of modules is given below.
  1. Introductory techniques. 1.5 weeks. Review of Linear Programming and Duality, A quick introduction to Quadratic Programming, Convex Optimization, KKT conditions, dynamic programming, stochastic programming. This module will not be contiguous; rather techniques will be introduced as needed. Most techniques will be used at least twice.
  2. Social Choice and welfare. 2 weeks. Participatory Budgeting, Representational Robustness, Ordinal vs cardinal social choice, cake cutting and rent division (Walrasian equilibrium), Nash welfare and fair resource allocation.
  3. Optimization in Machine Learning. 2 weeks. Regression; Support Vector Machines; gradient descent and neural networks; Markov Decision Processes and decision making under uncertainty.
  4. Finance and Decentralized Finance. 2 weeks. Portfolio optimization using Quadratic Programming; replication and arbitrage; Cryptocurrency exchanges.
  5. Matching Markets, computational advertising, and logistics. 2 weeks. Driver assignment for Uber; adword optimization; revenue management; examples from supply chains.
  6. Class wrap-up and special topic. 1 week.

REQUIREMENTS
HANDOUTS
The handouts will be constantly updated. You can look at last year's class for an example of the problems and the curriculum, though this year will be a little different.