Skip to navigation | Skip to main content | Skip to footer

COMP36111 Advanced Algorithms 1 syllabus 2017-2018

COMP36111 materials

COMP36111 Advanced Algorithms 1

Level 3
Credits: 10
Enrolled students: 51

Course leader: Ian Pratt-Hartmann

Additional staff: view all staff


  • Pre-Requisite (Compulsory): COMP11120
  • Pre-Requisite (Compulsory): MATH10101
  • Pre-Requisite (Compulsory): MATH10111
  • Pre-Requisite (Compulsory): COMP26120

Additional requirements

  • Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.


    To enrol students are required to have taken COMP26120 and one of the following:  COMP11120, MATH10101 or MATH10111.

Assessment methods

  • 75% Written exam
  • 25% Coursework
Sem 1 Lecture 1.4 Thu 13:00 - 15:00 -
Themes to which this unit belongs
  • Programming and Algorithms


This course unit has two objectives. The first is to introduce the student to a range of advanced algorithms for difficult computational problems, including matching, flow networks and linear programming. The second objective is to ouline the mathematical techniques required to analyse the complexity of computational tasks in general. There are two pieces of assessed coursework, and an exam at the end.


This unit provides an advanced course in algorithms, assuming the student already knows algorithms for common computational tasks, and can reason about the correctness of algorithms and understand the basics of computing the complexity of algorithms and comparing algorithmic performance.

The course focuses on the range of algorithms available for computational tasks, considering the fundamental division of tractable tasks, with linear or polynomial-time algorithms, and tasks that appear to be intractable, in that the only algorithms available are exponential-time in the worst case.

To examine the range of algorithmic behaviour and this fundamental divide, three topics are covered:

  • Examining a range of common computational tasks and algorithms available: We shall consider linear and polynomial-time algorithms for string matching tasks and problems that may be interpreted in terms of graphs. For the latter we shall consider the divide between tractable and intractable tasks, showing that it is difficult to determine what range of algorithms is available for any given task.
  • Complexity measures and complexity classes: How to compute complexity measures of algorithms, and comparing tasks according to their complexity. Complexity classes of computational tasks, reduction techniques. Deterministic and non-deterministic computation. Polynomial-time classes and non-deterministic polynomial-time classes. Completeness and hardness. The fundamental classes P and NP-complete. NP-complete tasks.

Advanced Algorithms (II): In the second semester a follow-up course unit is available. This course will explore classes of algorithms for modelling and analysing complex systems, as arising in nature and engineering. These examples include: flocking algorithms; optimisation algorithms; stability and accuracy in numerical algorithms.


Part I (up to reading week): Algorithms

  • The stable marriage problem
  • Basic graph algorithms
  • Flow optimization and matching
  • Boyer-Moore and Knuth-Morris-Pratt algorithms
  • Linear programming
  • Integer programming
  • Review of Coursework I

Part II (after reading week): Complexity

  • Turing Machines and computability (review)
  • Problems and complexity classes
  • Propositional satisfiability
  • Hardness and reductions
  • Graph-theoretic problems
  • Quantified Boolean Formulas
  • Savitch's Theorem
  • The Immerman-Szelepcsenyi theorem
  • Review of Coursework II
  • Revision


There will be two coursework exercises details of which can be found on the course unit materials page.

Teaching methods


22 lecture course but some lectures will be cancelled to provide time for assessed exercises.

Feedback methods

Two pieces of assessed coursework during the course unit.

Study hours

  • Lectures (22 hours)

Employability skills

  • Analytical skills
  • Innovation/creativity
  • Problem solving

Learning outcomes

Programme outcomeUnit learning outcomesAssessment
A2 B1 B2 B3 D6Be able to develop, and reason about the correctness and performance of, algorithms for string searching and for calculating over graphs.
  • Lab assessment
  • Examination
A2 B1 B2 B3 C5 D6Understand the distinction between linear and polynomial-time tasks, and those with exponential-time algorithms; tractable and intractable tasks.
  • Lab assessment
  • Examination
A2 B1 B2 B3 C5 D6Understand the general notion of complexity classes, P and NP, completeness and hardness, and the relationships between classes by reduction.
  • Examination
  • Lab assessment
A2 B1 B2 B3 C5 D6You will also have seen how to show tasks are NP-complete and know a range of NP-complete problems.
  • Examination
  • Lab assessment
A2 B1 B2 B3 C5 D6You will understand the hierarchy of complexity classes and know some of the key theorems concerning these classes.
  • Examination
  • Lab assessment

Reading list

Introduction to the theory of computation (3rd edition)Sipser, Michael9781133187813Cengage Learning2013
Algorithm design and applicationsGoodrich, Michael T. and Roberto Tamassia9781118335918Wiley2014

Additional notes

Course unit materials

Links to course unit teaching materials can be found on the School of Computer Science website for current students.