TopCoder is a company that organises competitions for programmers in an effort to distinguish good programmers from merely mediocre coders. It organises tournaments, which work in a manner similar to most sports championships, and awards the emerging winner a cash prize.
From the words of its founder, Jack Hughes:
The computing industry has changed a lot since I got into the business back in 1984. Coming out of Boston College, I went to work for the family business: a small group of people servicing a small group of customers that would soon undergo some big changes. Now, some fifteen years later, that same company is a thriving consulting firm called Tallán, Inc. (a CMGi Company).
All this time I've held by one belief: that programmers should be recognized as one of our society's most valuable resources. But even now, with all the technological advances we enjoy, top programmers are under appreciated... and often underpaid. This site is designed to help change that inequity by providing TopCoder members with a means to prove their skills by competing in tournaments against their peers. In this way, top programmers will not only be rewarded with prizes, they will have their talents showcased to potential employers. It is the first step in developing and reinforcing their reputations as key ingredients to the new economy.
In order to enter the tournament, you must first qualify by going through some form of selection by the management. The competition consists of rounds, and each round is broken into three portions: the coding phase, the challenge phase, and the testing phase.
Coding phase: This phase gives the competitor one hour of time to solve three algorithmic problems in a specific language. Points will be awarded for the speed at which a solution is provided.
Challange phase: The challenge phase allows competitiors who managed to earn points in the coding phase to deduct points from other contestants. If a programmer discovers a bug in another competitor's program, he can choose to challenge the submission. Should the program produce invalid output upon the input of data specified by the challenger, the challenger will be awarded additional points while the faulty program will be removed from the competition. If the challenger does not manage to prove the program fault, then he will lose points.
Testing phase: This final phase will have the server run each program through a series of automatic tests to determine if the program works as it should.
The top scorers from a round will advance to the next round, and so on, till a winner emerges.