This course is intended as preparation for the ACM programming teams and works for anyone who wants to improve their coding skill, especially for algorithmic problem solving. You will also generally learn the Java programming language in here if you don't already know it as the ACM only allows C, C++, and Java.

The work for the course comes in a number of forms.
  1. During class we will look at problems from the ACM and have students work in teams to solve those problems. If you don't get a solution you will be asked to work on it over the following week to show the next class.
  2. I want everyone to participate in TopCoder Algorithms competitions during the semester.
  3. Many people will travel to the competition on October 3rd and 4th which can substitute for some TopCoder matches.
  4. After the ACM competition we will begin work on writing problems for the spring High School competition which you should contribute to.
I will expect you to participate (#1 and #4) every week. You should do four TopCoder matches (#2). If you travel to the competition (#3), that will count as two.