Each module contains 3 ECTS. You choose a total of 10 modules/30 ECTS in the following module categories:

- 12-15 ECTS in technical scientific modules (TSM)

TSM modules teach profile-specific specialist skills and supplement the decentralised specialisation modules. - 9-12 ECTS in fundamental theoretical principles modules (FTP)

FTP modules deal with theoretical fundamentals such as higher mathematics, physics, information theory, chemistry, etc. They will teach more detailed, abstract scientific knowledge and help you to bridge the gap between abstraction and application that is so important for innovation. - 6-9 ECTS in context modules (CM)

CM modules will impart additional skills in areas such as technology management, business administration, communication, project management, patent law, contract law, etc.

In the module description (download pdf) you find the entire language information per module divided into the following categories:

- instruction
- documentation
- examination

Algorithms are at the heart of every computer program. Informally, an algorithm is a procedure to solve a (computational) problem within a finite number of elementary steps. The same problem can be addressed with different algorithms, hence it is important to compare the different options in order to choose the best one. Experimental analysis is one way to perform such comparison, but it has several limits. The main goal of this class is to learn how to analyze the performance of a given algorithm in a formal mathematical way. We will focus on some fundamental polynomial-time-solvable problems. Along the way, we will study some of the main techniques to design efficient algorithms, among which the use of efficient data structures.

### Prerequisites

Familiarity with basic discrete math, logic and probability theory. Familiarity with one programming language such as C++, Java, or similar languages.

### Learning Objectives

The main goal of this course is to learn basic techniques to design algorithms and data structures for fundamental polynomial-time-solvable problems, and mathematical tools to analyze their performance from a theoretical point of view.

### Contents of Module

A. Analytical tools: worst-case analysis and asymptotic notation; analysis of recursive algorithms; analysis of randomized algorithms; amortized analysis.

B. Algorithmic techniques: greedy; dynamic programming; divide et impera; randomization; fast data structures.

C. Data structures: search trees; priority queues; union-find; hash tables.

D. Polynomial-time problems: sorting and selection; shortest paths; minimum spanning tree; maximum flow; maximum matching.

### Teaching and Learning Methods

Interactive lectures both for theory and exercises.

### Literature

- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to Algorithms. MIT Press. Third edition.

- J. Kleinberg, E. Tardos. Algorithm Design. Addison-Wesley.

Download full module description

Back