21/1 – Algorithms & Data Structures

Module Leader:
Gábor Mészáros
2021-2022 Summer
Immersion 1
Numerical Sciences

It is known that putting an elephant into a refrigerator requires the execution of 3 steps: 1) open the fridge; 2) put in the elephant; 3) close the fridge.
One of the main goals of this module will be to introduce a more efficient and realistic measure of performance (“step-count”) of an algorithm. We will study various fields of algorithm theory including but not limited to searching and sorting, dynamic programming, and graph algorithms. We will explore classical algorithmic problems, their solutions, and the utilization of the given techniques in real-life challenges. The discussion of the different ways of storing data (arrays, lists, heaps) with their strengths and weaknesses will also be a central topic of our discussions.
Familiarity with mainstream programming languages is a welcome skill but it is by no means a prerequisite of this course. Throughout the course we will design our solutions using pseudo-code. Homework submissions will either require formal mathematical proofs or algorithm designs that can be expressed in plain text.