Learning to program in a new language can often be difficult. First, you have to learn the basics to code “Hello World”. Then comes the challenge of learning to use the advanced features. And finally, the challenge of using the language the way the creator had intended.
The challenge is finding exciting exercises and projects to tackle. Something big enough to sink your teeth in. Yet not so big that the challenge seems impossible.
The best way I’ve found to learn a new language is to try your hand at small and challenging coding exercises. Coding exercises that are simple to understand and solve on paper, yet a challenge to code. Below you’ll find five websites to tackle. All there site support a myriad of languages. Challenges of all sort. And some host regular competitions to challenge your arch nemesis.
Code Eval has easy to understand coding challenges for the beginner, intermediate and advanced programmer. The challenger can submit their coding solutions in a ridiculous number of languages. The only known languages that weren’t supported that I know of are Rust and Julia. Everything else seems to be there including R, Go and Haskell. This is a great site when starting out with a new language. The problems are simple so you can focus on the programming.
Hacker Rank is similar to Code Eval in concept. Each challenge is described with short math like instructions. Something a bit more advanced than Code Eval. Hacker Rank is different in its targeting. It focuses on categories (algorithms, data structures, etc.). And programming languages (C++, Python, Java, etc.). The challenges within each category support many more programming languages than Code Eval. Including some that I’ve never heard of like Whitespace and LOLCODE. Yeah, we dare you to find a practical use for those. Hacker Rank also hosts several competitions lasting hours to days judged on varying criteria.
Code Chef is very similar to Hacker Rank in regards to challenges and competitions. It also includes a practice area for beginners to advanced developers. Plus there are the solo challenges and peer (team) challenges. Every problem has a thorough backstory that challenges the developer before coding. Solutions can be submitted in a vast number of languages. This is a great site if you want to improve your skills in algorithms or functional programming.
Halite is an artificial intelligence programming platform. The challenge is to program a bot to take on other competing bots for real estate in a virtual grid. Officially, the platform supports Python, Java and C++. The community has added support for Scala, Julia other languages. The goal is to program a bot to defeat the other bots. Once you have uploaded your bot, it is pitted against other bots in the virtual world. There’s even a leaderboard to keep track of your challengers.
CodinGame is another interesting coding challenge. You’re given a video game of sorts. You are also given some code with inputs. Your challenge is to use those inputs to generate an output which is used to control the game. The platform has a built-in IDE that supports many languages. So you can develop and test continuously until all your tests pass.
I was playing the game The Descent where you must land your spaceship. In order to do so, you must blow up mountains in your way in the order of tallest to smallest. But in each scenario, the eight mountains, of various heights, appear in different order. The goal is to tell the system which successive mountain to blow up the ship doesn’t crash. The challenges are simple to understand, but a challenge to implement. And also very addictive.
Pick your challenge and good luck.