Software Engineering - Algorithms

Module aims

The Algorithms course aims to enhance algorithmic thinking and problem solving. Fundamental, advanced algorithms are discussed and analysed in detail.

Learning outcomes

Knowledge and Understanding

To expand student's thinking about algorithms and algorithmic design paradigms

To expose students to several new classes of computational problems and concrete algorithmic solutions

To give students a sense for general (or commonly useful) approaches to algorithmic thinking

Intellectual Skills

To compare, characterize and evaluate different implementations of basic algorithms

To design efficient algorithms for practical problems

To specify which algorithms can be applied to which class of problems

Practical Skills

To implement efficient algorithms for practical problems

To perform analysis of algorithms using quantitative evaluation

To apply basic algorithms to new problems

Module syllabus

The course provides students with knowledge of several generally useful advanced algorithms and algorithmic design paradigms. Topics covered include:

  • Complexity Analysis
  • Divide and Conquer
  • Dynamic Programming
  • Greedy Algorithms
  • Randomised Algorithms
  • String Matching Algorithms
  • Advanced Graph Algorithms
  • Visualising Algorithms



Teaching methods

A total of 18 sessions

There are 9 sessions of 2 hours lectures, and 9 sessions of 1 hour tutorials


There will be an examination and two assessed courseworks with programming exercises.

Reading list



Module leaders

Dr Ben Glocker