Lecture | Tuesday 1-2pm | ATB G.108 |

Thursday 9-10am | Univ. Place 6.212 | |

Tutorials | Thursday 10-11am | Univ. Place 10-11am |

The course is intended as an introduction to convex optimization, focussing on the theory, the modelling techniques, and the algorithm analysis and design. Recent developments such as convex regularization and compressed sensing will be discussed. The problem sessions will be used to present applications from machine learning, signal processing, and finance. The course will be based, but not depend exclusively, on material from the books

- Stephen Boyd and Lieven Vandenberghe. Convex Optimization. Cambridge University Press, 2004.
- Aaron Ben-Tal and Akadi Nemirovski. Lectures on Modern Convex Optimization. 2013.
- Yuri Nesterov. Introductory Lectures on Convex Optimization. Springer, 2004.

The first of these is freely available.

Some more general information on the course can be found on the course description page. This course is part of the **Numerical Analysis Pathway**.

## Lecture Notes

Lecture notes will be published regularly, usually right before or after the lecture, as Jupyter notebooks and pdf documents. The weekly blog entries with the lecture content can be accessed through the Lectures menu, on SageMathCloud, or on Blackboard. A complete and revised set of lecture notes in one document will be made available towards the end of the lectures.

**Note what while the notes may be available at the beginning of the week, they may be adjusted toward the end of each week to better reflect the lecture content.**

## Problem Sheets

The problem sheets contain a set of problems to be worked on at home, and some that will be worked on during the example classes, starting in Week 2. Solutions will be made available. The problems will be both theoretical and computational. The problem sheets are available on the Assignments menu, on the weekly blog, on Blackboard and on SageMathCloud.

## Jupyter and Python

Optimization is all about computation, and it is therefore essential to be acquainted with a programming language or a computing system. This course will use the Python programming language with the CVXPY package.

- Steven Diamond and Stephen Boyd, CVXPY – A Python-Embedded Modeling Language for Convex Optimization.

A recommended introduction to Python is

- Stefan Güttel and Vedran Šego, MATH20622 – Programming with Python

Python code can be executed using Jupyter notebooks; these are web-based documents that combine code, text, and different types of media.

You will get an account on SageMathCloud, from where you will have access to all the Jupyter notebooks used in the lecture.

Instructions on how to set up your account on SageMathCloud are available here.

You may also want to install the Anaconda Python distribution.

- Continuum Analytics, Anaconda Python .

Make sure to install the version 2.7 and to install CVXPY following the instructions on the page.

## Exams

Unless stated otherwise, **all** the covered material will be relevant for the exam. The exam will not include programming tasks or Python knowledge. A previous exam can be found on the Exams menu. A **coursework test** will be on November 8 in Chemistry G.53.

## Recommended Literature

- Stephen Boyd and Lieven Vandenberghe. Convex Optimization. Cambridge University Press, 2004.
- Jorge Nocedal and Stephen J.Wright. Numerical Optimization. Springer, 2006.
- Yuri Nesterov. Introductory Lectures on Convex Optimization: A basic course. Springer, 2004.
- Aaron Ben-Tal and Akadi Nemirovski. Lectures on Modern Convex Optimization. 2013.