What is the USA Computing Olympiad (USACO)?
USACO consists of a series of onine programming competitions where students solve computational problems using programming and knowledge of algorithms. It is offered multiple times during the school year and culminates in the USACO US Open Contest in the Spring. Students compete in multiple levels (Bronze, Silver, Gold, Platinum) and top scoring students are invited to join the US team for the International Olympiad of Informatics. You can visit the official USACO page by clicking here.
- USACO contests are typically offered 4 times during the school year, often December, January, and February, with the USACO US Open in March or April.
- Each contest is available in 4 divisions: Bronze, Silver, Gold, and Platinum.
- Contests are open Friday – Sunday but have a 3-5 hour time limit (depending on the contest) once started.
- Contests typically have 3 problems for each division.
- Students submit programs using C, C++, Java, or Python.
- Total score is out of 1000, each problem worth the same amount.
- Questions are automatically scored based on performance on test cases, with partial credit for problems available for submissions that work on some but not all test cases.
- During the contest, problems can be submitted more than once, with the final attempt being counted for grading purposes.
- The questions test knowledge in programming with algorithms and data structures as well as problem solving skills. Higher divisions may require more advanced data structures such as trees, hash tables, etc. and associated algorithms.
- The test is given online. Students can register individually by creating an USACO account. Visit the USACO page here for more information on registration.
When submitted, problems are automatically scored based on test cases. One of the following is given as feedback for each test case:
- Incorrect (program runs correctly but produces the wrong result)
- Missing or empty output file (program runs but does not produce the output file)
- Compiler error (program does not compile correctly)
- Runtime error / crash (program has an error during runtime)
- Time-out (program takes too long to run)
Full credit for a test case is given for correct results, all other results receive 0 credit for that test case. The amount of time a program has to run varies from problem to problem, but is usually between 2-4 seconds per input case). As long as the program finishes during the time limit (it does not time-out) there is no penalty or bonus for slower or faster running programs.
Note on programming languages: There is no benefit or penalty for using one programming language over the other. However, C/C++ or Java are recommended for the higher divisions (especially Gold and Platinum) as it is not guaranteed that Python programs can complete the problem without timing out.
Why take the USACO?
The USACO contests provide a great way to practice applying their programming skills to solve problems. Competing in multiple contests during the same year allows students to rapidly improve their skills.
Performing well on the USACO contests over time also helps students show their talent and dedication on college applications. Students with the goal of qualifying for the US International Olympiad of Informatics team need to start by succeeding on the USACO contests.
Promotion to the next Division:
Students with high scores are promoted to the next USACO division. Bronze is promoted to Silver, Silver to Gold, and Gold to Platinum. Promotion can happen in two ways:
- Students with a high score (typically above 600-800, based on the difficulty of the specific contest problems) are promoted starting with the next USACO contest.
- Students who get a perfect score (1000) are promoted immediately and can compete in the next level during the current contest.
- Student promotions are permanent, even across years, so once a student is promoted to higher division they are never required to compete in lower divisions again.
Note: Regardless of background, all students begin in the Bronze division and can only be promoted one division at a time. Advanced students, however, can quickly advance in the same contest if they receive perfect scores as mentioned above.
How to Prepare:
A good way to start preparing is to create look at past contest problems on the USACO site by clicking here. Students who create an account get access to additional practice problems.
Areteem provides many programs that help students build the foundation and problem solving skills to succeed on the USACO competitions.
- Introduction to Algorithms: Available as a live course (typically in the summer term) or self-paced course (available year round), this course teaches students the fundamentals of programming with Python plus the foundation of studying algorithm and data structures.
- 8 Week Prep Course for the USACO: Available as a live course (typically starting in the fall), this prep course focus on USACO problem review and reviews the knowledge in data structures and algorithms needed to score well.