As a coder, you should not be satisfied with just reading and coding on your computer. For developing your coding skills, you need to test yourself. You need to take yourself outside your comfort zone and evaluate how you perform. That’s what different coding competitions do for you. As you compete for a prize against several experienced coders, you can really feel the heat of coding under pressure. Plus, it will push you to execute shorter and quicker codes, enhance your problem-solving skills and make you a much better coder than before.
You might be already planning to take part in a coding competition. Well, competitive programming is not easy. However, many sites and tools on the internet can help you with your coding and mould you into a good contender for the first prize in any coding competition. Here are the sites that can help you develop or improve your coding skills:
This is a US site which hosts 1.5-hour Single Round Matches.Topcoder has a specialty along with hosting these matches: they even host Topcoder Open tournament every year. On top of that, you also get tutorials written by respected and experienced Topcoder members.
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 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.
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.
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:
- 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.
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.
You can use OnlineGDB for debugging the code. It is a compiler and is also a debugger for a number of languages.
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.
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 visualize data structures, operations and algorithms using Algorithm Visualizer.
Browsing through Archives can be a great way to enhance your coding skills. Here are a few archives that you can go through:
This archive consists of several solved classical problems as well as discussion forums. It is a great archive for beginners.
UVa OJ is a famous archive with more than 3500 programming problems. This archive is generally used with Competitive Programming 3 textbook written by Steven and Felix Halim.
This archive has thousands of problems but the best part is that they are divided as per their category. You can even learn a new skill and go through problems related to that. This archive also features Codeforces ladders. In Codeforces ladders, you can join the ladder based on your Codeforces rating. You can then solve the necessary problems required for your skill level.
Project Euler Archives
This is a great archive to challenge your coding and mathematical skills. You will face a series of challenging problems, whose difficulty will increase as you proceed further. It’s a great way to take you out of the comfort zone.
Google CodeJam Archives
In this archive, you will face the problem of Google CodeJams from previous years.
If you wish to get proper training on competitive programming as well as code in a competitive programming environment, then you should enroll yourself in a course. Coding Ninjas has a great course designed only for coders who want to participate in coding competitions. It has an ongoing leaderboard to evaluate your submission and is powered by Codezen, a great online coding platform. Plus, it’s Online!
Use these tools and sites and get an edge in the coding competitions. Best of luck.