Algorithms are the heart of all computation. This course, which relies on the algorithmic foundations laid in the first computer science courses (INF371 or INF361+INF411), equipping the student with a solid background in modern algorithmics.

After following this course, the student will have an in-depth knowledge of most central algorithms, both understanding how and why they work and being able to solve a wide range of computational problems with these building blocks.

This is material that everyone aiming to work in a computer science or computing-related context needs to know, let it be in a research or industrial environment.

In addition to this, we will also give a brief introduction to several more recent topics like randomized algorithms, evolutionary algorithms, online algorithms, or algorithmic game theory, which had a significant impact on how we understand computing today.

The course is taught in English (lectures, poly). Exercise classes are offered in English and French. The exam is offered in both languages.