Languages

Programming languages we train in.

Language
C++
The primary language for competitive programming: fast, and the standard at IOI.
Language
Python
A readable, forgiving language for students building their first algorithms.
Language
Java
A strong option for students who want static typing without C++'s complexity.
Beginner track

Programming fundamentals.

01
Programming Basics
Variables, input/output, and how to think in code before you think in syntax.
02
Control Flow & Loops
Conditionals, iteration, and writing your first working programs.
03
Recursion & Strings
The building blocks almost every competitive problem is built on.
Intermediate track

Core algorithms and data structures.

04
Sorting & Searching
From simple sorts to binary search, and why complexity matters.
05
Graph Theory
BFS, DFS, and the structures behind most national-round problems.
06
Dynamic Programming
Breaking problems into overlapping subproblems, the topic that trips up most first-timers.
07
Number Theory
Primes, modular arithmetic, and the math underneath many contest problems.
08
Greedy Algorithms
Making locally optimal choices, and proving when that's actually correct.
09
Geometry
Coordinate geometry and spatial reasoning for a distinct class of problems.
Advanced track

Competitive programming, at pace.

10
String Algorithms
Pattern matching and efficient text processing at contest scale.
11
Advanced Data Structures
Segment trees, tries, and union-find: the tools that separate national from regional performance.
12
Contest Strategy
Time management, partial scoring, and when to abandon a problem.
How it works

Self-paced, with live camps between rounds.

Training modules and hundreds of Olympiad-level problems are available year-round, with in-person camps scheduled around each competition round for hands-on coaching and mock contests.

Browse learning resources
Students training with a coach

Start training today.

Registration unlocks every module, plus the full problem archive.

Register your school