Build on the intermediate-level Data Structures and Algorithms unit, progressing to advanced graduate-level topics in data structures, algorithms and complexity analysis that would not normally be seen in an undergraduate curriculum. When faced with a challenging software problem to solve, it is important to be familiar with a range of clever but general algorithms and data structures already developed in the field. When no ready-made solution exists, it is important to understand and be guided by the general principles of algorithm design and to draw upon the experience of the profession in creating new methods. You will learn how to analyse the computational complexity of new and existing algorithms, to determine their suitability for the task at hand. Most importantly, you will learn how to apply your knowledge to solve practical real-world problems.