CommonLounge Archive

Competitive Programming: From Beginner to Expert

March 16, 2017

This is a very comprehensive 94-part course on competitive programming. It gets you from knowing basic programming to being a yellow-red rated coder on Codeforces / CodeChef / TopCoder / etc.

The primary objectives of this course are to learn about 30 different algorithms and data structures. The algorithm tutorials include short intuitive video tutorials, as well as links to a more in-depth text tutorial.

We’ll solve 1-2 problems for each topic, and many more for the popular and versatile topics such as dynamic programming and graphs. Each problem includes hint-by-hint solutions from a problem solving point of view, which sharpens your problem solving skills even if you aren’t able to solve the problem on your own.

Expected time to completion: 60-90 sessions. 2-3 months if you make progress daily, 4-6 months if you come 2-3 days per week. Each problem will teach you something new, so make sure you understand it before moving on.


This course focuses more on solving problems using the algorithms. For a stronger foundation in algorithms and data structures, I recommend doing the following course: Learn Algorithms and Data Structures.

Pre-requisites: Basic knowledge of any programming language. If you don’t have the pre-requisite, you should start here: C++ / Java / Python for Competitive Programming.


Introduction to Algorithms and Problem Solving

Recursion + Quick-sort + Merge-sort

Binary search (+ extras)

Greedy Algorithms

Dynamic Programming

Heaps and Heap Sort

Graph algorithms

Matrix Exponentiation

Graph algorithms continued

Segment Trees (including extensions) + Binary Indexed Trees + MO’s algorithm + HLD

Number Theory + PIE + Computational Geometry


© 2016-2022. All rights reserved.