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++, Java, and Python.

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 online Algorithms competitions during the semester. These can include TopCoder, HackerRank, or CodeForces. For a site like this to work, I have to be able to see what you have done, based on your login ID. 
  3. Many people will travel to the competition on 11/4 which can substitute for some online 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 online matches (#2). If you travel to the competition (#3), that will count as two.