---
title: "The IOI Syllabus Excludes More Than You Expect"
description: "The International Olympiad in Informatics publishes what is in scope and what is not. The exclusions are the useful half, and few students read them."
slug: ioi-syllabus-what-to-learn-and-what-to-skip
canonical: https://learn.modernagecoders.com/blog/ioi-syllabus-what-to-learn-and-what-to-skip/
date: 2026-08-21
dateModified: 2026-08-21
category: "Programming"
tags: ["Olympiad", "Competitive Programming", "Algorithms", "Python"]
keywords: ["ioi syllabus", "international olympiad in informatics preparation", "ioi contest format", "what to study for ioi", "olympiad informatics training", "ioi medals"]
readTime: "8 min read"
author: "Modern Age Coders Team"
---
# The IOI Syllabus Excludes More Than You Expect

> There is an official document that says exactly what the International Olympiad in Informatics will and will not ask for. Reading it saves a talented student months.

![IOI facts: two competition days, three tasks each, five hours each, one in twelve contestants takes gold](/images/blog/ioi-syllabus-what-to-learn-and-what-to-skip/00-hero.png)

*By Modern Age Coders Team · 2026-08-21 · 8 min read*

**Quick answer:** The International Olympiad in Informatics publishes an official syllabus that sorts every topic into one of six categories, from included with no limit through to explicitly excluded. The exclusions are the surprising part. Calculus, linear algebra, statistics, trigonometry, complex numbers and three dimensional geometry are all out, and so are KMP, suffix automata, Aho-Corasick and implementing hash tables. Excluded means no task will require or reward the topic, not that a contestant may not use it. The competition is two days, three tasks and five hours each, and about half the contestants take a medal.

Ask a strong student preparing for olympiad informatics what they are studying and you will often hear a list that grew by accumulation. Suffix automata because somebody mentioned them. Some number theory. A bit of linear algebra because a blog post used it. It is an enormous amount of work and a good deal of it cannot be examined.

The International Olympiad in Informatics publishes an official syllabus, produced by its International Scientific Committee for each olympiad. It classifies topics into six categories, and its exclusions are as carefully specified as its inclusions. Very few of the students we teach have read it.

## How the competition actually runs

Two competition days. Three tasks each day. Five hours each day. Contestants compete individually, although each participating country sends a team of up to four students along with a leader and deputy leader. Scoring is partial rather than all or nothing, which is why a strong contestant almost never leaves with zero.

![How IOI medals are distributed: roughly one gold to two silver to three bronze to six with no medal](/images/blog/ioi-syllabus-what-to-learn-and-what-to-skip/04-medals.png)

*About half the contestants take a medal home.*

Medals go to roughly the top half of contestants, in a ratio of about one gold to two silver to three bronze to six with nothing, which puts gold at around one in twelve. Worth putting next to a fact that is easy to forget: every person in that room already won a national selection to get there. The distribution above is a distribution among the already selected.

## Six categories, not two

![The six IOI syllabus categories from included unlimited through to explicitly excluded](/images/blog/ioi-syllabus-what-to-learn-and-what-to-skip/01-six-categories.png)

*The middle categories are where most of the useful information sits.*

A binary in or out would be less useful than what the syllabus actually does. Something can be included with no limit, which means it is assumed knowledge. It can be included but guaranteed to be defined in the task statement, which means you do not need to have met the term before. It can be usable in a solution but never used to phrase a task. It can be outside of focus, which is where anything the syllabus does not mention lands by default. And it can be excluded, either provisionally or explicitly.

> **The rule that decides everything unmentioned**

> The syllabus states three rules for topics it does not name. Anything that is a prerequisite of an included topic is included. Anything that extends or resembles an excluded topic is excluded. Everything else is outside of focus. That is enough to classify almost any topic a student is wondering about, without asking anybody.

## What is explicitly excluded

![Topics explicitly excluded from the IOI syllabus, in mathematics and in algorithms](/images/blog/ioi-syllabus-what-to-learn-and-what-to-skip/02-excluded.png)

*Each of these was checked against the marker beside it in the syllabus itself.*

On the mathematics side, the excluded list contains most of what a strong mathematics student would assume was relevant. Calculus. Linear algebra. Statistics. Trigonometric functions. Complex numbers. Geometry in three or more dimensions. Modular division and inverse elements. A contestant who is brilliant at all of these has an advantage in almost every other olympiad and none at all in this one.

On the algorithms side the exclusions are more surprising, because they include things competitive programming culture treats as standard equipment. String algorithms and data structures are explicitly excluded, and the syllabus names them: KMP, Rabin-Karp hashing, suffix arrays, suffix trees, suffix automata, Aho-Corasick. So are complex heap variants like binomial and Fibonacci heaps. So is using and implementing hash tables, including collision resolution strategies. So is alpha-beta pruning.

> **Read excluded precisely, because it does not mean forbidden**

> The syllabus guarantees that no competition task will require an excluded topic, and that tasks are set so that knowing one should not produce a simpler or higher scoring solution. It then says directly that the syllabus must not be read as restricting the techniques a contestant may apply. So you may use a hash map. You will simply never need to have implemented one.

## What that leaves, and why it is not a small course

![Topics included in the IOI syllabus, including dynamic programming, greedy algorithms, minimum spanning trees and tries](/images/blog/ioi-syllabus-what-to-learn-and-what-to-skip/03-included.png)

*Narrower than students expect, and much deeper than they expect.*

