Studies
Admissions
The Institute
Resources
Studies
Admissions
The Institute
Resources
Studies
Admissions
The Institute
Resources

CS409

Advanced Algorithms and Data Structures

Barcelona Campus
Mar 16, 2026 - Apr 03, 2026
In the Advanced Algorithms and Data Structures course, students focus on key and in-depth algorithms and data structures that form a modern computer specialist’s toolkit.
Barcelona Campus
Mar 16, 2026 - Apr 03, 2026

Faculty Profiles

Kamil Debowski

Kamil Debowski

Competitive Programming Teacher

Yegor Gorbachev

Yegor Gorbachev

PhD Student at ETH Zürich

Course length

3 weeks

Duration

3 hours
per day

Total hours

45 hours

Credits

6 ECTS

Language

English

Course type

Offline

Fee for single course

€1500

Fee for degree students

€750

Skills you’ll learn

Implementation of AlgorithmsAdvanced AlgorithmsAdvanced Data Structures
OverviewCourse outlineCourse materialsPrerequisitesMethod & grading

Overview

This course focuses on key and in-depth algorithms and data structures that form a modern computer specialist’s toolkit. The computational complexity of algorithms and their comparative analysis will also be discussed. Students will be extensively trained in implementing data structures and algorithms on many problems reducible to the discussed data structures and techniques. Programmes will be tested against carefully prepared test cases using an automated testing system.

Learning highlights

  • Get acquainted with in-depth algorithms and data structures.
  • To some extent, be able to apply in-depth algorithms and data structures to solve new problems that may arise in various applications.
  • Gain practice in problem-solving and programming on the topics of the discussed algorithms data structures.

Course outline

15 classes

Dive into the details of the course and get a sense of what each class will cover.
Monday
Tuesday
Wednesday
Thursday
Friday
Monday
1

Session 1

Introductory contest, solution discussion

Tuesday
2

Session 2

Heaps and binary search trees: binary heap, heap sort, binomial heap, treap.

Wednesday
3

Session 3

Segment trees and persistent data structures: range minimum/sum queries, lazy updates, persistent stack, persistent segment tree, persistent array.

Thursday
4

Session 4

String algorithms: Knuth–Morris–Pratt algorithm, prefix-function, Z-function, Manacher’s algorithm.

Friday
5

Session 5

Practice day. Help and advice in solving practical problems.

Monday
6

Session 6

Graphs and related definitions. Adjacency matrix and adjacency lists. Depth-first search and its properties. Edges classification. Bridges, articulation points. Strongly connected components. Tarjan's graph algorithms.

Tuesday
7

Session 7

Shortest paths. Breadth-first search. Its properties. State graphs. Breadth-first search on 0-1 graphs. Map of shortest paths. Related problems.

Wednesday
8

Session 8

Practice day. Help and advice in solving practical problems.

Thursday
9

Session 9

Single-source shortest path problem. Non-negative weights. Dijkstra's algorithm. Negative weights. Bellman-Ford algorithm. SPFA. Negative Cycle Detection. All-pairs shortest path problem. Floyd–Warshall algorithm. Johnson's algorithm.

Friday
10

Session 10

Practice day. Help and advice in solving practical problems.

Monday
11

Session 11

Minimum spanning trees. Tarjan's criterion. Safe Edge Theorem. Prim's algorithm. Union-Find data structure, applications. Kruskal's algorithm.

Tuesday
12

Session 12

Bipartite graphs. Problems: maximum matching, minimum edge cover, maximum independent vertex set, minimum vertex cover. König’s Theorem. Berge's lemma. Kuhn’s algorithm and applications.

Wednesday
13

Session 13

Practice day. Help and advice in solving practical problems.

Thursday
14

Session 14

2-SAT, 3-SAT. Randomized optimisation algorithms. TSP approximation.

Friday
15

Session 15

Practice day. Help and advice in solving practical problems.

Prerequisites

A firm grasp of one programming language and a background in discrete mathematics are necessary prerequisites to this course. Examples will be given mainly in C++ and Python.

Methodology

Programming assignments.

Lectures.

Paper and oral exam.

Grading

The final grade will be composed of the following criteria:
60% - Assignments
20% - Classwork activity
20% - Exams
Kamil Debowski

Faculty

Kamil Debowski

Competitive Programming Teacher

Awards

  • Gold Medal

    ICPC World Finals 2024 (Coach)

  • Gold Medal

    Coach of IOI 2021

Kamil Debowski, or “Errichto”, is a competitive programmer and a teacher. He participated in math contests through school, then switched to programming and became a finalist of the biggest international contests. He is the author of 300+ problems (Codeforces, Topcoder, Codechef, etc.) and reached the highest possible titles: Codeforces "Legendary Grandmaster" and Topcoder "Target".

Since 2018, Kamil is a full-time teacher: CP camps, high school classes, private coaching, video tutorials. His algorithmic Youtube channel (https://www.youtube.com/errichto) has over 250,000 subscribers and 12 million views. He also live-streams on Twitch (https://www.twitch.tv/errichto) and is a commentator of events like Topcoder Open and ICPC regionals.

See full profile
Yegor Gorbachev

Faculty

Yegor Gorbachev

PhD Student at ETH Zürich

Yegor is a PhD student in theoretical computer science at ETH Zürich. He received his Bachelor’s degree from Saint Petersburg State University in 2022 and his Master’s degree from Saarland University in 2025. His research interests are in fine-grained complexity and algorithm design, with a focus on developing optimal algorithms and proving conditional lower bounds under standard complexity assumptions.

Before and during his university studies, he was active in mathematics and competitive programming competitions reaching the "Legendary Grandmaster" title on Codeforces. He is also the creator of a competitive programming YouTube channel (https://www.youtube.com/peltorator). Yegor has extensive teaching experience, including teaching at training camps as well as high school and university courses.

See full profile

Apply for this course

Snap up your chance to enroll before all spaces fill up.

Advanced Algorithms and Data Structures

by Kamil Debowski, Yegor Gorbachev

Total hours

45 Hours

Dates

Mar 16 - Apr 03, 2026

Fee for single course

€1500

Fee for degree students

€750

How to secure your spot

Complete the form below to kickstart your application

Schedule your Harbour.Space interview

If successful, get ready to join us on campus

FAQ

Will I receive a certificate after completion?

Yes. Upon completion of the course, you will receive a certificate signed by the director of the program your course belonged to.

Do I need a visa?

This depends on your case. Please check with the Spanish or Thai consulate in your country of residence about visa requirements. We will do our part to provide you with the necessary documents, such as the Certificate of Enrollment.

Can I get a discount?

Yes. The easiest way to enroll in a course at a discounted price is to register for multiple courses. Registering for multiple courses will reduce the cost per individual course. Please ask the Admissions Office for more information about the other kinds of discounts we offer and what you can do to receive one.