Skip to main content
Unit of study_

COMP3927: Algorithm Design (Adv)

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 COMP3927
Academic unit Computer Science
Credit points 6
Distinction level results in (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905)
COMP2007 OR COMP2907 OR COMP3027
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 new algorithms by searching for descriptions in textbooks or online
  • LO3. read, understand, analyze and modify a given algorithm. Ability to design efficient algorithmic solutions for given problems and evaluate the proposal
  • LO4. demonstrate basic experience of implementing algorithms
  • LO5. analyze the complexity of a given algorithm
  • LO6. apply knowledge of fundamental algorithms to several problems, especially graph problems, testing graph properties and solving optimization problems on graphs. 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. 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.