### Description

The United States of America Computer Olympiad (USACO) is a computer programming competition for students in the United States. The USACO offers four competitions per year for students at four difficulties: Bronze, Silver, Gold, and Platinum. Students advance through each level by performing well in their current division and the finalists in the Platinum division are invited to represent the United States at the International Olympiad in Informatics.

### Why USACO?

Of all Olympiad competitions (USABO, USAPhO, USAMO, etc.), the USA Computing Olympiad (USACO) has the smallest participation. There are also four competitions every year - all other Olympiads take place only once a year. The participation every time is only around one to two thousand students, with no limit on the number of awards given out. Compare this to other Olympiads, which normally limit awards to the top 10% of participants. Competition starts at the Bronze level, and goes to Silver, Gold, and Platinum. After reaching a level, you can compete starting at that level every time, unlike other Olympiads where you must start from the bottom every year. As long as you are comfortable with programming and have some competition skills, you can easily reach the Silver level.

Since 2013 SpringLight has also been providing USACO preparation classes with amazing results. Most of our students have received awards at the Silver, Gold, Platinum, and Finalist levels. Many of them received perfect score 1000. One of our students received IOI Gold Award. He learned USACO from Bronze level to the Platinum level at SpringLight. As long as students can understand the condensed content and do the homework, they will quickly be on their way to the upper levels.

SpringLight’s USACO Bronze course is aimed for students who have taken introductory Java or C++ courses, but who may not need to be very experienced with programming. This course can improve basic programming skills and teach competition skills to students.

Find class detail information at **http://springlighteducation.com/courses/computer-science/**

Contact：408-480-2505, spring.light.edu@gmail.com

#### Prerequisite: Understanding of basic Java or C++. Can write code without syntax errors, and knows basics such as arrays, loops, conditionals.

不像其他奥赛一年只有一次竞赛，学生们往往需要从最初级开始往上层层突破，美国计算机奥赛USACO 一年共有4次比赛，参与即被认定为铜级，一旦升级至银, 金，白金等任何一级，就可以一直保持继续向前考，甚至连续升级。而且，USACO比赛人数也较少，每次全美都只有一两千人左右；不像其他奥赛通常有10%的过线的限制，USACO只要达到一定的分数线，就都可以出线，相对得奖比例和几率都很高。有熟练的电脑编程经验，加上一点竞赛技巧从铜级达到银级不难。

春晖教育自2013年开始USACO 各级的培训，我们大多数的学生都晋级到银，金，白金以及finalist。不少学生得到满分1000分。一位从铜级开始在春晖上课的学生在2021年取得了IOI 国际金奖。

春晖教育的铜级的课程是面对学过初级Java或C++的学生，想要加强自己的编程能力，为下次的USACO比赛备战。

课程详情： http://springlighteducation.com/courses/computer-science/

地点：Zoom

联系：408-480-2505, spring.light.edu@gmail.com

### USA Computing Olympiad Bronze to Silver Class outline

- Class Outline

We expect students to be able to raise their coding and algorithm level for USACO by learning the essential concepts from the classes and coding practice. We plan to use the following 3 websites for their coding practice.

(1) USACO (2) USACO training (separate account from USACO) (3) leetcode

On each of these 3 web sites, a user can turn in the code for a problem and see the test results immediately. They are free to use.

In every class, we assign 3-5 coding problems from these 3 web sites for students to do as homework, and at the beginning of the next class, we’re going to fully discuss these homework problems. Students think and do the coding problems at home. They might get stuck at some points, and in the next class, we help them to tackle the difficult parts, go through, and overcome the barrier. We teach students essential concepts and skills which match USACO Bronze. We will guide students to analyze the problems by simple test cases, how to think about valid approaches to solve them, and do coding effectively. Roughly speaking, students are going to learn by doing.

At the current stage, Java version used in USACO is Java 8. We will help students learn more about available data structures in Java 8 library and their usage to solve USACO Bronze coding problems effectively.

Class 1

- Open accounts on 3 web sites: USACO, USACO training, leetcode
- To solve a few problems on each of 3 web sites
- Input/output, ArrayList
- Sort, Arrays class, Comparable
- Time analysis, Big O, HashMap, HashSet

Class 2

- To fully discuss coding problems as homework in class 1
- Graph coloring, Number of operations to meet runtime limit in USACO
- Queue, Deque (Interface), LinkedList (class)
- String

Class 3

- To fully discuss coding problems as homework in class 2
- Recursive, Backtracking
- Geometry, Rectangle
- Comprehension of the problem

Class 4

- To fully discuss coding problems as homework in class 3
- To simplify the problem
- Tree, Common ancestor, Number of operations
- TreeMap, TreeSet, Big O

Class 5

- To fully discuss coding problems as homework in class 4
- Greedy algorithm
- Comprehension, Logic, Array
- Array, Go backward in time

Class 6

- To fully discuss coding problems as homework in class 5
- LinkedHashMap, Stack
- Change monitoring
- Intervals

Class 7

- To fully discuss coding problems as homework in class 6
- Class, Objects, Array of objects, Interface
- Tree (graph) coloring: D+1 colors, D = max degree
- 2D Matrix

Class 8

- To fully discuss coding problems as homework in class 7
- Number, Absolute value
- Comprehension, Simulation
- Sort, Binary search, Invariant condition

Class 9

- To fully discuss coding problems as homework in class 8
- Graph coloring, Number of operations
- Tree ancestors
- Problem reduction

Class 10

- To fully discuss coding problems as homework in class 9
- Tree: connected graph with no cycle
- 2D geometry, To simplify the problem, Route
- Comprehensive review

For more information about SpringLight Programming courses, click HERE.