• To demonstrate how the study of algorithmics has been applied in a number of different domains.
• To introduce formal concepts of measures of complexity and algorithms analysis.
• To introduce fundamental methods in data structures and algorithms design.
• To make students aware of computationally hard problems and possible ways of coping with them.
A Describe the different classes of algorithms and design principles associated with them; Illustrate these classes by examples from classical algorithmic areas, current research and applications.
B Identify the design principles used in a given algorithm, and apply design principles to produce efficient algorithmic solutions to a given problem
C Have fluency in using basic data structures in conjunction with classical algorithmic problems
D Be familiar with formal theories providing evidence that many important computational problems are inherently intractable, e.g., NP-completeness.
This module will be delivered by a combination of formal lectures and tutorials.