MATH36061 - Convex Optimization

School of Mathematics – The University of Manchester

Course Information

Lecture Thursday 9-11pm Simon Building 2.60
Tutorials Tuesday 1-2pm Roscoe Building 2.2

The course is intended as an introduction to convex optimization, focusing 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

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 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 helpful 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 may also want to install the Anaconda Python distribution.

Make sure to install the version 2.7 and to install CVXPY following the instructions on the page. While I strongly encourage you to work through the code presented throughout the lectures, the programming part will not be evaluated and will not be part of the examination.


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 announced in due course.

Recommended Literature

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