1. Convexity
2. Gradient and subgradient methods
3. Duality and conjugate functions
4. Proximal algorithms
5. Limits of performance
6. Accelerated methods
7. Coordinate descent
8. Conditional gradient
9. Monotone operators
10. Operator splitting methods
11. Stochastic gradient descent
12. Variance reduction techniques and limits of performance
13. Newton and quasi-Newton methods
14. Nonsmooth and stochastic second-order methods
15. Conjugate gradients
16. Sequential convex programming
17. Architectures and algorithms for parallel optimisation
18. Decomposition and parallelization
19. Asynchrony I – time-varying update rates and information delays
20. Asynchronous computations II – random effects and communication efficiency