U S A C O

USA Computing Olympiad

​BayCodingClub Provides training Only! Student needs to register the Competition by yourself at USACO.org

 

2023-2024 Schedule 

Dec 15-18: First Contest
Jan 26-29: Second Contest
Feb 16-19: Third Contest
Mar 15-18: US Open
Jul 15-21: EGOI 2023 (Sweden) 
Aug 28-Sep 4: IOI 2023 (Hungary) 

First Place at IOI 2019!

The USA team attending the 2019 IOI in Baku, Azerbaijan. From left to right: Eric Zhang (gold), Benjamin Qi (gold, 1st place individual winner), Daniel Zhang (gold), and and William Lin (silver).

First Place at IOI 2018!

The USA IOI team for a superb showing at the 2018 International Olympiad in Informatics in Tsukuba, Japan! From left to right: Spencer Compton (gold), Eric Zhang (gold), Benjamin Qi (gold, 1st place individual winner), and William Hu (bronze).

BCC Beginner's Guide to USACO

USACO stands for “United States of America Computing Olympiad”. It is the most important programming competition in the US, primarily for high school students.

If you’re a parent, your first concern may be how useful competitive programming is to future college and job prospects. Many successful competitive programmers attend top rated CS schools such as CMU, MIT and Stanford, and often land high-earning jobs in fields like quantitative finance or investment banking. Compared to other areas such as math or piano, competitive programming is a smaller community, making it overall less difficult to stand out.

Competitive programming also builds practical programming skills, as it’s a great way to practice implementing algorithms and designs. The average white collar tech worker can likely only consistently qualify for USACO silver–the second lowest level–so even mastering the basics of competitive programming can give students a massive advantage later.

In addition, competitive programming feels very rewarding, and many competitors pursue it as a passion in their free time in lieu of other entertainment. The community is very friendly and tight-knit, and is very supportive despite the competitive nature.

Progression System
USACO has four main levels: Bronze, Silver, Gold, and Platinum. All competitors automatically start in bronze. After each competition, competitors that score high enough (usually above 700-800 out of 1000 points) are promoted to the next level. Additionally, competitors that earn a perfect score on one level during a competition are immediately promoted and can start working on the next level right away.

Promotions are permanent: students cannot ever demote from a level once they have reached it, even if they do not participate or perform poorly in a competition. However, a poor showing at the USACO Platinum level may impact a competitor’s ability to be invited to the USACO training camp.

If a competitor earns consistently high scores in USACO Platinum throughout the year, they earn an invitation to the USACO training camp. There, competitors train under top instructors and study together.

Finally, the very best camp participants are selected to represent the US in the IOI, short for “International Olympiad in Informatics”. This is an international competition and the very highest level of competitive programming.


Scoring System
USACO competitions always have three problems, each with some number of test cases (most commonly 10). Competitors receive points for each test case their program correctly solves; thus, earning partial credit is possible on a problem. Test cases within the same problem are usually worth the same amount of points, but may differ across problems. Completely solving all three problems is always worth 1000 points.

Example: USACO Bronze often has three equally weighted problems, each with 10 test cases. Thus, each test case is worth 33.33 points. If a competitor solves all of problem 1, two test cases on problem 2, and nothing on problem 3, they earn (33.33 * 10) + (33.33 * 2) + (33.33 * 0) = 400 points out of a total 1000.

A test case is considered “solved” if the program returns the correct output without breaking any limits. If the program uses too much time, too much memory, causes an error, or otherwise returns an incorrect answer, it is not solved.


Some Competition Rules
Competitors must work alone; they may not discuss the problems with or get help from others until the competition is over. Competitors may also not consult any other resources such as textbooks or the internet, apart from syntax and libraries.

Competitors may not create more than one account.

There are no second chances for cheating.

A full list of rules and regulations are available on the USACO website.

Competition Date, Place, and Time
The competition is held 4 times a year, once per month starting from late December through late March/early April. The late March/early April competition is called “US Open” and generally somewhat harder than the others.

