Data structures and algorithms

Exam topics

Here is a list of the main topics you should know for the exam, and also what you do not need to know.

Note: The chapter and section references refer to the online course book. In general you should know all book sections that do not have an asterisk after the section number, including things that are not mentioned below. In other words, the list below does not detail everything you need to know.

Another note: An exam question (in particular an advanced one) may still touch on a topic listed as not required to know, or not covered by the course book. But if that happens, solving the question does not require prior knowledge of that topic.

Note for old students: This list is sometimes updated, so there might be differences from when you took the course! If you plan to write a re-exam, please make sure you know all topics in this list, even if it was not part of your course instance.

Algorithms and programming

Searching in an array or a list (ch. 1)

Sorting an array (chs. 2 and 4)

Algorithms on graphs (ch. 12)

Solving coding problems (no specific chapter or section)

Abstract data types and data structures

Abstract data types (ADTs, chs. 1, 8)

Data structures to know (chs. 1, 6, 9–12)

Sequences: dynamic arrays, linked lists, stacks, queues (ch. 6)

Rooted trees in general: properties (ch. 9)

Priority queues: binary heaps, meldable heaps (ch. 9)

Search trees: BSTs, 2-3 trees, AVL trees (ch. 10)

Hash tables: separate chaining, open addressing (ch. 11)

Graphs: properties, features and algorithms (ch. 12)

Algorithm analysis (chs. 3, 5, 7)

Order of growth

Complexity: definitions, variations

Asymptotic complexity: how to analyse it

Complexity cheat sheet

Life hack: Do not memorise the below asymptotic complexities. Instead, focus on how the algorithms and data structures work. If you understand that, you can regenerate the asymptotic complexities on demand. So just use the below to double-check what you got.