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.
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.
Online Sites / Discussion Forums.There are many good algorithmic references on-line -- for example, the collection of topics maintained at geeksforgeeks.org, or the on-line IOI community site. An excellent list of further on-line references appears in this CodeForces blog entry.
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 Olympiads 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 Olympiads, 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 University of Central Florida High-School Programming Contest, the Carnegie Mellon Informatics and Mathematics Competition, the UT Dallas "Battle of the Brains" Programming Contests, and the Philadelphia Classic contest offered by the University of Pensylvania. (This list is surely quite incomplete -- if you run or know about other regional programming contests in the USA please email email@example.com 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 new 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 Bay Area, the A-Star program offers year-round 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.
Other USA Olympiads.The USACO is one of several national high-school Olympiads 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 Biology Olympiad (USABO).