TopCoder
Encyclopedia
TopCoder is a company which administers contests in computer programming
. TopCoder hosts fortnightly 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 competitions — 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.
At the end of the contest, ratings are updated to incorporate each participating coder's performance.
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 Thursday and coders can choose a component from a list of Java
and .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.
and Yahoo!
. However, since August 2008 TopCoder returned to giving money prizes only to winners and finalists of other tournaments.
), 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.
Coders have since been divided into two divisions, Division I and Division II. Division I consists of all coders with a rating of at least 1200, and Division II consists of all coders with a rating of 1199 or less. Coders are grouped in rooms with other members of their division, in groups of up to 20 coders in such a way that within each division, the average coder ratings in each of the rooms are roughly equal.
behind TopCoder 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 sells software licenses to use the growing body of components that have been developed in competition and also acts as an outsourcing
center, allowing companies to farm out custom design and development tasks to TopCoder competitors. Finally, TopCoder allows third-party companies to act as a proxy and run competitions on behalf of their customers through TopCoder Partner Program.
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
. TopCoder hosts fortnightly online algorithm
Algorithm
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...
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 competitions — 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.
Types of competitions
- Algorithms (competition length about 2 hours): Competitors are given a set (usually three) of algorithmic problems and have 75 minutes to correctly solve as many as they can.
- Design (competition length 1 week): Competitors are given a set of user requirements and attempt to convert them 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 (competition length 1 week): Competitors are given a set of design specification and attempt to write software components that match those specification. These components are judged on their functionality and coding style.
- Marathon Matches (competition length 1 or 2 weeks): Contestants are given a particularly difficult algorithmic problem. The scoring is done by computer based on criteria specifically suited to the problem.
- Studio (competition length varies): Contestants are asked to show off their creative skills in a competitive environment.
- Architecture
- Assembly TopCoder has created Assembly Competitions as an extension of Component Design and Development Competitions. Through these competitions, competitors create high quality applications using completed components and TopCoder's established competitive method.
- Testing
- Bug Races Project teams, clients and members are able to log bugs they find in software developed and supported by TopCoder. TopCoder will communicate these bugs to the member community. Bugs that are open to the community will be posted on the Active Bug Races page.
Algorithm competitions
TopCoder has been hosting algorithm competitions since 2001. Current SRMs consist of four phases:- Coding phase (75 minutes): Coders write programs to solve three short problems using a limited selection of languages (currently C++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, JavaJava (programming language)Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, C# and Visual BasicVisual BasicVisual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...
). Each problem set consists of an easy, medium, and hard question, the difficulty of which is reflected in each problem's point value. The problems' point values vary from match to match; a common point value distribution is 250, 500, 1000. Also, the quicker a coder solves a given problem, the more points that coder gets.
- Intermission (5 minutes): After the coding phase ends, there is a short break before the challenge phase begins. This time can be used to think of challenge cases.
- Challenge phase (15 minutes): Coders can challenge the submitted solutions of other participants in their room by constructing test cases in an attempt to generate erroneous output. The challenger receives 50 points for a successful challenge (the challenged coder loses all his points for that problem), and loses 25 points for an unsuccessful challenge. Each successful challenge is added to the set of tests to be run during the system testing phase.
- System-testing phase: Each problem that survives through the challenge phase is run on many test cases. If a coder's solution fails the system tests, that coder receives no points for the problem.
At the end of the contest, ratings are updated to incorporate each participating coder's performance.
Component design and development competitions
TopCoder hosts design and development competitions in which coders can compete to create components and applicationsApplication software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
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 Thursday and coders can choose a component from a list of Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
and .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.
Marathon matches
Larger problems than are asked during a traditional TopCoder algorithm round are posted. They provide a more flexible competition format with an extended timeline.Tournaments
- 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. In 2008, TopCoder decided to discontinue this tournament.
- TopCoder High School: An annual event in which high school students compete for scholarship and school glory. This tournament was started in 2007, although TopCoder High School has existed in other forms since 2003.
Prizes
TopCoder initially awarded money every week to coders who did well in the weekly competitions, or Single Round Matches (SRMs). 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, being sponsored by outside companies such as GoogleGoogle
Google Inc. is an American multinational public corporation invested in Internet search, cloud computing, and advertising technologies. Google hosts and develops a number of Internet-based services and products, and generates profit primarily from advertising through its AdWords program...
and Yahoo!
Yahoo!
Yahoo! Inc. is an American multinational internet corporation headquartered in Sunnyvale, California, United States. The company is perhaps best known for its web portal, search engine , Yahoo! Directory, Yahoo! Mail, Yahoo! News, Yahoo! Groups, Yahoo! Answers, advertising, online mapping ,...
. However, since August 2008 TopCoder returned to giving money prizes only to winners and finalists of other tournaments.
Statistics
As of November 16, 2009 225,400 people have registered at the TopCoder website. 15.3% of those registered have participated in at least one Algorithm competition, 0.3% in Design, 0.7% in Development and 1.5% in Marathon Matches.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://apps.topcoder.com/wiki/display/tc/Algorithm+Competition+Rating+System, similar to Elo chess ratingElo rating system
The Elo rating system is a method for calculating the relative skill levels of players in two-player games such as chess. It is named after its creator Arpad Elo, a Hungarian-born American physics professor....
), 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.
Coders have since been divided into two divisions, Division I and Division II. Division I consists of all coders with a rating of at least 1200, and Division II consists of all coders with a rating of 1199 or less. Coders are grouped in rooms with other members of their division, in groups of up to 20 coders in such a way that within each division, the average coder ratings in each of the rooms are roughly equal.
Past Tournament Winners
The past tournament winners in all categories (Algorithm, Design, Development, Marathon, Studio, Mod Dash, Specification, Architecture and Assembly) are:Tournament | Algorithm | Design | Development | Marathon | Studio | Mod Dash | Specification | Architecture | Assembly |
---|---|---|---|---|---|---|---|---|---|
2001 Collegiate Challenge | qubits | ||||||||
2001 Invitational | jonmac | ||||||||
2002 Collegiate Challenge | dmwright | ||||||||
2002 Invitational | John Dethridge | ||||||||
2003 Collegiate Challenge | dgarthur | ||||||||
2003 Open | tomek | Pops | rnielsen | ||||||
2004 Collegiate Challenge | tomek | aksonov | roma | ||||||
2004 Open | tomek | adic | Standlove | ||||||
2005 Collegiate Challenge | mathijs | adic | gladius | ||||||
2005 Open | Eryx | nicka81 | visualage | ||||||
2006 Open | Petr | Pops | sindu | ||||||
2006 Collegiate Challenge | Petr | nicka81 | PE | ||||||
2007 High School | Burunduk2 | ||||||||
2007 Open | Jan_Kuipers | kyky | hefeng | Mojito1 | yiming | ||||
2007 Collegiate Challenge | Petr | nicka81 | PE | paranoia | abedavera | ||||
2008 High School | ahyangyi | ||||||||
2008 Open | tomek | Pops | romanoTC | Psyho | oninkxronda | ||||
2009 High School | crazyb0y | ||||||||
2009 Open | crazyb0y | saarixx | assistant | KOTEHOK | djnapier | PE | AleaActaEst | Standlove | pulky |
2010 High School | tourist | ||||||||
2010 Open | rng_58 | argolite | Yeung | wata | djackmania | Margarita | |||
2011 Open | rng_58 | BLE | j3_guile | Psyho | abedavera | Yeung | |||
TopCoder as a business
The business planBusiness plan
A business plan is a formal statement of a set of business goals, the reasons why they are believed attainable, and the plan for reaching those goals. It may also contain background information about the organization or team attempting to reach those goals....
behind TopCoder 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 sells software licenses to use the growing body of components that have been developed in competition and also acts as an outsourcing
Outsourcing
Outsourcing is the process of contracting a business function to someone else.-Overview:The term outsourcing is used inconsistently but usually involves the contracting out of a business function - commonly one previously performed in-house - to an external provider...
center, allowing companies to farm out custom design and development tasks to TopCoder competitors. Finally, TopCoder allows third-party companies to act as a proxy and run competitions on behalf of their customers through TopCoder Partner Program.
See also
- ACM International Collegiate Programming ContestACM International Collegiate Programming ContestACM International Collegiate Programming Contest is an annual multi-tiered computer programming competition among the universities of the world. The contest is sponsored by IBM. Headquartered at Baylor University, with autonomous regions on six continents, the ICPC is directed by Baylor Professor...
(ICPC) - Google Code Jam
- ICFP Programming ContestICFP Programming ContestThe ICFP Programming Contest is an international programming competition held annually around June or July since 1998, with results announced at the International Conference on Functional Programming....
- Online judgeOnline judgeAn online judge is an online system to test programs in programming contests. They are also used to practice for such contests. Many of these systems organize their own contests....
- SPOJSPOJSPOJ is an online judge system with over 100,000 registered users and over 10000 problems. The solution to problems can be submitted in over 40 languages including C, C++, Java, Python, C#, Go, Haskell, Ocaml, and F#...
- UVa Online JudgeUVa Online JudgeUVa Online Judge is an online automated judge for programming problems hosted by University of Valladolid. Its problem archive has over 2800 problems and user registration is open to all users. There are currently over 100000 registered users. A user may submit a solution in C, C++, Java or...