Skip to main content Skip to navigation

MA934 - Numerical Algorithms and Optimisation (15 CATS)

Lecturer: Colm Connaughton

Module Aims

This is one of 4 core modules for the MSc in Mathematics of Systems. It teaches students the theory and implementation of a set of computational algorithms that provide the fundamental toolkit for advanced data analysis, simulation and optimisation. After completing this module, students will understand the theoretical underpinnings of the computational algorithms and optimisation methods that appear most frequently in advanced data analysis and mathematical modelling. They will gain experience of both discrete and continuous problems. Students will also acquire practical coding experience from implementing, testing and benchmarking these algorithms on specific problems drawn from a range of applications.


  • algorithmic structures (iteration, recursion, memoization) and computational complexity
  • data structures (linked lists, stacks and queues, binary indexed trees)
  • sorting and search algorithms
  • Fast Fourier Transform and its applications
  • Topics in numerical linear algebra: solving linear systems, conjugate gradient algorithm, singular value decomposition
  • unconstrained continuous optimisation: multivariate minimisation, Nelder-Mead algorithm, automatic differentiation, gradient descent
  • constrained continuous optimisation: method of Lagrange multipliers, linear programming

Illustrative Bibliography

W. H. Press et al., “Numerical recipes in C”, Cambridge University Press, 2017

Research articles to be provided to students


See main calendar for timetable

  • Per week: 2 x 2 hours of lectures, 2 x 2 hours of classwork
  • Duration: 5 weeks (first half of term 1)


For deadlines see Module Resources page

  • Written homework assignments (20%)
  • Written class test (40%) and
  • Oral examination (40%)