Dr Nicolas Rojas
+44 (0)20 7594 3541
Learning OutcomesOn 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 ContentThis 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.