Skip to main navigationSkip to main content
The University of Southampton

MATH2014 Algorithms

Module Overview

Algorithms are systematic methods for solving mathematical problems, such as sorting numbers in ascending order, finding the cheapest way to ship goods on the road network or finding the shortest path in a graph. They can be regarded as practical applications of mathematical proofs, and also as theoretical models of computational techniques. This module introduces some basic concepts related to algorithms, their implementation and their efficiency, using simple examples drawn from many areas of mathematics including Graph Theory and Operational Research (no previous knowledge of these topics is required, but having taken MATH1058 may help). The main aim of the module is designing algorithms for solving a wide range of problems, studying their computational complexity, and understanding whether a given problem may or may not admit an efficient algorithm for its solution.

Aims and Objectives

Learning Outcomes

Knowledge and Understanding

Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:

  • Analyse the worst-case running time of an algorithm
  • Understand why algorithms for a range of problems including sorting, shortest path, network flow, matchings, produce the correct solution, and apply these algorithms to given instances
  • Understand the concept of NP-completeness and its implications
Subject Specific Intellectual and Research Skills

Having successfully completed this module you will be able to:

  • Derive worst-case performance bounds for some simple algorithms
Subject Specific Practical Skills

Having successfully completed this module you will be able to:

  • Design an algorithm for certain types of problem


Basic concepts. Introduction to algorithms. Recap on computational complexity and asymptotic estimates of running times and on sorting algorithms. Divide and conquer algorithms. Examples on sorting, scalar multiplication, and matrix multiplication. Graphs and networks. Basic graph theory definitions. Algorithms for the reachability problem in a graph. Spanning trees. Algorithms for finding a minimum-cost spanning tree in a graph. Shortest paths. Algorithms for finding one or more shortest paths in graph with nonnegative arc or general arc lengths but not negative length circuits. Network flow algorithms. Flows in capacitated networks, algorithms to find a maximum flow in a network and max-flow min-cut theorems. Matchings. Elements of matching theory, including algorithms to find an optimal weighted and unweighted matching in bipartite graphs, the Koenig-Egervary theorem and the relationship with the vertex cover problem. Computational complexity theory. The P and NP classes. Polynomial reductions. NP-completeness and NP-hardness. Elements of exponential-time algorithms. Elements of branch and bound. Elements of dynamic programming

Learning and Teaching

Teaching and learning methods

Lectures, problems class, private study

Independent Study102
Total study time150

Resources & Reading list

Assignment Problems. Background reading

Algorithms. Background reading

There is no required book, although the following book provides some useful background reading. 



MethodPercentage contribution
Coursework 40%
Written assessment 60%


MethodPercentage contribution
Written assessment 100%

Repeat Information

Repeat type: Internal & External

Linked modules

Pre-requisites: MATH1048 and MATH1059

Share this module Share this on Facebook Share this on Twitter Share this on Weibo
Privacy Settings