Skip to main content

During 2021 we will continue to support students who need to study remotely due to the ongoing impacts of COVID-19 and travel restrictions. Make sure you check the location code when selecting a unit outline or choosing your units of study in Sydney Student. Find out more about what these codes mean. Both remote and on-campus locations have the same learning activities and assessments, however teaching staff may vary. More information about face-to-face teaching and assessment arrangements for each unit will be provided on Canvas.

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
Prerequisites:
? 
Distinction level results in (COMP2123 OR COMP2823 OR INFO1105 OR INFO1905)
Corequisites:
? 
None
Prohibitions:
? 
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