International Olympiad in Informatics

Informatics Olympiad Masterclass

From fundamentals to IOI-level competitive programming in 14 weeks

8 modules35 topicsBeginner to Advanced

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

Beginner to Advanced
8Modules
17Lessons

Your Instructor

Ahnaf Shahriar Asif
Ahnaf Shahriar Asif

Informatics โ€” BDOI Silver Medalist

๐Ÿ… BDOI Silver Medalist โ€” 5th nationally, 2020๐Ÿ… BDOI Bronze Medalist โ€” 6th nationally, 2019

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 Ahnaf

Full 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.

1

Getting Started

Fundamentals

Discover the world of competitive programming, the Informatics Olympiad, and what this course will teach you.

2

Basics

Fundamentals

C++ setup, variables, data types, arithmetic, and conditional logic with if/else and logical operators.

3

Loops in Programming

Fundamentals

Combine conditions with logical operators and master loops and arrays.

4

Functions in Programming

Fundamentals

Build reusable code with functions, manipulate text with strings, and discover C++ STL.

5

Time Complexity

Algorithms

Build reusable code with functions and learn Big-O notation to analyze algorithm efficiency.

6

Recursion

Algorithms

Understand the magic of functions calling themselves โ€” base cases, call stacks, and recursive thinking.

7

Sorting Algorithms

Algorithms

Learn Big-O notation and analyze how fast (or slow) your algorithms really are.

8

Searching and Sorting

Algorithms

From linear to binary search โ€” find elements efficiently and cut your search space in half.

9

Data Structures

Data Structures

Explore sorting algorithms and master STL containers โ€” stack, queue, set, map, and more.

10

Mathematics

Number Theory

Modular arithmetic, fast exponentiation, GCD, LCM, Euclidean algorithm, and modular inverse.

11

Basic Mathematics

Number Theory

nCr, Pascal's triangle, and the Sieve of Eratosthenes for finding primes.

12

Range Minimum Query

Number Theory

Euler's totient, prefix sums, and range query techniques for competitive programming.

13

Range Queries

Data Structures

Build powerful data structures for range minimum queries and range updates.

14

Dynamic Programming

Advanced

Backtracking, memoization, Fibonacci, coin change โ€” DP foundations and techniques.

15

Basics of Graphs

Advanced

Knapsack, LCS, graph representations, BFS, DFS, and connected components.

16

Segment Trees

Advanced

Graph traversal with BFS/DFS, tree properties, and path queries in hierarchical structures.

17

What Now?

Advanced

Your personalized roadmap for continued learning โ€” resources, contests, and advanced topics.

Sample Problem

A taste of the competition-level problems you'll tackle.

IOI 2023

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).

Key insight: The problem requires combining greedy and DP on trees. The key observation is that reachable sets from X and Y form connected subtrees, and the optimal solution involves carefully balancing the 'cost' of extending each subtree using a priority-queue-based greedy approach with tie-breaking analysis.

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

BDT 12,000
Early: BDT 10,000
Enroll Now