• Contact Us Today!

    (925) 218-1816 or (510) 676-0415 | info@shengmengedu.com | 6691 Owens Dr, Pleasanton, CA 94588

  • Demystify USACO

    Carmen Zhang and Dr. Yang

     

    USA Computing Olympiad (USACO) is a computer programming and problem solving competition for middle school and high school students in the USA, though students from more than 70 countries also participate. Students push their limit in abstract thinking ability and problem solving skills through USACO contests. The USACO promotion award is a precious ticket to enter elite universities around the world. USACO offers four competitions during an academic year at four increasingly difficult levels: Bronze, Silver, Gold and Platinum. Participants in USACO contests submit computer programs in one of five programming languages: C, C++, Java, Pascal, and Python though C and Pascal are rarely used by students. A student must take the Bronze Division contest first. Participants advance through the levels by performing well in their current division; some students may even be promoted through multiple divisions all in the same contest in a four-day weekend. More information about USACO contest dates, and sample contest problems and solutions from past years, can be found on its official website: http://www.usaco.org/

    The very best performers in the USACO contests are invited to an elite training camp each June, and of those attendees, just 4 high schoolers are chosen to represent the United States each year in the International Olympiad in Informatics (IOI) https://ioinformatics.org/.

     

    Online USACO Contests

    The USACO contests are an online computer programming competition. Students complete the contest problems on their own computer at home. USACO holds four contests in December, January, February and March during the academic year. In late March, USACO conducts the US Open, the "national championship". Contests generally run for four continuous hours in length, although for maximum flexibility, you are free to schedule this 4-hour block of time anywhere within a Friday-to-Monday contest weekend --- your timer starts when you log into the contest webpage and download the problems. Each contest consists of four coding challenges. You submit your solutions through a simple web interface. An automatic grading system will report the number of test cases you pass out of total 10 test cases. A student may submit the solution multiple times without deduction of scores. Participation is free and open to all. Contests are offered in four divisions:

    1)      Bronze, for students who have recently learned to program, but who have no training in algorithms beyond basic concepts like sorting and binary search.

    2)      Silver, for students who are beginning to learn fundamental problem-solving techniques (e.g., recursive search, greedy algorithms) and fundamental data structures.

    3)      Gold, where students encounter more standard algorithms of a more complex nature (e.g., shortest paths, dynamic programming) and more advanced data structures.

    4)      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.

    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 (nearly perfect score) will be automatically promoted to the next division while a contest is still running, and they can take next-division contest during the same contest weekend. Others will need to wait until results are announced a few days after the contest to see if they meet the (contest-dependent) cutoff scores for promotion.

    USACO Is Becoming Increasingly Popular

    We scraped and plotted data from the official USACO website (http://www.usaco.org/). The following figures are the results of Carmen Zhang’s “Python for Data Science” class project.

                The number of global participants in all the USACO competitions grows steadily and rapidly from 2012 to 2020. The increase between 12/2019 and 12/2018 is about 35%. Usually, USACO gets the most participants in December, because there are no USACO contests for over eight months from April to mid December. It is also rumored that the December contest is the easiest to pass. The number of participants decreases throughout each competition until it rises again in next year’s December competition. The number of participants also fluctuates periodically on a yearly basis. The participants are from more than 70 countries around the world, with the US having the most participants each competition.

  • Although the USA is leading with the number of participants, USACO is becoming increasingly popular in China in recent years, with the numbers almost doubling each year. It is most likely that China may surpass the US by the number of USACO participants in a couple of years.

  • Most participants compete in the Bronze division. For each level up, the number of participants decreases by a factor of two or more, i.e., some participants take a longer time to get promoted. For the 12/2019 Contest, there were 4442 participants in Bronze, 1617 in Silver, 694 in Gold and 317 in Platinum, which accounts for 62.8%, 22.9%, 9.8% and 4.5% of total participants respectively. Less than 5% of all participants compete in Platinum division.

  • Choice of Programming Languages

    The top 3 programming languages that are used for USACO contests are C++, Java, and Python. Delphi and C are rarely used for USACO nowadays. USACO scores are based on the number of test cases passed, runtime and memory usage. If a code produces a correct answer for a test case but runs beyond the time limit or takes too much memory, the test case is considered failed. However, each language has its own runtime limit. A Python code is given much more time to produce an answer than Java and C++. Java is comparable to C++ in CPU runtime. The issue is that a Java code is slower to write and lacks some of the features C++ has.  Python however is not  tuned for efficiency and full points are simply not attainable for some problems in Python.  Python is a preferred language for beginners to pass Bronze AND Silver. Participants start running into trouble with it for Gold. 

    C++ can be used to pass all four divisions: Bronze, Silver, Gold, and Platinum. Java can be used to pass Bronze, Silver, and Gold contests. Python is a beginner-friendly language. The primary advantage of Python is that it is easy to learn and has rich built-in libraries and concise syntax. A solution in Python is often much shorter (fewer lines of code) than that in either C++ or Java. A winning strategy is to choose an optimal language for each problem. It is allowed to use all three languages in one USACO contest. One may use Python to solve the first problem, Java for the 2nd problem and C++ for the last one. Students who know Python may still prefer it even at Gold for certain problems that it is better suited to solve.

  • Cutoff Scores for Promotion

                The cutoff scores for promotion vary by the contest division and month. Each contest has three coding challenges and 30 test cases. The total score is 1000 points for 30 test cases. This implies that one earns 33.3 points by passing one test case. The cutoff scores to pass Bronze, Silver or Gold Division are roughly between 700 and 800 points, indicating passing 21 to 24 test cases out of 30. The cutoff scores for Platinum Division are pretty erratic and unpredictable. Passing Platinum is often a daunting task.

  • Promotion Rates

    The graph above shows promotion per USACO Division. Usually bronze is the easiest to pass, and Platinum being the most challenging. For an instant promotion, the participants will have to earn a perfect score (1,000 points), passing all test cases for all of the problems. Otherwise, they will have to wait for several days for judges to set a cutoff score and post the promotion results online.

  • Shengmeng Education Center (https://shengmengedu.com/) offers year-round competition training labs to prepare students for USACO contests in Python, Java and C++. Beginners learn introduction to computer programming in various languages such as Python, C++, C#, and Java. Experienced coders may explore video game development, mobile app development, data science and artificial intelligence.

    Shengmeng Education Center is a comprehensive educational service provider that prepares students for today's competitive academic environment and future career success. We are located near Silicon Valley, California. In addition to acclaimed computer programming classes, we also offer English reading and writing, public speaking, speech and debate, math and math competition (MathCounts, AMC, AIME, USAMO), and an afterschool program.

     

    About the author: Carmen Zhang is a 8th Grader in New York. This is her project report for a data science class at Shengmeng Education.