Programming
The 4-year programming course will take you from an introduction to programming in an interactive environment and a first introduction to the C++ language and basic algorithms to complex data structures, algorithms and concepts that develop algorithmic and logical thinking and lay the foundation for further study in computer science.
Who these classes are for
The course is suitable for students who want to master the basic aspects of programming, develop algorithmic thinking for everyday life and take the first or more confident steps in Olympiad programming.
You can start from zero: the first group requires no programming experience at all, just basic school maths and the ability to use a computer.
You choose your group by your actual skills
Each group has its own list of required skills, and the programming language you acquired them in doesn't matter. Look at the "Expected Knowledge" of each group and choose the one that matches your training.
It is also important to work outside of classes. The one who writes the code himself is good at programming, not the one who watches others write.
Our groups
Each group is one academic year. Groups are built sequentially, from Electronics to Terminators, and each subsequent one builds on the skills of the previous one. It is according to the "Expected knowledge" section that you choose a group yourself. If the group does not fit, there will be an opportunity to change it later.
Electronics
1 year of study- Maths at a grade 4-5 level
- Basic computer skills
- Being able to create files and folders is a plus
A dive into the basics of programming through drawing pictures with code, animations, and simple games — in a teaching language of our own, built specifically for this group. Variables, loops, arrays, and first functions: not terms to memorise, but tools for solving your own small problems.
- Variables
- Loops
- Conditionals and logical operators
- Arrays (one- and two-dimensional)
- Functions and procedures
- Animations, events, and simple games
Droids
1 year of study- Being able to work with variables and arrays
- Understanding what a function (procedure) is and being able to use one to solve the simplest problem
- The programming language you picked these skills up in doesn't matter
Building on the skills gained in Electronics, the group moves to C++ and starts on the foundations of competitive programming: solving problems, submitting solutions for review, and learning first algorithms — from sorting and binary search to first problems on graphs.
- C++ and language basics
- Asymptotic complexity of algorithms
- Binary search
- Sorting and recursion
- STL
- Graphs: first steps (DFS, BFS)
Cyborgs
1 year of study- Confident command of basic programming constructs: variables, arrays, loops, conditions, functions
- Knowledge of the basics of STL
- Understanding of the basics of algorithms: binary search, sorting, recursion, simple problems on arrays
- Desirable: familiarity with dynamic programming, prefix sums, the two-pointer method and basic algorithms on graphs
Advanced Algorithms and Data Structures: Advanced Dynamic Programming, Graph Algorithms, Combinatorics and Number Theory, and Data Structures such as Segment Tree and DSU.
- Dynamic Programming
- Graphs: DFS, BFS, Shortest Paths
- Segment Tree and DSU
- Combinatorics
- Game Theory
- Droid Base
Terminators
1 year of study- Confident command of every topic in the Cyborgs program: STL, sorting and searching, recursion, dynamic programming
- Basic data structures: DSU, sparse table, segment tree
- Experience with graphs: DFS, BFS, shortest paths
The top level of our program — harder olympiad-grade algorithms and data structures: advanced search methods, algorithms and structures for working with trees, deeper dynamic programming, and higher-difficulty problems in combinatorics, geometry, and string algorithms.
- More complex algorithms on graphs (Dijkstra's algorithm, LCA)
- Advanced techniques on trees (HLD, centroid decomposition)
- Segment tree and Fenwick tree (various applications in problems)
- More complex dynamic programming techniques
- Root decomposition: Mo's algorithm
- Cyborg database
Ready to try it?
Join and take your first step in programming with us. The most diligent students study with us completely free of charge.
Support the project