Learning Outcomes:
1. Be able to formulate real world optimization problems and incorporate uncertainty.
2. Be capable of implementing optimization solvers.
3. Convert problems to their dual formulation.
4. Be able to prove basic results on convex optimization.