Skip to main content
Unit of study_

COMP3027: Algorithm Design

This unit provides an introduction to the design techniques that are used to find efficient algorithmic solutions for given problems. The techniques covered include greedy, divide-and-conquer, dynamic programming, and adjusting flows in networks. Students will extend their skills in algorithm analysis. The unit also provides an introduction to the concepts of computational complexity and reductions between problems.

Code COMP3027
Academic unit Computer Science
Credit points 6
COMP2123 OR COMP2823 OR INFO1105 OR INFO1905
COMP2007 OR COMP2907 OR COMP3927
Assumed knowledge:
MATH1004 OR MATH1904 OR MATH1064

At the completion of this unit, you should be able to:

  • LO1. produce a clear account of an algorithm, that would allow others to understand and implement it
  • LO2. learn about a novel algorithm, by searching for descriptions in textbooks or online
  • LO3. read, understand, analyze and modify a given algorithm, as well as design efficient algorithmic solutions for given problems and evaluate the proposal
  • LO4. draw from basic experience of implementing algorithms
  • LO5. analyze the complexity of a given algorithm
  • LO6. demonstrate knowledge of fundamental algorithms for several problems, especially graph problems, testing graph properties and solving optimization problems on graphs, as well as knowledge of fundamental general algorithmic design techniques, such as greedy, dynamic programming and divide-and-conquer
  • LO7. understand the fundamental concepts of computational hardness
  • LO8. understand NP-hardness and the ways of dealing with hardness as well as demonstrate knowledge of randomized algorithms and approximation algorithms
  • LO9. demonstrate knowledge of basic complexity classes and understanding of reductions between problems.

Unit outlines

Unit outlines will be available 1 week before the first day of teaching for the relevant session.