Module Leader

Dr Nicolas Rojas

+44 (0)20 7594 3541

Learning Outcomes

On successful completion of the module, students should be able to:
  • Apply algorithm analysis techniques to determine the running time of algorithms and how a programme performs and scales with problem size;
  • Understand the basic principles and foundational techniques for designing algorithmic solutions for unseen problems;
  • Use general design methods for devising programmes that are asymptotically efficient;
  • Implement well-known, high-level algorithms and adapt them efficiently to new applications;
  • Design, implement, and analyze their own algorithms and data structures.


Description of Content

This module builds on the first programming module DE1-COM1 to extend the skills acquired there to learn the principles of algorithmic problem solving, with a focus on asymptotic efficiency.

The aim of this module is to provide students with the design concepts, theoretical foundations, and hands-on experience to efficiently construct their own algorithms and data structures for solving general or particular problems. To this end, the module covers:
  • The basic techniques for analysing the running time of algorithms, including asymptotic notation and combinatorics;
  • The basic principles and paradigms of algorithm design, including reduction and recursion, decomposition, and dynamic programming;
  • The representation of well-known data structures in Python, in particular graphs and trees;
  • The implementation of well-known, high-level algorithms in Python for matching, searching, sorting, and traversing.