USA Computing Olympiad (USACO)
Getting into a top university or your dream college is more competitive than ever. Nowadays colleges look at more than just a good resume, good grades, or a high GPA. Admissions officers who are reading your application want to see a combination of great academics as well as enriching extracurricular activities. These activities can include outstanding summer programs, academic competitions, or volunteer programs and internships in a field that you are passionate about. USACO can improve your application into any college.
We at AdmissionSight want you to accomplish your goals and make sure your application is the best that it can be. One of the ways that we achieve this is through careful guidance and planning of your high school curriculum as well as suggestions of world-renowned extracurricular activities and programs to participate in over the summer and throughout your school year. If you happen to have an interest in computer science or programming languages, the USA Computing Olympiad (USACO) might be the choice for you.
What is the USA Computing Olympiad (USACO) and What is its History?
The United States of America Computing Olympiad (USACO) is a computer programming competition for secondary school students in the United States. The USACO offers four competitions during the academic year for students at four increasingly difficult levels: Bronze, Silver, Gold, and Platinum. Participants in the USACO submit programs in one of five languages: C, C++, Java, Pascal, and Python. 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 (IOI).
The International Olympiad in Informatics (IOI), the most prestigious international computing contest at the high school level, was launched in 1989 by the United Nations Educational, Scientific and Cultural Organization (UNESCO), designed in the spirit of several other prominent international high-school olympiads. In 1992, Dr Don Piele, professor of mathematics at the University of Wisconsin Parkside, heard about the IOI and founded the USACO in order to bring a team from the USA to the event.
The first USA team attending the 1992 IOI was formed from top individuals in the International Computer Problem-Solving Contest, a popular programming contest Don had organized since 1981. From 1993 onward, USACO finalists have been selected via a national competition and invited to a rigorous academic summer training camp to further improve their skills. The training camp was held at the University of Wisconsin Parkside for many years; it was held at Colorado College from 2005-2007, and then moved to Clemson University in 2010.
For its first two decades, the USACO was directed by Don along with Head Coach Dr Rob Kolstad and dedicated volunteer staff, many of whom are former USA team members from past IOIs. Over the years, Rob built out the on-line infrastructure of the USACO to allow us to run monthly competitions at multiple levels of difficulty each year, in addition to the final US Open competition.
Together with legendary coach Hal Burch, Rob also established the USACO training pages, which have helped teach algorithmic problem-solving to tens of thousands of students from around 90 countries worldwide. After Don and Rob’s retirement from running USACO, the organization is currently headed up by Dr Brian Dean, a computer science professor at Clemson University who has been a member of the USACO staff for more than two decades.
The USACO supports computing education in the USA and worldwide by identifying, motivating, and training high-school computing students at all levels.
The organization provides hundreds of hours of free instruction and practise problems to improve your programming and problem-solving skills that can be found on their website.
Online programming contests (roughly six per year) are held for students at all levels.
They also hold an intensive summer training camp, to which the top students in the USA are invited to further improve their skills and learn advanced material. The top four students in the USA are given the opportunity to represent their country at the International Olympiad in Informatics (IOI), the most prestigious international algorithmic programming competition at the high school level.
Which students can try USACO?
Any student with an intermediate knowledge in a programming language can try out the contest. You may find it difficult, but there’s no penalty for trying and you can keep improving at your own pace! As you compete you may learn more than what you knew previously, resulting in better results in the next round. You will still be able to use the competition on your resume or college applications no matter what your results are.
Where do I take the training courses and where do I compete?
The contest and training is entirely online. You can take it from anywhere you’ll have an internet connection and programming software, usually from home. Just sign into the website at www.usaco.org to get started anywhere. Due to the nature of computer-oriented content, USACO is one of the few competitions that will be unaffected by the current COVID-19 situation that has forced many other regular programs to be cancelled, postponed, or adapted.
When can I compete?
USACO gives their main contests during 4 weekends per year – see the dates at www.usaco.org. During these weekends spanning Friday through Monday, students can choose any time to start their personal timer for that contest weekend. The time per student per weekend is usually 4 hours, but sometimes 3 or 5.
How do I sign up to compete?
Make a free account on the www.usaco.org site beforehand. You don’t need to register for a specific contest date ahead of time! Once you have an account, you can compete, as well as access all training courses and resources through your own portal.
How do I start a contest?
Log into your account after you’ve made one on the site. If it’s a contest weekend, you’ll see a button to get started on the front page!
What else should I do to prepare?
You’ll probably want to look at some of the past problems on the official site. Try submitting a solution or two on the website. Make sure the computer and work area you plan to use is ready to go. Do a search and read about past experiences from competitors. Check out guides available online to get help setting up the Eclipse IDE, create a solution for an example problem, and see how the website works. You should also read the official rules before competing. Academic integrity matters!
How much does it cost?
USACO is completely free and open to anyone. Just sign up for an account and do some practice, and you’re ready to go.
What is the timing format of the contest?
Any time during the contest weekend, go to the website and click the button to start your personal contest timer of 3-5 hours. You’ll be told the exact time limit before starting; it’s usually 4 hours. You will then receive access to the contest problems.
You can take breaks or stop early if you like, but once you’ve clicked the “start” button that weekend, your time will keep ticking until it expires – no pauses allowed. If you’re just checking it out, feel free to just spend as little or as much time trying it as you like. If you’re aiming to do well, try to plan ahead for a full block of time you can work without distraction.
What happens after the competition begins?
After you start your timer, you’ll be given access to 3-4 questions (usually 3) you must solve in your personal time window. Each will present a scenario that you must write a program to analyze. At any time during your time window, you may submit your program for testing through the website. You can freely switch between or come back to any of the problems during your time window, and continue submitting your solutions until your time is up or you get them all perfect.
Can I work in a group?
No. You must compete in a contest as an individual competitor, and working with other people during the contest is not allowed. However, you can study and prepare with anyone you like! The rules for the competition detail official academic integrity guidelines.
Do I get an award for competing?
There are no “prizes”, but you will receive recognition by advancing through the difficulty divisions offered, which will get your name listed in the contest results for the weekend that you advanced. Even being promoted by one or two divisions is very impressive, and you will be able to list this recognized accomplishment on college applications and resumes.
How do contest divisions work?
USACO has four divisions of competition, Bronze, Silver, Gold, and Platinum. All competitors start in the Bronze division. After each contest weekend, you may be “promoted” to the next level with a sufficiently high score – usually getting about 600-800 out of 1000. You can also be instantly promoted in the middle of a contest weekend by getting a perfect score on all problems.
Each division is significantly more difficult than the previous one. It usually takes quite a lot of study, practice, and attempts to advance to a new level – as much as a year or more for each one.
USACO added the Platinum division in 2015. Before that point, each division was more difficult than it is now, approximately equivalent to “one step up” in terms of today’s divisions. For example, “old Bronze” problems are closest to “modern Silver” problem difficulty, in general.
How are contests scored?
Each of the 3-4 programs submitted is tested against 10 or more “test cases” – sets of data fed into your program with known results expected. You get credit for each test case that gives the correct results. There are 1000 points total for all problems in a division in one contest weekend. You will lose credit on test cases if your program takes too long to run, takes up too much memory, or crashes, so the efficiency of your code is a factor! This is especially true in the Silver division and above.
Can I compete in multiple divisions in one weekend?
Yes. With a perfect score in your current division (like Bronze), you will be immediately promoted to the next division (like Silver). You can then choose any time that same weekend to start the new division’s contest with a fresh timer.
What kinds of problems are used in USACO?
USACO is an “algorithmic” contest, meaning it requires coming up with creative, systematic approaches to analyzing information, not just directly translating a description of a program into code. For instance, “find the position of the largest number in a list” is a very simple algorithmic problem, but “write down the commands to draw a circle and then a square” is not. You can view past contest problems for some examples.
What programming language does USACO use?
USACO accepts solutions in many languages, including Java, C++, and Python. Java and Python submissions get twice the time limit of C++ to account for their longer running times. However, Python is not recommended by USACO’s own description, because it tends to run more slowly than Java, and may have cases where even the best solution for a problem does not complete within the time limit.
Solutions posted on the USACO website for students to learn from tending to be in C++ for older problems including most “training problems”, but Java has grown increasingly popular over time.
Are there any special Java considerations I should know about to program for USACO?
You may import any standard libraries installed with Java 8, such as java.util.* and java.io.*. You must use the “default package” for your Java files; there should not be a “package” line in your source code. Completing a problem requires reading and writing text files.
Division specific topics:
- Bronze division problems can usually be solved using arrays, sometimes two-dimensional arrays, and occasionally classes or ArrayLists.
- Silver competitors should become familiar with standard data structures in the java.util package, such as List/ArrayList, Set/HashSet/TreeSet, Map/HashMap/TreeMap, Deque/ArrayDeque, and PriorityQueue, as well as the Comparator/Comparable interfaces.
- Gold competitors will often have to program their own data structures.
I’ve heard that other languages are faster than Java. Is that true?
C++ does run faster than Java, but USACO allows for twice as much time for Java programs. There should not be a problem that could not be completed in a reasonable time using Java. We recommend using a language you’re comfortable with for learning. For students following the US Advanced Placement curriculum, this language is Java more often than not. Other competitions may have different setups and may require using other languages. Remember, the real knowledge is in the algorithms, not the language. Learning C++ is a great idea, and we encourage you to do so if you have the time and motivation!
What are the memory and time limits for Java programs?
Each input test case is given “about” 4 seconds for Java, although this can differ between problems or test cases. Generally, for a worst-case input scenario, a rough estimate of 1 billion “operations” or more for your program will take too long, and 100 million or less is usually fine. Anywhere in between depends on the details.
Each input case is given “about 256 MB” of memory to run. An array of 1 million integers takes up only 4 MB of memory (4 bytes * 1 million). Time limits are almost always the limiting factor before memory limits, assuming a reasonable approach to storing data.
What is the “US Open”?
The US Open is the last contest of the year open to all competitors. It follows the same format as the December-February contests, but is often slightly harder and sometimes has more problems and a higher time limit.
What is the “Training Camp” and “IOI”?
The top 16 students in the nation competing in the Platinum division are invited to the training camp for the US national team. Each year, the US team competes in the International Olympiad in Informatics (IOI) against teams from other countries.
How hard is it to make the national team?
We applaud any of our students aiming for this goal, but competing at this level requires an incredible amount of dedication and skill. One recent account by high-level competitor Andrei Margeloiu compared preparing for this kind of competition to Olympic athlete training. “Every single day in these 8 months I was practising 5 hours.” For most students, reaching Gold or Platinum division is an incredible achievement. For example, in the entire 2017-2018 contest season, only 94 students nationwide qualified for promotion from Gold to Platinum.
What resources are there for training?
We recommend starting with reviewing past contests on the USACO site, which provides a sequence of training materials This style of the contest is often called an “online judge” system, and you may find many examples by searching online. USACO also maintains a list of additional links and resources.
Here at AdmissionSight, we believe in working closely with you to target every area of your application and present the best possible version of you as a top candidate for the university of your choice. Participating in a program like the USA Computing Olympiad will benefit you and your application in numerous ways.