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 web sites 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 Silver. 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 Silver 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
- Sort, Arrays class, Comparable, Comparator, Lambda
- Time analysis, Big O, HashMap, HashSet, TreeMap, TreeSet

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)
- Greedy algorithm, Binary search, Invariant condition

Class 3

- To fully discuss coding problems as homework in class 2
- 2D matrix, Graph DFS, BFS
- Recursive, Backtracking
- Geometry, Rectangle

Class 4

- To fully discuss coding problems as homework in class 3
- Tree with weight on edges, BFS
- Tree common ancestor
- Heap, PriorityQueue, Comparable, Simulation

Class 5

- To fully discuss coding problems as homework in class 4
- Greedy algorithm, Various thoughts from largest to smallest
- 2D matrix, Invariant condition
- Dynamic programming

Class 6

- To fully discuss coding problems as homework in class 5
- LinkedHashMap, Stack
- Recursive flood fill
- Graph, DFS, Connected components, Contraction of nodes

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
- Inequality, Sort, Comparable

Class 8

- To fully discuss coding problems as homework in class 7
- Collections class
- Intervals, Heap
- Various thoughts, Decreasing index, Big O

Class 9

- To fully discuss coding problems as homework in class 8
- TreeMap, Number, Absolute value
- Divide and Conquer
- Sort, TreeMap, Condition monitoring

Class 10

- To fully discuss coding problems as homework in class 9
- Tree, Graph, DFS, BFS
- Sweep line, TreeSet, Segment intersection
- Comprehensive review