This class provides online training for the USA Computing Olympiad (USACO) Silver Division, a programming competition looked at by colleges and used as a qualifier for the International Olympiad in Informatics (IOI). Classes will be held through a computer with a teacher online via live video conference, and during each lesson students will work on challenging sample problems with the help of a teacher. Then, students attempt a problem set for homework on the same topic covered in class, and are able to ask a TA for help during office hours.
The goal of this course is to introduce students to topics and strategies essential to scoring well in USACO's Silver Divison, aiming for promotion to Gold Division. The work is mostly in the format of selected USACO (USA Computing Olympiad) problems from past contests. They require good usage of concepts from Bronze Division in combination with more advanced algorithms and higher overall complexity. Algorithms covered include coordinate compression, cycle detection, sliding window, binary search, flood fill, depth-first search and breadth-first search (DFS/BFS), and recursive generation of permutations/combinations. Essential data structures and supporting concepts like maps, priority queues, and Comparators are also covered, and there is continuous discussion of runtime efficiency.
An example Silver problem might require the student's code to track which cows in a stampede are visible to a farmer based on data about their relative positions and movement speed, with a need to efficiently track which cows are visible at different times, including the fact that some cows block vision of others.
This class is taught in Java, although all the algorithms can be translated to the other recommended language for USACO, C++, without much trouble. Java is used worldwide, and learned by most students in North America that study advanced CS in high school. Students will be expected to work in Java for the class. KTBYTE audio lectures can give students a good crash course in Java at a self-guided pace if they are already at an equivalent level in C++. or Python. Consider the KTBYTE core curriculum, CS01a-CS01b for a live-classroom format introduction!
This course's problems range in difficulty from relatively simple - chosen to introduce relevant algorithms without getting sidetracked by too many extraneous details - to intermediate - requiring more creative thinking to form an efficient strategy. Note that USACO difficulty changes over time, and many past problems are easier than current ones in the same division. The goal of this class is to build a solid foundation for tackling Silver problems, but there are many topics to learn, and mastery takes much more time. Students should expect to do extensive additional practice after taking this class before they'll feel comfortable tackling many current in-contest problems on their own. We recommend most students follow up this class with CS91s, a study group-style class that focuses on in-depth practice working through intermediate-to-hard problems, led by a teacher. Whether self studying or taking CS91s, students will find that most solutions they see are formed by using one or more of the strategies learned in CS91 - the important skills to practice are analysis, brainstorming, planning, and debugging, not memorization of even more algorithms.
CS90 and CS90s, or current contest placement in Silver division. CS02a and CS02b are highly recommended as complementary courses before, during, or immediately after CS91 to deepen algorithmic skills.
This is an example of a project that students create as they help learn specific Java coding curriculum to study for USACO
USACO format, Arrays warm-up
Simulation (Cycle Detection) - blink
Advanced use of Data Structures
Reframing and Linear Sweep
2d Array Problems
Prefix sum review, implementation practice
2d movement, implementation practice
Homework wrap-up, Recursive analysis
Grand Finale - Farmer John Has No Large Brown Cow
Summer Semester: Five Times Per Week
* Office Hours Included. See time on the bottom of website.
** Instructors currently scheduled are not guaranteed and could change at KTBYTE's discretion
☹ No classes in session.
In the meantime, click here to submit your time request.
These times don't work for you?
Press the green plus button to add more availabilities.