United States of America Computing Olympiad


The United States of America Computing Olympiad is a computer programming competition primarily for secondary school students in the United States. The USACO offers four competitions during the academic year in four increasingly difficult divisions: Bronze, Silver, Gold and Platinum. Participants advance through the levels by performing well in their current division. A week-long summer training camp is held where four students are selected from a group of 24 finalists to represent the United States at the International Olympiad in Informatics. All expenses are paid for the training camp and competition at IOI. The USACO was founded in 1992 by Don Piele at the University of Wisconsin–Parkside and is currently maintained by director Brian Dean at Clemson University and a dedicated volunteer coaching staff.
Participants in the USACO submit programs in one of five languages: C, C++, Java, Pascal, and Python.

Parts of the USACO

Training pages

The USACO contains several training pages on its website which are designed to develop one's skills in programming solutions to difficult and varied algorithmic problems at one's own pace. In addition to around 100 problems, there are texts on programming techniques such as greedy algorithms, dynamic programming, shortest path, and many others. Enthusiasts find the training pages so useful that people from other countries use them to prepare for their own national Olympiads; those from other countries in fact outnumber U.S. participants.

Internet competitions

There are four Internet competitions held each year, each of which consists of three or four problems to be completed in a time span of three to five hours. These competitions are unproctored but are monitored strictly, and users caught attempting to cheat are banned for life.
In addition to testing solutions based on correctness of answers, additional restrictions include run time and memory usage. Historically, scores were computed based on number of correct answers, with weighted values; harder problems and test cases were given more weight than easier ones. In recent years, the scoring model has shifted to an unweighted system, in which every problem and every test case is accorded equal value. Overall, these contests are designed to be very hard, and as such have a low average score compared to other programming competitions.

US Open

In addition to the three normal internet competitions, a fourth competition, the US Open, is held annually in early April. The competition is touted as 'the USACO's flagship tournament' and is a five-hour competition consisting of three questions. The US Open has been unproctored since 2009. Like the internet competitions, the US Open is divided based on divisions, from Bronze to Platinum, and is also held online.
The US Open is much more difficult than the normal Internet competitions, but is scored in the same manner. Performance in the US Open is one of the key elements in determining the invitees to the USACO training camp, although a solid performance in the other internet competitions also plays a major role.

Training camp

The USACO training camp is a week-long program held to determine which four students will comprise the USA team at the International Olympiad in Informatics. Around 24 people are invited to the camp, which is usually held in late May or early June. The training camp was held at the University of Wisconsin–Parkside for many years, then Colorado College from 2005-2007, and then moved to Clemson University in 2010.
To qualify, one must be a secondary school student in the U.S. and have scored highly on the Internet contests and/or the US Open. At the camp, contests are held in the morning, followed by discussion of solutions. In the afternoon, the students engage in various recreational activities. There are also a few lectures on different areas of computer science and programming. At the conclusion of the camp, there is an ice cream party recognizing the participants, in particular those who are selected for the delegation to the IOI.