Optimisation is the process of maximizing or minimizing some objective of interest, while satisfying constraints. Optimisation problems are fundamental and ubiquitous in the study of machine learning, signal processing, and statistics. This subject will develop the mathematical theory, introduce useful tools, and explain the algorithms and their implementation. A variety of distinct optimisation problem types will be encountered including linear programming, nonlinear problems, as well as various unconstrained problems. Real world instances of such problems will be considered, and solution methods for such problems will be studied. A basic knowledge of calculus and real analysis is assumed.