Registration is now open for the third annual Facebook algorithmic programming contest. The qualification round begins on January 25th and this year's top prize is $10,000.

As in the previous contests, the 2013 Facebook Hacker Cup is open to programmers aged 18 and older from around the world (apart from Quebec and a few other places) and involves demonstrating accuracy and speed in solving problems.

The online part of the contest starts with a qualification round that lasts 72 hours and presents hopeful hackers with three problems. Every competitor who correctly solves at least one problem will advance to the online elimination rounds which are held on February 2nd, 9th and 16th and progressively weed out contestants.

The top 25 contestants to emerge from Online Round 3 will be flown on an expenses paid trip to Facebook headquarters in California to take part in the finals on March 22nd-23rd.

Out of this group, one champion will win $10,000 and the title of World Champion. and have their name immortalized on the Hacker Cup trophy. A prize of $2000 will be awarded for 2nd place and $1000 for 3rd place. $100 each will be awarded to the rest of the finalists.

There were around 8,000 participants in last year's competition, compared to over 11,000 in 2011. The final 25 came from Russia, Germany, Poland, Ukraine, China, South Korea, Japan, Taiwan, and the U.S. So far both the winners, Petr Mitrichev in 2011 and Roan Andreev in 2012 hail from Russia.

The Facebook Hacker Cup is one of the very few competitions that actually is about programming skill in the sense of thinking up algorithms and implementing them. If you want to see the type of problem that contestants will be facing, problems from last year's qualification round are available to all those who register for the competition - and if you've previously registered you'll be automatically registered for this year's event.

To give you a flavor of the contest, one of questions in 2011's qualification round involved writing a program to read in a list of integers (always fewer than 100 in total) and print out how many ways each integer could be expressed as the sum of two squares.

For example, 25 is 02+52 or 42+32.

Although this might sound like a mathematical question, it is really about how you implement a simple search for solutions as an algorithm. Notice that there is no requirement for the solution to be optimal - all you need is a working solution. Moreover, to progress to the first online round you only have to solve one of three problems. After this however it only gets tougher.