TopCoder

TopCoder consists of programming competitions in three different areas: algorithms, component design, and component development.

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#.