Algorithms are the heart of all computation. This course, which relies on the algorithmic foundations laid in the first computer science courses (INF321 or INF311+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'll 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 (lecture hall, poly), for the rest including the exam both French and English are proposed.