HackerRank
HackerRank is a famous site for people aspiring to participate in coding competitions. The site is focused on competitive programming challenges, hosting CodeSprints, 101 Hacks, HourRanks and Week Of Code contests every month. It even provides the learning tracks of different programming languages and topics.
CodeChef
CodeChef is an Indian site which hosts 3 contests every month. It has a Long Challenge, which is a 10-day challenge, a shorter Cook-Off challenge and Lunchtime Challenges. For beginners, the Long Challenge is a great place to start. CodeChef also organizes the CodeChef SnackDown coding competition every year.
HackerEarth
This Indian company focuses on hiring challenges and competitive programming. It conducts Circuits every month and shorter challenges called HourStorms. Circuits are generally 9-day long. HackerEarth hosts competitions in several colleges all over the country too.
Tools
During programming contests, you can use a number of tools to debug a problem or highlight a problem. These are a few tools that can be really helpful for you:
Online IDE’s
- Ideone – This is a commonly used sharing and testing code. You can easily make an account and save your programs here. However, it does not show the execution time of a program.
- Codechef/Rextester/Codeforces: Unlike Ideone, these sites will also show the execution time of your programs. With Rextester, you can even develop an execution command for your program too.

- CSAcademy IDE: This IDE has all the features of the previous IDE’s along with a workspace which helps you to work on several files simultaneously. This IDE has a ‘stderr’ stream too, so you can debug statements using ‘cerr<<’ debug statements.
- HackerRank IDE: This IDE can be used on its problem pages. An advantage it has over other IDE’s is that it can display the gdb stack trace when there are runtime errors. Hence, you can understand which line the specific segmentation error occurred.
Difference Checker

Stress testing is a great way to find out a bug in an algorithm. Stress tests mean to generate a large set of random test cases and then, to check if the efficient algorithm and the brute force algorithm agree with one another. The tools that can be used for this are CSAcademy Difftool and Diffchecker.
Online Debugger

You can use OnlineGDB for debugging the code. It is a compiler and is also a debugger for a number of languages.
Online Formatters

If you want to share your code so that others may look at it, it is best to format it in a way that makes it easy for others to read it. Online code formatters are a great way to go. Some online code formatters are: format.krzaq.cc, CodeBeautify formatter and the TutorialsPoint formatter.
Visual Tools
If you are not able to visualize a problem properly, you can use Geometry Widget and Graph Editor.
You can use VisuAlgo for featuring animations for algorithms and data structures.
You can also visualise data structures, operations and algorithms using Algorithm Visualizer.
You can also consider our competitive programming course to give your career an edge over others!