Dynamic programming is in. Greedy algorithms are in. Minimum spanning trees are in. Tries are in, which is worth pausing on given that the heavier string machinery is not. Balanced binary search trees are in, with the note that problems will not be designed to distinguish between implementations, so a contestant does not need to have written a treap and a splay tree and a scapegoat tree.

Cutting the exotic did not make the syllabus small. It made it deep in fewer places. The student who reaches the top half of an IOI has not learned more topics than the one who does not, they have learned the same topics until recognising them in disguise takes seconds.

## An included structure, in twenty lines

Since tries are in and the heavier string structures are out, here is a trie doing something a student might otherwise reach for a suffix automaton to do: counting how many stored words start with a given prefix.

```python
class Trie:
    def __init__(self):
        self.children = {}
        self.passing = 0          # how many inserted words go through this node

    def insert(self, word):
        node = self
        for ch in word:
            node = node.children.setdefault(ch, Trie())
            node.passing += 1

    def count_with_prefix(self, prefix):
        node = self
        for ch in prefix:
            if ch not in node.children:
                return 0
            node = node.children[ch]
        return node.passing

tree = Trie()
for word in ["car", "cart", "carbon", "cat", "dog", "do"]:
    tree.insert(word)

for prefix in ["car", "ca", "do", "z"]:
    print("%-4s -> %d" % (prefix, tree.count_with_prefix(prefix)))
```

```text
car  -> 3
ca   -> 4
do   -> 2
z    -> 0
```

Four prefixes, four correct answers, and the counting happens during insertion rather than during the query, which is the same idea as the prefix sums that carry so much of competitive programming. The structure is small enough to write from memory under time pressure, and that is precisely why it is inside the syllabus and the suffix automaton is not.

## Getting to the IOI at all

The syllabus tells you what to study. It says nothing about how a student gets into the room, because that is decided nationally and differs sharply from country to country. Almost everywhere the shape is the same though: a national olympiad in informatics, then one or more selection rounds or a training camp, then a team of up to four.

The practical consequence is that the national round is the actual gate, and its syllabus and format may differ from the IOI's. A student preparing purely against the IOI syllabus and ignoring their own country's selection format is optimising the second exam while failing the first.

1. **Find your national olympiad's own rules first.** Its dates, its eligibility, its format, its language rules. This is where more talented students are lost than anywhere else, and it is lost to administration rather than to ability.
2. **Then use the IOI syllabus as the study map.** Its included list is a better curriculum than any course, and its excluded list is permission to stop worrying about half of what the internet says you need.
3. **Work in C++ once you are serious.** It is the only language supported at the IOI, so a path that goes all the way ends there regardless of where it starts.
4. **Practise on past IOI and national tasks, under the real clock.** Five hours for three tasks is a specific endurance and a specific pacing problem, and neither is trainable in twenty minute sessions.

> The syllabus is the most under used document in olympiad preparation. It is short, it is free, and it tells a student what not to do, which is the harder half of a study plan.
> 
>, What we say in the first session with every olympiad student

## How we train for it

Olympiad training goes wrong in a predictable way: a student accumulates topics, feels productive, and never develops the recognition that makes a five hour paper survivable. We work the other way, against the included list only, on past tasks with the topic label hidden, so that identifying what a problem wants is part of the exercise rather than something the section heading gave away.

Our [olympiad informatics training](/ioi-olympiad-informatics-training) is live, one to one or in a batch of five to eight students, taught from India to students worldwide. Students usually arrive from a national round or from [USACO Silver or Gold](/blog/usaco-bronze-to-silver-what-blocks-most-students), and the first session is normally spent working out which of the things they have been studying they can safely stop studying. The first class is free.

[Book a free olympiad training class](/ioi-olympiad-informatics-training)

## Frequently asked questions

**Where can the syllabus be read?**

The International Olympiad in Informatics publishes it on its own website as a PDF, produced by the International Scientific Committee for each olympiad. It is a short document and worth reading end to end once, then keeping open while planning study.

**Is it really true that suffix automata are excluded?**

Yes. String algorithms and data structures are explicitly excluded and the syllabus names KMP, Rabin-Karp hashing, suffix arrays, suffix trees, suffix automata and Aho-Corasick. A contestant may still use any of them. No task will require one or reward one with a better score.

**Does excluded mean the topic is useless?**

Not at all, and this is worth being clear about. Plenty of excluded topics are valuable in competitive programming generally and essential in later computer science. They simply are not what the IOI is testing, so they belong in a student's life after the olympiad rather than in the months before it.

**Which language should an olympiad student use?**

C++, once they are serious, because it is the only language supported at the IOI. Getting there through Python or Java is entirely normal and many national rounds accept more languages, but the transition needs to happen well before the international stage rather than during it.

**How much mathematics is needed?**

Less exotic mathematics than students assume, and more comfort with the basic discrete kind. Integers and their properties, modular arithmetic, plane geometry, combinatorics and graph theory carry almost everything. Calculus and linear algebra carry nothing here.

**What is a realistic timeline?**

For a student already competing nationally, a year or two of consistent work to be competitive at selection. For a student starting from ordinary school programming, longer, and the honest first step is a graded contest ladder rather than the IOI syllabus, because the syllabus assumes fluency it does not teach.

**Is scoring all or nothing?**

No. IOI tasks award partial scores, often through subtasks with smaller constraints, so a solution that is correct but too slow for the largest inputs still earns something. This is a genuine difference from many national contests and it changes contest strategy: writing the obvious slow solution first is frequently the right opening move.

---

*Source: https://learn.modernagecoders.com/blog/ioi-syllabus-what-to-learn-and-what-to-skip/*
