Topcoder: Difference between revisions

Content deleted Content added
See also: +icfp
Jmzero (talk | contribs)
No edit summary
Line 1:
{{cleanup-remainder|January 2006}}
 
'''TopCoder''' is a company which hostsadministers regularcontests onlinein [[computer programming]] contests, as well as a larger and more structured yearly contest, the ''TopCoder Open''. The termContests "topcoder"are may also refer to a person who competestypically in these contests.formats:
 
*'''Algorithms''' - Contestants are presented with a set of algorithm problems and have 75 minutes to solve as many of the problems as they can. For each problem, submissions are tested against a range of inputs and only those solutions that answer all inputs correctly receive a score. Points are assigned based on the total time taken for a given problem to be completed. Points can also be earned or lost by "challenging" other competitor's submissions - ie. submitting input cases that cause a rival's submission to fail.
*'''Design''' - Over the course of a week, designers compete to convert a set of user requirements into a usable software design specification. Their efforts are judged on a variety of "real-world" criteria on how correct and practical their design is.
*'''Development''' - Developers are given week to write software components that match a given design specification. These components are judged on their functionality and coding style.
*'''Marathon Matches''' - Contestants are given a week to produce their best software solution to a difficult algorithm problem. The scoring is done by computer based on criteria specifically suited to the problem.
 
TopCoder hosts weekly online algorithm competitions - known as SRMs or "single round matches" - as well as weekly competitions in design and development. The work in design and development produces useful software which is licensed for profit by TopCoder. Competitors involved in the creation of these components are paid royalties based on these sales. The software resulting from algorithm competions - and the less-frequent marathon matches - is not usually directly useful, but sponsor companies sometimes provide money to pay the victors. Statistics (including an overall "rating" for each developer) are tracked over time for competitors in each category.
 
In addition to the regular competitions above, TopCoder hosts a number of large events throughout the year:
 
*'''Google Code Jam''' - Each summer Google sponsors a set of TopCoder competitions with qualifying rounds and a tournament structure. There are also regional Google Code Jams which are restricted to - for example - participants from China; these occur throughout the year
*'''TopCoder Open''' - An annual event which features algorithm, design, and development competitions in a tournament structure - culminating in a live finale for the top competitors.
*'''TopCoder Collegiate Challenge''' - An annual event in which college students compete for money and school glory.
 
The [[business plan]] behind [http://www.topcoder.com topcoder.com] comprises several objectives. One goal is to be a recruitment center where companies can come to find programmers who are proven to be highly skilled, and where talented programmers can display their skills to a worldwide audience. Large companies sponsor TopCoder events to gain credibility with and exposure to talented developers. TopCoder also software sells licenses to use the growing body of components that have been developed in competition. Finally, TopCoder acts as an [[outsourcing]] center, allowing companies to farm out custom design and development tasks to TopCoder competitors.
 
==Algorithm Competitions==
 
TopCoder has been hosting algorithm competitions since [[2001]]. Each contest consists of four phases:
Line 15 ⟶ 32:
TopCoder initially awarded money every week to [[coders]] who did well in the weekly competitions, or Single Round Matches (SRMs). SRMs are now sponsored by outside companies such as [[Google]] and [[Yahoo!]], and for a while, prize money was only awarded twice a year to winners and finalists of the TopCoder Collegiate Challenge (TCCC, which is in the spring) and the TopCoder Open (formerly the Invitational, which is in the fall). As of [[June 2005]], some weekly SRMs began to once again award prize money.
 
==Component Design and Development==
The [[business plan]] behind [http://www.topcoder.com topcoder.com] comprises several objectives. One goal is to be a recruitment center where companies can come and find programmers who are proven to be highly skilled. Another aim is to be an [[outsourcing]] center. TopCoder also hosts design and development competitions in which coders can compete to create [[software componentry|component]]s and [[application software|applications]] that third parties have contracted for.
 
TopCoder hosts design and development competitions in which coders can compete to create [[software componentry|component]]s and [[application software|applications]] that are either generally useful, or that third parties have contracted for.
 
TopCoder design and development competitions are week-long competitions. New components are posted every Wednesday, and coders can choose a component from a list of [[Java programming language |Java]] and [[Microsoft .NET|.NET]] components, and they have a week to design or develop their chosen component. Each week new components are posted. Development components are generally components that have been designed in a previous component design contest.
 
==Competitions, Ratings, and Divisions==
 
In the early days, the ''Iron Man'' system was set up under which coders were grouped into rooms of ten according to skill level (determined by [http://www.topcoder.com/index?t=support&c=ratings rating]), in order to encourage newcomers (who would have little hope of beating out the best coders for prize money) to stay and compete. After the contest, the 3 highest scoring coders in each room were paid according to the skill level of the room (winners in the room of contestants with the top 10 ratings were paid more than those in the room with coders 11-20, and so on). This created some paradoxical situations such as the possibility of coming fourth in the whole contest and getting no money, while the 111th placed contestant got paid, and gave rise to ''ratings diving''. Ratings diving, or taking a ''ratings dive'' was accomplished simply by doing very poorly on purpose in a particular contest (by opening and not submitting any problems or submitting incorrect challenges). As a result, a contestant would, in their next contest, be placed in a room with 9 coders among whom they had a good chance of winning some money. The idea was that the dramatically increased chance of winning money made up for the fact that the money to be won was a lesser amount given the lower average rating of the room.