Skip navigation
The Australian National University

Welcome to COMP3600/6466 - Algorithms


Algorithms is the foundation of Computer Science. It enables advances in Artificial Intelligence, Machine Learning, Cyber Security, Distributed, Mobile, and Cloud Computing, Computer Graphics and Animation, and many more. These advances have made Computer Science an indispensable part of our everyday life.

In this course, we will study the basics of Algorithms Design and Analysis. We will focus on two fundamental problems in computing: Sorting and Searching. We will cover various data structures and algorithm design techniques for solving these two classes of problems, as well as performance measures and analysis techniques of these algorithms and data structures.

Tentative topics that will be covered in this class:

  • The Problem: Search and Sort
  • Analysis Framework:
    • Model of Computation
    • Asymptotic Analysis
    • Recurrence Analysis
    • Basic analysis of Randomized Algorithms
    • Empirical Analysis
  • Algorithm Design Techniques:
    • Brute Force
    • Divide & Conquer
    • Decrease & Conquer
    • Transform & Conquer
    • Dynamic Programming
    • Greedy
    • Iterative Improvement

Assumed Background

This is a third year computing class. Therefore, this class assumes students are comfortable in creating computer programs using high-level programming languages. In particular, the pre-requisites are completion of COMP1110/1140/1150, 6 units of 2000-level COMP courses, and 6 units of 2000-level MATH courses or COMP1600/2600.

Access Code

If you are planning to take this class without satisfying the pre-requisites, you need to request for a permission to enrol via this site. Please contact CECS student admin for issues regarding this permission.

For students who take this class without satisfying all pre-requisites, please note: The class will run with the assumption that all students have satisfied all pre-requisites. There will be no exception on our marking nor materials.

Class Admin

Time & Location

***NOTE: Lecture time changes to Mon 11am and Tue 3pm***
  • Lecture: Monday 11.05am-11.55am + Tuesday 3.05pm-4.55pm, online via zoom (click here)
    Note:To enter the zoom room, you will need to log in with your ANU ID (see the class piazza on lectures for details).
  • Tutorial (starting week 2): Please select your group in wattle (Group selection will open from 28 July until 4 August).
    Tutorials will be online. We are currently working to have some tutorials to be face-to-face, but at this time, the availability of a face-to-face tutorial cannot be guaranteed.

Discussion Forum

Discussion forum for this class is in Piazza (not wattle). Please register here.

Teaching Staff

  • Lecturer & convenor: Hanna Kurniawati
  • Tutors:
    • Cormac Kikkert
    • David Quarel
    • Jiaxu Liu
    • Jihirshu Narayan
    • Mengyu Chen
    • Ruikai Cui
    • Sicheng Hao
    • Timothy Horscroft
    • William Cashman
    • Yukang Liu

To contact a teaching staff, please send your e-mail to:


  • [CLRS] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to algorithms, 3rd Ed. MIT press, 2009.
  • [Lev] Anany Levitin. Introduction To Design And Analysis Of Algorithms, 3rd Ed. Pearson Higher Education, 2011

Physical copies of [CLRS] have been reserved in Hancock Library. An e-book version of [CLRS] and [Lev] have also been reserved.

Recommended Books:
  • [Ski] S. Skiena. The Algorithm Design Manual. Springer-Verlag.
  • [dvOS] M. de Berg, M. van Kreveld, M. Overmars, and O. Schwarzkopf. Computational Geometry. Springer. We'll be using a few sections of this book for the Selected Topic on Computational Geometry (week-11)


3 assignments (@15%, @20%, @25%) + final project @40%.

Tentative timeline and brief information for the assignments and final projects (all in Canberra time (AEST)):

  • Assignment 1 (15%, concept + problem solving): 3 August - 17 August, 23:59
  • Assignment 2 (20%, concept + problem solving + coding): 24 August - 21 September, 23:59
  • Assignment 3 (25%, concept + problem solving + coding): 28 September - 19 October, 23:59
  • Final Project (40%, develop a program with multiple functionalities, complete with a report on the design selection and performance analysis): 17 August - 9 November 23:59
    • Milestone-1 (10%) - Proposal due 7 September, 23:59
    • Milestone-2 (20%) - Design document due 5 October, 23:59
    • Milestone-3 (70%) - Final deliverables due 9 November 23:59

For programming of Assignment-2 and Assignment-3, you can use C/C++/Java, but support will only be provided for C++.
For Final Project, you can use any programming language of your choice, but for programming language other than C/C++/Java/Python/Haskell, you need to seek approval from a teaching staff. Support will only be provided for C++.

Final Project can be used to redeem Assignment-2 XOR Assignment-3

Academic Honesty

Cheating will not be tolerated. We will follow ANU procedure. For Poor Academic Practice / Academic Misconduct outcome, the penalty will be:

  • Caught 1st time: At least 0 mark for the assessment.
  • Caught 2nd time: 0 mark for the course.

Giving Feedback

We welcome your feedback on how to help you learn better in this class. You can give feedback via the following:

  • Direct to the teaching staff via:
    • E-mail to
    • The class' piazza
    • In-person before/after/during break in lectures/tutorials
  • Through your class representatives:
    • Jesse Wright
    • Lei Zhang
    • Qingtao Yu


  • All materials and information about this class will be available or linked from this website. If and when there's discrepancy between information in this page and elsewhere (e.g., program and courses site or wattle), information in this page is the correct one.

Updated:  19 October 2020 / Responsible Officer:   JavaScript must be enabled to display this email address. / Page Contact:   JavaScript must be enabled to display this email address. / Powered by: Snorkel 1.4