Need Help?

Need help finding the right class? Have a question about how classes work?

Click here to Ask AoPS!

USACO Bronze Problem Series

This course is a thorough exploration of algorithms and techniques that frequently appear in the USA Computing Olympiad at the Bronze level. By the end of the course, students will be comfortable applying strategies such as binary search, prefix sums, sliding windows, and greedy algorithms, and using data structures such as arrays, maps, and sets. The comprehensive content coverage and the dozens of unique practice problems provided help students master Bronze level problems as they work to advance to USACO Silver. Our (upcoming) Silver and (current) CodeWOOT classes can help them the rest of the way to Platinum (and perhaps the IOI training camp!)

12 weeks

Diagnostics

ARE YOU READY?
12 weeks ARE YOU READY?  

Schedule

Sunday
Jan 4 - Mar 22
7:30 - 9:00
PM ET
Jan 4 - Mar 22
7:30 - 9:00 PM Eastern
6:30 - 8:00 PM Central
5:30 - 7:00 PM Mountain
4:30 - 6:00 PM Pacific
Click here to see more time zones
$455 (~$38/lesson)
$455 (~$38/lesson)
CLOSED
Wednesday
Apr 8 - Jun 24
7:30 - 9:00
PM ET
Apr 8 - Jun 24
7:30 - 9:00 PM Eastern
6:30 - 8:00 PM Central
5:30 - 7:00 PM Mountain
4:30 - 6:00 PM Pacific
Click here to see more time zones
$455 (~$38/lesson)
$455 (~$38/lesson)
ENROLL
Monday
May 11 - Aug 3
7:30 - 9:00
PM ET
May 11 - Aug 3
7:30 - 9:00 PM Eastern
6:30 - 8:00 PM Central
5:30 - 7:00 PM Mountain
4:30 - 6:00 PM Pacific
Click here to see more time zones
$455 (~$38/lesson)
$455 (~$38/lesson)
ENROLL
Sunday
Jun 21 - Sep 20
7:30 - 9:00
PM ET
Jun 21 - Sep 20
7:30 - 9:00 PM Eastern
6:30 - 8:00 PM Central
5:30 - 7:00 PM Mountain
4:30 - 6:00 PM Pacific
Click here to see more time zones
$455 (~$38/lesson)
$455 (~$38/lesson)
ENROLL
Fall 2026This course will be offered in Fall 2026. Click here to join our mailing list to be notified when the course schedule is available.

AoPS Holidays

There are no classes May 23 ‐ 25, July 3 ‐ 5, September 5 ‐ 7, October 31, November 23 ‐ 29, and December 21 ‐ January 3, 2027.

Who Should Take?

There are three items to consider when signing up for the USACO Bronze Problem Series:

  • Language knowledge: Students should already be comfortable enough with C++, Java, or Python to write simple programs using basic concepts like arrays, maps/sets, if statements, and for loops. Our Introduction to Python course, for example, is sufficient preparation. Note that either Java or Python is viable for the USACO Bronze and Silver levels, but C++ is the assumed default language of competitive programming, and Python is too slow to solve many problems at the Gold level and above. It is fine to start your USACO journey in Python and pick up C++ later.
  • Competitive programming familiarity: This course is intended for students who have already tried solving at least one USACO Bronze problem, or a problem on another competitive programming platform such as Leetcode or Codeforces. Students should know how to read a problem statement, write a solution in their own preferred environment on their computer, submit the solution to the online judge, and interpret the judge's feedback. If you know a coding language but haven't tried a contest-style problem, you can satisfy this prerequisite with a few hours of exploring and experimenting.
  • Math background: Because computer science problems often boil down to math problems, the course also requires some algebraic fluency, as acquired in our Prealgebra course. For example, students should be able to solve a system of two linear equations and have a basic familiarity with functions.
If you are unsure, we recommend trying the diagnostic test above as a skills check.

Lessons

1 Simulation
2 Big-O and Complete Search
3 Further Complete Search
4 Sets and Maps, and Two Pointers
5 Precomputation, Prefix Sums, and Queries
6 Greedy Algorithms
7 Practice Contest 1 Review
8 Forced Decisions
9 Wrestling With The Unfamilar
10 Permutations and Puzzling Problems
11 Geometry
12 Intro to Binary Search

Great course. As a senior in high school I decided to take this course as I had never been exposed to math that required problem solving in my education, let alone discrete math. With this class I went from almost no discrete math knowledge (and commensurately poor problem solving skills) to a place where I will be taking the 400-level combinatorics sequence at my University in a few months and have had concurrent improvement in my problem solving ability.