Programming Challenges and Puzzles
A great way to hone your coding skills is by completing programming challenges and puzzles. Solving these is also one of the best ways to warm up for programming contests and competitions.
Challenges are presented for a number of different programming languages and some puzzles are actually completely language agnostic. So, you'll find puzzles you can complete if you're used to programming in popular programming languages like Java and PHP (or something more obscure like Clojure.)
It's important to note that programming puzzles are made for coders at all levels, so if a puzzle has you completely stumped, there are tons out there that may be more suitable for your skill level.
One incredibly popular site for programming puzzles is Project Euler. Here users can solve problems in any language of their choosing. Project Euler is heavy on math problems, so you might want to look over the site before joining if you're not strong in math. However, it's free to participate (Euler runs on donations) so if you want to give it a shot (and boost both your programming and math skills, go right ahead!
The site presents users with math problems and then a text field where users can enter their answer. (There's captcha so you can't *ahem* programmatically cheat.) Thus, you never have to show your code to Project Euler, making it perfect whether you want to program in C, Python, Lisp, Java, or whatever (or my personal favorite, Ruby.)
What's really cool about this site is that upon logging in, you're greeted with a number of personal stats. As you solve puzzles, you're given badges and little blips on a progress chart (see the image below.) This is a great motivator and just generally cool to look at. Your profile is completely private unless, of course, you add friends.
UVa Online Judge
This site has literally hundreds upon hundreds of puzzles for users to solve. While UVa Online Judge isn't as pretty as Project Euler, they do a really nice job of sorting and categorizing problems so that users like you can quickly find interesting puzzles.
One thing that is really cool about this site is they show a little statistics bar next to each problem. These stats show the number of users who have attempted a given problem and what percent of these users were able to correctly solve it.
UVa accepts answers written in C, C++, Java, and Pascal. If you've got a competitive streak, you may be interested in the contests UVa Online Judge occasionally hosts.
Facebook: Solve Puzzles, Get Hired
A really awesome place to complete programming puzzles is Facebook! No, I'm not talking about networking with a random computer science student and offering to do their homework. Facebook actually offers programming puzzles. On top of this, if you do well on their programming challenges, you can actually get a phone interview! It doesn't get much cooler than that!
There are two sections to Facebook's puzzle platform. You'll want to warm up by trying your hand at some of the problems on their puzzles page before getting serious with Facebook's Programming Challenge.
Sphere Online Judge (SPOJ)
If UVa sounds appealing to you, but they don't support your favorite language, Sphere Online Judge (or SPOJ) might be right up your alley. While these problems aren't language agnostic, the number of languages SPOJ supports are astounding. In fact, SPOJ supports over 40 programming languages!
SPOJ's sorts their problems by categories such as classical, challenge, partial, and tutorial. Within each category, you can select the language of your choice to view the puzzles compatible with your language.
With a problem-set of over 6600 tasks, written in English, Polish, Portuguese, Vietnamese (and more), accessible 24 hours a day, SPOJ is a place where you can spend some serious time improving your coding skills. Like UVa, SPOJ also runs a number of contests!
While Ruby Quiz was meant for the Ruby programming language, you can, for the most part, use any programming language of your liking. Some problems may require some tweaking to work with your programming language, but it's seriously worthwhile.
Ruby Quiz offers some really in-depth puzzles on real life situations you might run into in your career as a programmer. This website became so popular that a book was made, "The Best of Ruby Quiz" which is essentially a compendium of the most popular challenges on the Ruby Quiz site. Both the book and the website are worth checking out whether or not Ruby is your weapon of choice.
© 2011 Melanie