TopCoder

TopCoder consists of programming competitions in three different areas: algorithms, component design, and component development.
 * See TopCoder Problems Category for some categorized problems.

Algorithms
For the algorithm competitions on TopCoder, four languages are accepted: C++, Java, C#, and VB.NET. While most coding competitions have you develop a complete program, TopCoder only asks you to provide a single function inside a single class. Also, the algorithm competitions are live, meaning you are only rated if you participate during the actual SRM, though practice rooms (with problems from past SRMs) are available.

Single Round Matches
A single round match (SRM) is a ninety-five minute algorithm coding competition. Each competitor is given three problems of varying difficulty (easy, medium, hard) and is scored based on how quickly they provide correct solutions. Each SRM is broken into four phases: coding, intermission, challenge, and system tests.

Coding Phase
The coding phase lasts seventy-five minutes and is when all actual coding takes place. Your score for each problem is a function of the time between opening the problem and submitting the solution. A point penalty is given for resubmission. After the coding phase, your solutions cannot be changed. A five minute intermission follows the coding phase.

Challenge Phase
After the intermission, there is a fifteen minute challenge phase. During the challenge phase, you can view the solutions of other coders in your assigned room. If you think their solution is incorrect, you can challenge them by giving their program whatever parameters you wish (provided they meet all of the constraints). If their solution provides the correct output, you lose 25 points. If their solution provides incorrect output, you gain 50 points and that solution is marked unchallengeable.

System Testing
Following the challenge phase, system testing takes place. During the system test phase, each solution is tested against a large number of inputs to determine if it is correct. Corner case tests are included. If your solution fails to provide the correct output for either a challenge or a system test, you receive no credit for it. The time it takes for system testing to complete is widely variant.

Marathon Matches
Marathon matches are closer to the standard online judge system than SRMs. You are given an extended period of time to solve one problem. Each problem has their own scoring criteria.

Design
For the design competitions on TopCoder, two languages are accepted: Java and C#.

Development
For the development competitions on TopCoder, two languages are accepted: Java and C#.

External Topcoder Tools
Since much of statistics are exported through XML, there are some useful or fun external tools:

jmzero's Random Statistics
jmzero's Random Coder Stats - Random compliment generator, allows you to see how you stack up against your peers!

Petr's MicroMatch
Petr's MicroMatch - Used to compare Match-By-Match of two competitors.

aussie's Submissions Statistics
aussie's Submissions Statistics - Used for breaking down a particular coder's performance depending on the difficulty.

aussie's Rating Chart Comparisons
aussie's Rating Chart Comparisons - Used for comparing rating charts.

dskloet's Rating Chart Graph Tool
dskloet's Rating Chart Graph Tool - Used for comparing rating charts.

dskloet's Division Summary Tool
dskloet's Division Summary Tool - Math division summary viewer.

felix_halim's Division Summary Tool
Division Summary - Match division summary viewer.

MB__'s TC Utilities
MB__'s TC Utilities - Tools for predicting some results of currently running (or just ended one) SRM match

otinn's TopCoder Statistics
otinn's TopCoder Statistics - A collection of various "Top 100" and other statistics, as well as TopCoder duels and micromatches