Topics covered may include the following:

- Review: fundamental data structures, asymptotic notation, solving recurrences, Sorting and order statistics: heapsort and priority queues, randomised quicksort and its average case analysis, decision tree lower bounds, linear-time selection
- Divide-and-conquer: binary search, quicksort, mergesort, polynomial multiplication, arithmetic with large numbers
- Dynamic Programming: matrix chain product, scheduling, knapsack problems, longest common subsequence, some graph algorithms
- Greedy methods: activity selection, some graph algorithms
- Amortisation: the accounting method, e.g., in Graham's Scan convex hull algorithm
- Graph algorithms: depth-first search, breadth-first search, biconnectivity and strong connectivity, topological sort, minimum spanning trees, shortest paths
- Theory of NP-completeness

- T.H. Cormen, C.E. Leiserson, R.L. Rivest, "Introduction to Algorithms", 2nd edition, McGraw-Hill and The MIT Press, 2001.
- Jeff Edmonds. notes: "How to Think about Algorithms"

- CLO 1 Choose an appropriate algorithm to solve a given computational problem, and justify that choice
- CLO 2 Design new algorithms using a variety of techniques (recursion, greedy algorithm, dynamic programming, backtracking)
- CLO 3 Prove correctness of an algorithm using pre- and post-conditions and loop invariants
- CLO 4 Prove bounds on the running time of an algorithm
- CLO 5 Apply standard graph algorithms to a variety of problems