The competition is fully online at usaco.org . Participants need an account, though no pre-registration is needed; participants may start at any time.

Each competition is open for a timeframe of approximately 4 days: for instance, the 2021 December contest was held between December 18 through December 21. Participants can take the competition in any continuous 4 hour period during this timeframe.

Writing and Submitting Code
Currently, USACO accepts programs written in C++/C++11/C++17, Java, and Python 2/Python 3. We personally recommend C++17/Java/Python 3, as they have more functionalities and problems can arise from using older languages.

Once a competitor believes they have solved a problem, they should save their code as a file. This can then be uploaded to a live online grading server, which will show them the results after processing their code.

A note on past problems: USACO currently uses standard I/O for input and output. However, prior to December 2020, USACO used file I/O for its problems. Thus, some guides on submitting your solutions may be out of date. We recommend you use training.usaco.org or usaco.guide as references for file formatting.


Cost
Participating in USACO is completely free. Competitors invited to the USACO training camp have most expenses paid for apart from travel.

Learning a programming language
Aspiring competitors should start by familiarizing themselves with the basics of the programming language they want to compete in. For USACO Bronze and Silver, students need to learn up to methods, as well as some basic techniques such as recursion or iterating through an array. Many problems in USACO Gold and Platinum will additionally require the use of structs and classes.

Bay Coding Club offers classes in C++, Java, and Python.

Resources to get started

  • train.usaco.org: The official USACO training website. Formatted as a level-by-level progression system, unlocking a new topic once all problems from the previous one have been solved. Documentation is limited but thorough.
  • usaco.guide: An online resource created by former top competitors. Has extensive documentation of a lot of topics and problems, very useful for self-studying certain topics or just general practice.
  • Guide to Competitive Programming: A classic textbook recommendation. Most information is updated with newer versions and it provides a very comprehensive coverage of every level of topics, though it is also geared towards some competitions other than USACO.
  • BCC: The article would not be complete without some degree of self-promotion. We offer public and private USACO classes to suit every type of student.

On-Line Contests

The USACO holds periodic web-based contests during the academic year, and in the late Spring conducts the US Open, our “national championship” exam. Contests generally run for three to five continuous hours in length, although for maximum flexibility, you are free to schedule this block of time anywhere within a Friday-to-Monday contest weekend — your timer starts when you log into the contest and download the problems. Contest tasks are presented on the web, and you submit your final solutions through a simple web interface. Participation is free and open to all.

Contests are offered in four divisions:

  • Bronze, for students who have recently learned to program, but who have no training in algorithms beyond basic concepts like sorting and binary search.
  • Silver, for students who are beginning to learn fundamental problem-solving techniques (e.g., recursive search, greedy algorithms) and fundamental data structures.
  • Gold, where students encounter more standard algorithms of a more complex nature (e.g., shortest paths, dynamic programming) and more advanced data structures.
  • Platinum, for advanced students who are well grounded in algorithmic problem-solving techniques, who wish to challenge themselves with sophisticated and more open-ended problems.
cup, podium, trophy

All participants start in the bronze division, and those who score particularly well in a contest will be promoted to the next division. Contestants scoring particularly highly will be automatically promoted to the next division while a contest is running; others will need to wait until results are announced at the end of the contest to see if they meet the (contest-dependent) cutoff for promotion.

For those who prefer coding in Python, our training pages now support submission of programs written in Python 2.7 or Python 3.6.

For those who prefer coding in Java, our programs is coming soon..

Computer Science + Art + Creativity

raise, challenge, landscape

Parents Reviews

5/5
My Daughter was happy learning with the Game disign class at BayCodingClub, she made her first "online game" .
Mila Kunis

Deal Of The Day - 5% Off On All
Courses

Need to registered class before, mail to baycodingclub@gmail.com to apply with your reciept

5/5
Bay Coding Club is Unique K12 training organization, I believe it will grow fast and brings more creativity to the young generations.
Mike Sendler
Featured Brands:
minecraft, steve, sword
icon, icons, windows
facebook, flat, flat icon
Edu_Trophy-01