# United States of America Computing Olympiad

The United States of America Computing Olympiad (USACO) is an online computer programming competition, which serves as qualification for the International Olympiad in Informatics (IOI) in the United States of America. Primarily for secondary school students in the United States, the USACO offers four competitions (December, January, February, US Open) during the academic year. Participants compete in four increasingly difficult divisions (Bronze, Silver, Gold and Platinum), each of which is provided a distinct set of 3 solvable competitive programming problems during each contest. Coding & submitting computer programs can be done in one of four languages: C, C++, Java, and Python. Competitors begin in the Bronze division, and advance through the levels by performing well in their current division.
Following the US Open (ran in late March to early April) competition, a week-long summer training camp is held in late May-early June (with around 24-30 top USACO participants invited as USACO "Finalists"). Four students are selected from a group of finalists to represent the United States of America (USA) at the International Olympiad in Informatics (IOI). Beginning in the 2020–21 season, top female participants are also invited to the camp to select the team to represent the United States at the European Girls Olympiad in Informatics (EGOI). All expenses are paid for at the training camp and the competition at IOI.

## History
### Early history

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.

## 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, among others.
In addition to the USACO Training Pages, a new resource rising in popularity is the USACO Guide, a subproject of the Competitive Programming Initiative run by USACO competitors who have done well in past USACO competitions. It is a collection of the concepts covered by USACO to help new participants perform better in the competition.

### 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 four 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 not been proctored since 2009 (it was proctored prior to that). 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 generally 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 invites 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 month-long program held to determine which four students will comprise the USA team at the International Olympiad in Informatics (IOI). Around 24 people are invited to the project, 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 to 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.
Since 2022, top-scoring female contestants have been additionally invited to the USACO training camp to select exactly 4 students for the USA team at the European Girls' Olympiad in Informatics.