5024.10 - Algorithms and Data Structures

Course number
Algorithms and Data Structures
• To introduce the notation, terminology, and techniques underpinning the study of algorithms. • To introduce the standard algorithmic design paradigms employed in the development of efficient algorithmic solutions. • To introduce the mathematical tools needed for the analysis of algorithms in terms of the use of formal models of Time and Space.
• describe standard algorithms such as sorting algorithms, search algorithms, string matching algorithms, graph traversal algorithms; • apply these algorithms or a given pseudo code algorithm in order to solve a given problem; • carry out simple asymptotic analyses of algorithms involving sequence, selection, and iteration, and identify and compare simple properties of these algorithms; • describe the algorithm design principles of divide-and-conquer, greedy method, and dynamic programming and distinguish the differences between these principles; • apply the studied algorithms that illustrate these design principles; • apply the studied design principles to produce algorithmic solutions to a given problem; • explain and illustrate the distinction between different classes of problems, in particular, polynomial time and exponential time solvable problems.
Learning and teaching approaches
Lectures and problem solving.
Assessment method
 4-hour written examination on 14th May, 2012  NOT allowed to take any materials related to the course  100% contribution to the final marks
Qin Xin