Competitive Programming is a mind sport where contestants write programs to solve precisely specified algorithmic problems within strict constraints. Problems can range from simple ones that can be solved by any software developer and require little code to get a correct solution, to complex ones that require knowledge of special algorithms, data structures, and lots of practice. Coding interviews are similar is some respects as well.
Following is a curated lisiting of competitive programming competitions and related training resources.
- ACM ICPC
- Facebook HackerCup
- Google HashCode
- Google CodeJam
- Google Kickstart
- TopCoder Open
- International Olympiad on Informatics
- Yandex Algorithm Contest
Coding challenges / hiring challenges:
- Hackerrank
- Kaggle (especially for Data Science)
- TopCoder
- CodeForces
- CoderByte
Online / Offline Hackathons:
Other great resources for practise. Equally applicable for preparing coding interviews:
- LeetCode
- CodeSignal (formerly known as CodeFight)
- Project Euler
- Facebook HackerCup Solutions
- Google Hashcode Solutions
- ACM ICPC Solutions
- GeeksForGeeks
- CodeWars
- CodeChef
- ACM Timus Online Judge
Here, are some useful tips that you should know before getting started with Competitive programming:
- It's vital that you select a programming language which you are most comfortable with.
- Sign up on any online coding challenge website and start solving their practice problems.
- You need to deep understanding of various data structures which is vital to solving complex coding issues. You should know where to use which one.
- Have a solid understanding of the concept of time/space complexity in programs.
- Learn important programming patterns like recursion, dynamic programming, backtracking etc.