Computer Programming Contest - a contest where programmers attempt to solve as many computer problems as they can. The team which solves the most problems in the least amount of time wins.

A programming contest is a classic example of black box testing. Teams submit their solutions (code) to the judges. The judges run/test the submission (also known as a run) against their data and return a judgement. The teams have no knowledge of the judge's data set, but have a relatively clear description of the input data.

Contest Problems

Contest problems are typically non-trivial and require the power of a computer to solve. The problems must be solved within a time limit (3 or 5 minutes typically).

A past contest problem which epitomizes this characteristic is: read two integers from an input line. Raise the first number to the second number (exponentiation) and return the last two digits of the result. The numbers range from 0 to 2147483647.

Example Input:
4 2 
10 8
Example Output:
16
00
A simple example is: 4 2 ( 4 * 4 = 16 ) answer would be 16. Another example is: 10 8 ( 10 * 10 *... = 1000000000 ) answer would be 00. Some Judge's test cases were:
1 1 
2147483647 0
2147483647 1
10 300
0 2147483647 
2147483647 2147483647
Multiplying 2 billion times itself 2 billion times takes hours, so there is a trick to solve the problem within the time limit. The time limit is for all test data sets.

This is an example of a local contest problem. In the Regional and Finals (ICPC) Contests the problems typically are much more difficult.

Contest Scoring

There as many ways to score a contest as there are contests. Typically, the team who solved the most problems wins. Tie-breaker are penalty points (also known as points). For each problem solved, a point per minute is assessed. Next, if any submissions for that same problem were unsuccessful (given a "no" by the judges) 20 or 30 points may be assessed per problem solved. These penalty points are accumulated into a single score and when two teams have solved the same number of problems, the team with the fewest points wins. The last tie breaker - if both teams have the same number of solutions and same number of penalty points, the team who solved their first problem the fastest wins. Another note, if by chance a team submits a solution for a problem they have already solved, that submission is not counted against the team. (Though there are some contests where all submissions are counted against the team) In recent memory the fastest solution tie break has never been used.

Scoreboard

A scoreboard is used to display the rankings for a contest. During the contest there are at a minimum 4 columns of information: rank, Team Name (or Id), penalty points, and number of problems solved. At the end of a contest the scoreboard can simply show the rankings.

Contests

The ACM Programming Contest which has changed name to be know as the International Collegiate Programming Contest (ICPC), is a college level contest where teams compete to be in the ICPC Finals. A team may compete in a local contest (per University for instance) to qualify for a regional contest. One or more top teams from the regional contest qualify for the Finals. The official web site for the ICPC is http://icpc.baylor.edu , at this site are the official rules, qualifications and standings from the latest contest. The Regional Contests are typically in the fall. The Finals is typically held in March. Recent Finals were held in: Eindhoven Netherlands (1999), Orlando Florida USA (2000), Vancouver BC Canada (2001), Honolulu Hawaii USA (2002), Beverly HIlls California USA (2003), Prague Czech Republic (2004).

Automated Web Contests - there are a number of contest which are completely automatic. Each team/person can submit their code solution to a web site (computer) and view the results and scoreboard. These contest may last for as long a month.

High School Contests - there are programming contests for high schools as well. Since many high school students are new to programming the contest problems are less challenging.