Informatics Olympiad Masterclass
From fundamentals to IOI-level competitive programming in 14 weeks
What You'll Learn
- Analyse time and space complexity of algorithms and select appropriate data structures for a given constraint set
- Implement graph algorithms including shortest paths, MST, and topological sort to solve competition-level problems
- Formulate dynamic programming recurrences for optimisation and counting problems, including bitmask and tree DP
- Use segment trees and Fenwick trees for efficient range queries and point updates in O(log n) time
- Apply number-theoretic techniques including modular arithmetic, sieve methods, and combinatorial counting
+1 more outcome
Your Instructor
Informatics โ BDOI Silver Medalist
Silver Medalist at the Bangladesh Olympiad in Informatics 2020 and Bronze in 2019, now competing in ICPC regionals while reading CS and Mathematics at BRAC University.
Learn more about AhnafFull Curriculum
- Introduction to competitive programming: workflow, platforms, and resources
- C++ fundamentals: variables, data types, arithmetic, and I/O
- Conditional logic: if-else, comparison operators, and logical operators
- Loops, arrays, and strings: iteration patterns and data storage
- Functions, return types, vectors, and STL basics
- Recursion: base cases, Fibonacci, factorial, and the call stack
- Recursion vs loops: when to use each approach
- Big-O notation: constant, linear, quadratic, and logarithmic time
- Complexity analysis and the sweet spot rule for contest constraints
- Binary search: step-by-step implementation and logarithmic complexity
- Selection sort and merge sort: divide-and-conquer analysis
- STL sort() and counting sort for constrained values
- STL data structures: stack, queue, set, map, and priority queue
- Modular arithmetic: operations, factorial mod M, and Fermat's Little Theorem
- Binary exponentiation and modular inverse
- Divisibility, GCD (Euclidean algorithm), and LCM
- Permutations, combinations, and Pascal's triangle
- Sieve of Eratosthenes and prime factorisation
- Euler's Totient function, Euler's theorem, and extended Euclidean algorithm
- Chinese Remainder Theorem and counting divisors
- Prefix sums: 1D and 2D range queries in O(1)
- Difference arrays for range updates and bitwise operations
- Sparse tables for O(1) range minimum queries
- Segment trees: building, range queries, and point updates in O(log n)
- Choosing the right data structure for different query patterns
- Memoisation and bottom-up DP: Fibonacci, frog jumping, coin change, and tiling
- 0/1 knapsack, longest common subsequence, and DP state design
- Backtracking: permutations and N-Queens
- Graph representations: adjacency matrix vs adjacency list
- DFS and BFS: traversal, connected components, and shortest distances
- Trees: diameter, subtree sizes, and path queries
- Comprehensive review of all major topics and techniques
- Advanced topics roadmap: network flow, string algorithms, and geometry
- Effective practice strategies and the competitive programmer's mindset
- Online judge platforms and long-term preparation planning
Interactive Lessons
Step-by-step interactive lessons with code tracers, quizzes, and animated visualizations.
Getting Started
FundamentalsDiscover the world of competitive programming, the Informatics Olympiad, and what this course will teach you.
Basics
FundamentalsC++ setup, variables, data types, arithmetic, and conditional logic with if/else and logical operators.
Loops in Programming
FundamentalsCombine conditions with logical operators and master loops and arrays.
Functions in Programming
FundamentalsBuild reusable code with functions, manipulate text with strings, and discover C++ STL.
Time Complexity
AlgorithmsBuild reusable code with functions and learn Big-O notation to analyze algorithm efficiency.
Recursion
AlgorithmsUnderstand the magic of functions calling themselves โ base cases, call stacks, and recursive thinking.
Sorting Algorithms
AlgorithmsLearn Big-O notation and analyze how fast (or slow) your algorithms really are.
Searching and Sorting
AlgorithmsFrom linear to binary search โ find elements efficiently and cut your search space in half.
Data Structures
Data StructuresExplore sorting algorithms and master STL containers โ stack, queue, set, map, and more.
Mathematics
Number TheoryModular arithmetic, fast exponentiation, GCD, LCM, Euclidean algorithm, and modular inverse.
Basic Mathematics
Number TheorynCr, Pascal's triangle, and the Sieve of Eratosthenes for finding primes.
Range Minimum Query
Number TheoryEuler's totient, prefix sums, and range query techniques for competitive programming.
Range Queries
Data StructuresBuild powerful data structures for range minimum queries and range updates.
Dynamic Programming
AdvancedBacktracking, memoization, Fibonacci, coin change โ DP foundations and techniques.
Basics of Graphs
AdvancedKnapsack, LCS, graph representations, BFS, DFS, and connected components.
Segment Trees
AdvancedGraph traversal with BFS/DFS, tree properties, and path queries in hierarchical structures.
What Now?
AdvancedYour personalized roadmap for continued learning โ resources, contests, and advanced topics.
Sample Problem
A taste of the competition-level problems you'll tackle.
Closing Time
Given a tree with n cities and weighted edges, two cities are designated as starting points X and Y. Each city has a closing time that determines reachability. Assign non-negative closing times to cities such that the total is at most K, maximising the total number of cities reachable from X plus cities reachable from Y (counting doubly reachable cities twice).
Frequently Asked Questions
We strongly recommend C++ for competitive programming. It offers fine-grained control over memory and performance, and its Standard Template Library (STL) provides efficient implementations of essential data structures. The IOI allows C++ and Java, but C++ is used by the vast majority of top competitors. All code examples and solutions in this course are in C++.
Yes, that is the ideal starting point for this course. Module 1 covers the competitive programming workflow, I/O optimisation, and complexity analysis. You should be comfortable writing loops, conditionals, and functions in any language. We will teach you C++ specifics as part of the course.
Plan for 6-10 hours per week beyond watching the lessons. This includes solving each module's problem set (4-6 problems), reviewing editorials, and upsolving problems you could not finish first time. Consistent practice matters far more than marathon days.
Not at the start. Basic arithmetic, algebra, and logical reasoning are sufficient for the first half of the course. Module 7 introduces the number theory and combinatorics you need, and we build up mathematical tools as they become relevant. No calculus is required.
We primarily use Codeforces for weekly problem sets and virtual contests. We also draw problems from AtCoder, CSES Problem Set, and the IOI archive. You will receive a curated problem list for each module with direct links.
This course covers all the algorithmic topics that appear in the Bangladesh Informatics Olympiad (BdOI) selection process and the IOI. However, making the national team requires sustained individual practice beyond any course. The course provides the knowledge and problem-solving frameworks; your consistent practice over months is what ultimately determines selection.
Ready to begin Informatics?
Informatics Olympiad Masterclass ยท 8 modules ยท Beginner to Advanced