Additional Resources and Links
This page contains pointers to on-line resources that might be helpful for our participants. These links are provided for convenience only; USACO does not officially endorse or promote any of these sites or programs.
NEW RESOURCE: A group of dedicated former finalists has put together a new on-line training resource: the USACO Guide. This looks to be an excellent site for anyone looking to succeed in USACO!
Computational Problem-Solving Before Learning to Code. Even before you have mastered coding, there are good resources out there for learning about algorithms and computational problem-solving. An excellent example is the Bebras contest, with questions that make you think algorithmically but with no coding required. This contest has been highly successful overseas (with hundreds of thousands of students participating), and a USA version has recently been established. Also see CS unplugged for another set of resources that teaches computing concepts but without programming.
Learning to Code. There are now quite a few high-quality on-line resources available for helping you get started with coding in general (not necessarily with the same algorithmic focus as USACO). Good general lists of resources are maintained by code.org, Facebook, and IT-ology. Some of the most popular novice programming environments are graphical "block-based" languages like Scratch and AppInventor (for coding Android cell phone apps), where you write programs by dragging blocks together. Other prominent sites that help teach introductory programming are Code Academy and Khan Academy.
Books on Competitive Programming. There are now several books specifically in the area of competitive programming, including Competitive Programming by Steven and Felix Halim, Programming Challenges by Steven Skiena and Miguel Revilla, and Looking for a Challenge, written by a group of authors associated with the Polish Olympiads.
Books on Algorithms. You can find many good general-purpose algorithms books out there. Some of the more popular ones include Introduction to Algorithms, by Cormen, Leiserson, Rivest, and Stein, Algorithm Design, by Kleinberg and Tardos, The Algorithm Design Manual, by Skiena, and Algorithms by Sedgewick and Wayne. Another recent publication that looks quite promising in terms of approachability is Algorithmic Thinking by Daniel Zingaro.
Online Sites / Discussion Forums.There are many good algorithmic references on-line -- for example, the collection of topics maintained at geeksforgeeks.org, or on Wikipedia. An excellent list of further on-line references appears in this CodeForces blog entry. Several former USACO finalists have also assembled useful websites with good resources, including the VPlanetCoding site by Riya Arora and a site by Benjamin Qi. One can find many videos (e.g., on YouTube) explaining how to solve various USACO problems, many of very high quality; for example, see the content at starcoder.org, produced by one of our top competitors.
Problem Archives. In addition to the old USACO problems available for practice on this site, you can find old problems from the International Olympiad in Informatics until 2007 here (the IOI is currently working on a better archiving system to make its other tasks more readily available). Other prominent "on-line judges" that include archives of hundreds of old problems include the UVa online judge, the Sphere online judge, and the WCIPEG online judge; these sites are excellent for practice.
Other Contests. Beyond the USACO and the International Olympiad in Informatics, there are many other excellent algorithmic programming contests out there:
- Regional Contests Around the World, based on the format of the IOI. Examples include the Central European Olympiad in Informatics (CEOI), the Balkan Olympiad in Informatics (BOI), the Baltic Olympiad in Informatics (also called BOI) , the Asia-Pacific Informatics Olympaid (APIO), and the French-Australian Regional Olympiad (FARIO).
- National Contests, typically used by individual countries to select their respective IOI teams. Many of these offer on-line resources or allow anyone to participate in their contests for practice (just like the USACO). Examples: Canada, Croatia, United Kingdom, Poland.
- Regional Programming Contests Within the USA. Examples include the MIT Informatics Tournament, the University of Central Florida High-School Programming Contest, the Carnegie Mellon Informatics and Mathematics Competition, the Virginia Tech High School Programming Contest, the UT Dallas "Battle of the Brains" Programming Contests, the HP-sponsored "CodeWars" contest, the Philadelphia Classic contest offered by the University of Pensylvania, and regional and virtual contests organized by the teamscode.org organization. (This list is surely quite incomplete -- if you run or know about other regional programming contests in the USA please email [email protected] to let us know to include a link to your contest!)
- Other prominent algorithmic programming contests, such as the American Computer Science League, the ACM International Computer Problem-Solving Contest, Topcoder, CodeChef, CodeForces, and Google Code Jam.
Other Camps and Courses in the USA. There are of course many different computing camps and programs available for high-school students in different regions of the USA, but not so many tend to focus on algorithmic problem-solving. Some notable examples of programs that do focus on algorithmic problem solving include a 2-week summer programming training camp for high-school students at the University of Central Florida, aimed at students who want to excel in programming contests like the USACO (details). In the Orange County Area (also in the Bay Area and online), Star League, in the Bay Area, Alpha Star Academy, X-Camp Academy, WhizKidz Computer Center, and Ascende Learning, and in Northern Virginia, Absolute Academy offer courses based on the USACO curriculum. Prof. Rajiv Gandhi organizes a Program on Algorithmic Thinking at Princeton University that provides summer program for high-school students interested in theoretical computer science. The KTBYTE program offers relevant classes in Massachusetts and also online. An organization called "Stem Ivy" offers online courses geared towards USACO training, and a CS tutoring company called Breakout Mentors also offers USACO-specific training courses. USACO sponsor EasyFunCoding offers classes that cover introductory programming up through USACO-style algorithmic problem solving. In Texas, Momentum Learning offers classes covering USACO concepts. A new tutoring operation run by USACO alums at CMU, Recursive Dragon, has recently launched.
USA Participation in Other International Olympiads.The USACO is one of several national organizations in the USA that select teams of students to participate in their respective International Science Olympiads. The most prominent are the USA Mathematics Olympiad (USAMO), the US Physics Team , the US National Chemistry Olympiad (USNCO) , and the USA Biolympiad (USABO).