4 platforms to train your algorithm skills

Bruna Pereira
3 min readAug 12, 2020

Versão em português aqui.

From time to time I like to remember the concepts behind the tasks I do as a software developer. In addition, challenges usually motivate and entertain me a lot.
In general, we don’t deal with algorithm complexity very often, but when we need it, the demand doesn’t come formatted and, sometimes, it can cost a deploy to production until we realize that there was a better solution to that problem.
That is why it is good to keep a fresh head for this type of algorithmic challenges, so that it is easy to identify issues and solve them on a daily basis.
Below I describe some platforms with exercises to practice.

ProjectEuler

I met ProjectEuler while I was still in college. One of the simplest of all, it features a giant list of more than 400 problems, with at least one difficulty rating ranging from 5% to 100%.

Given a problem, you have to report the expected result, but the code is developed outside the platform, in any language you want.

All solutions should be achieved in less than a minute. That is, if your code takes more than a minute but you get the correct result, it is worth giving it an improvement so it does not exceed the recommended time.

CodeWars

Not long after, I met CodeWars. Almost like a social network, you have statistics, in your profile, of the number of challenges completed, your list of friends, and you can participate in clans. In addition, the more difficult the challenges you are completing, you level up.

When completing a Kata (that’s what they call the challenges), you can see the code that other people have made and vote. It’s super interesting because in addition to worrying about whether your code is correct, you will also be concerned with the design of the code.

Oh, and you can also submit new Katas. They go through an evaluation process, beta testing, and if approved, you may have contributed with new Katas to the site.

HackerRank

Prior to being a training platform, HackerRank is recruitment platform. Companies that have a code resolution step use HackerRank to send the problem to applicants.

In addition, the platform offers some tests that you can do to practice your skills for a specific company, or in general.

The difference is that HackerRank doesn’t just test your algorithm skills. There are also tests for specific languages (including SQL), different paradigms such as functional programming and even libraries/frameworks like React!

In addition there are several other features such as courses, certificates issuing and contests promoted by HackerRank or other companies.

Codility

Like HackerRank, Codility is a recruitment platform. However, Codility brings a more focused look at algorithms, emphasizing data structures and time and space complexity.

There is a relatively limited amount of problems. There are 17 lessons and, on average, 3 problems per lesson. Each lesson contains a PDF file with a theoretical explanation of the subject and some practical example.
You will see that it becomes much clearer what the problem wants to solve, once you understand the purpose of the lesson.
All exercises describe the complexity required for the problems, usually stating the maximum size of the input. In addition, the time required to complete each of them is 2 hours.

The result is very cool because it brings a summary of the additional tests that are run, with several edge cases and performance tests.
Almost all the results I got also showed me the complexity of my algorithm, reporting the Big-O notation.
Finally, your result will be a percentage that varies from 0 to 100 taking into consideration the performance and precision of your solution.

Conclusion

There are certainly a number of other platforms of the same nature, each one with its own specificity.
Solving these challenges seems very difficult at first, but there are two tips that are foolproof: learn new algorithms and always practice.
Do you know any platform worth highlighting? Comment here 😃

--

--