CS244 Algorithm Design
Academic Aims
Algorithms are fundamental to programming and to understanding computation. The purpose of this module is to provide students with a coherent knowledge of techniques for designing algorithms, and with the tools for applying these techniques to computational problems. Teaching and learning methods include lectures and reading material which describe algorithmic techniques and applications of these techniques to specific problems. A problem sheet gives students an opportunity to practice problem solving.
Learning Outcomes
On completion of the module the student should be able to:
- Understand a variety of techniques for designing algorithms.
- Understand a wide variety of data structures and should be able to use them appropriately to solve problems.
- Understand some fundamental algorithms.
Content
- Tree and graph algorithms: Dijkstra's shortest path, toplogical sort, Kruskal and Prim's algorithms for minimum weight spanning tree
- Divide-and-Conquer
- Dynamic programming
- Greedy heuristics
- Intractability
