**News:**

The final contest reports have been graded. Grades have been submitted to the student administration.

**Lectures**: Thursdays from 9:15 to 11:00 in Snellius room 408, with sometimes a lab session in 302-304

**Lectures**: Thursdays from 9:30 to 14:00 (contest days) or from 10:00 to 11:00 (student presentation days) in a Kaltura Live Room.

**Lecturer**: dr. Frank Takes, f.w.takes@liacs.leidenuniv.nl, room 157b

**Assistant **: Ludo Pulles BSc, l.n.pulles@umail.leidenuniv.nl

**Examination**: individual assignment (20%), presentation and report (35%) and three programming contest rounds (together 45%)

**Spoken language**: English

**Study points**: 6 ECTS

As part of the course, all students give a presentation and write a report about a topic related to competitive programming. The topic of the presentation is usually a particular more specialistic a) data structure, b) problem type or c) algorithm with relevance to competitive programming. For more information, among others about the report, see the document on the course project (presentation and report).

A list of topics can be found below. During the February 27 lecture, topics will be assigned to students. Numbers between parenthesis mostly refer to sections of the book by Halim, in which a short description of the topic and links to example problems can be found.

Students with a lot of experience in programming contests are strongly encouraged to not choose from the somewhat easier first four topics. There are a few more topics than students.

- [Chosen] Max flow: Fulkerson and Karp (4.6)
- Big integer problems (5.3)
- [Chosen] Sliding window problems (9.31)
- [Chosen] Closest pair problem (9.6)
- [Chosen] Union-find disjoint sets (2.4.2)
- [Chosen] Binary indexed (Fenwick) tree (2.4.4)
- [Chosen] Suffix tree (6.6.2)
- Suffix array (6.6.4)
- [Chosen] Ternary Search (Laaksonen 8.3.1)
- [Chosen] Graph matching (9.10)
- [Chosen] Minimal cost flow (9.23)
- Bidirectional search (8.2.4)
- Chinese Postman Problem (9.5)
- [Chosen] Dinic's algorithm (9.7)
- [Chosen] Cycle-finding in functions (5.7)
- [Chosen] Backtracking with bitmasks (8.2.1)
- [Chosen] 2-SAT using connected components (9.1)
- [Chosen] Bitonic traveling salesman problem (9.3)
- [Chosen] Lowest common ancestor (9.18)
- [Chosen] Matrix exponentiation (9.21)