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_

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
Prerequisites:
? 
COMP2123 OR COMP2823 OR INFO1105 OR INFO1905
Corequisites:
? 
None
Prohibitions:
? 
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 2 weeks before the first day of teaching for the relevant session.