Learn Programming — from Zero to Olympiads
Learn programming from scratch and prepare for olympiads: lessons with theory and code examples, auto-checked practice problems, and a clear path from your first "Hello, World" to advanced algorithms.
How to use this site
Sign in with Google
One click — and your progress, solutions, and attempt history are saved automatically.
Choose your path
A beginner? Start with a language course. Already write code? Start the competitive programming path at level one.
Solve auto-checked problems
Lessons come with practice problems. Submit a solution — the judge checks it against tests in seconds.
Compete and grow
Join contests, track your leaderboard position, and move up to the next level.
Competitive Programming Path
6 levelsA step-by-step competitive programming curriculum: from algorithmic foundations to expert topics. Every level contains lessons with theory, code examples, and auto-checked practice problems. If you are a complete beginner, start with one of the programming language courses first.
- 1
Level 1. Algorithmic Foundations
Algorithm complexity, implementation problems, and basic math — the foundation for everything that follows.
3 lessons
- 2
Level 2. Sorting and Searching
Classic techniques that appear in almost every contest problem: sorting, two pointers, prefix sums, and binary search.
4 lessons
- 3
Level 3. Data Structures and Greedy Algorithms
Stack, queue, sets and maps, recursion, greedy algorithms, and DSU — the toolkit for mid-level problems.
5 lessons
- 4
Level 4. Graphs and Dynamic Programming
Graph traversals, shortest paths, spanning trees, and your first dynamic programming problems.
4 lessons
- 5
Level 5. Advanced Topics
Advanced DP, segment trees, string algorithms, and number theory — the level of regional olympiad prize winners.
4 lessons
- 6
Level 6. Expert Topics
Flows, suffix structures, and computational geometry — international-level topics.
3 lessons
Programming language courses
Master a language from scratch up to the level where the olympiad path begins.
C++ from Scratch
C++ is the main language of competitive programming. This course takes you from your first program to confident use of the language and the STL.
10 lessons
Python from Scratch
Python is the easiest language to start with. This course goes from your first program to the level where you can start solving contest problems.
10 lessons
Java from Scratch
Java is a strict and powerful language. This course goes from your first program to collections and fast contest I/O.
10 lessons
Go from Scratch
Go is a simple and fast language. This course goes from your first program to slices, maps, and buffered I/O.
10 lessons