15 Jun 2019

Competitive Programming Learning Path

The thing that is unique about this document is that this will contain everything required for competitive programming. People generally have confusion about where to start. We are completely self learned. So, we know where students generally face issues during beginning.

Contributors

Abstract

The thing that is unique about this post is that it contains everything required for competitive programming. People generally have confusion about where to start. We are completely self learned. So, we know where students generally face issues in the beginning. This document covers every topic required in competitive programming. We only assume that you know basic mathematics. The things will eventually get easy as you will move forward in your learning journey. People generally say everything is available on the web for free. Obviously, this is true. But, you need to know form where to learn. We cover that gap through this post. Just follow the instructions step by step. A lot of good problems are also provided. We have also provided some books at last, in case you want to delve deep.

Is this document for you?

Are you interested in problem solving or coding or competitions or mathematics? If your answer is yes, get ready to be “CodeZoned”. Make sure to contribute, via PRs, Issues, on our github repos.

If you are a senior, experienced in competitive programming, we urge you to help younger budding programmers by contributing to this post. You can also give your suggestions in the comment section below.

Disclaimer

All the documents, books, courses and links provided in this document are freely available on the web. We are just helping people find them easily.

Introduction

  • What is Competitive Programming?
  • List of Programming Contests.
  • Which programming language is best? See Google Code Jam stats here. From what we know, C++ is the best language for competitive programming. Stick with it. JAVA is also good. Some people say language has no effect on code. This depends on person to person.
  • Advantages of C++ in competitive programming: See the topic Python v/s C in the “LinksPDF.pdf” file in our resources repository.
  • Learn C++ from Bucky of The Boston School. Solve basic problems on Codeabbey. Now if you have completed this step. Solve some more problems on Project Euler, not all. Now you are ready to go.

Programming Techniques

Time Complexity

Sorting and Searching

Data Structures

Dynamic Programming

  • Highly recommended watch (1 and 2) and read.
  • Intution (read all parts).
  • Longest increasing subsequence problem (watch).
  • Paths on a grid problem (watch).
  • Knapsack Problem (watch this or this)
  • Subset sum problem (watch)
  • Watch this full playlist by Geeksforgeeks.

Graph Algorithms

Algorithms Design Topics

Tree Algorithms

Mathematics

Advanced Graph Algorithms

Computational Geometry

String Algorithms

Books Recommendation

Algorithm Design by Jon Kleinberg, Eva Tardos
Anany Levitin, Maria Levitin Algorithmic Puzzles
Halim Competitive programming
Algorithms and programming problems and solutions
Schaums discrete maths
Elementary Number Theory with Programming
Computational Geometry Algorithms and Applications
Ian Parberry Problems on algorithms

Again note that, we found everything on the internet and just sharing with you.