This course introduces the theory and application of modern convex optimization from an engineering perspective. 

Convex optimization is a fundamental branch of applied mathematics that has applications in almost all areas of engineering, the basic sciences and economics. For example, it is not possible to fully understand support vector machines in statistical learning, nodal pricing in electricity markets, the fundamental welfare theorems in economics, or Nash equilibria in two-player zero-sum games without understanding the duality theory of convex optimization.

The course primarily focuses on techniques for formulating decision problems as convex optimization models that can be solved with existing software tools. The exact formulation of an optimization model often determines whether the model can be solved within seconds or only within days, and whether it can be solved for ten variables or up to 10^6 variables. The course does not address optimization algorithms but covers the theory that is necessary to follow advanced courses on algorithm design.