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. For the first part of the semester course time will be used to finalize the problem set for the High School competition. This includes writing the problems, making judging input and output sets, and writing solutions for the problems. Each student will be assigned a few problems from the set that they have to solve on their own to verify the correctness of the input and output sets.
  2. I want everyone to participate in TopCoder Algorithms competitions during the semester.
  3. After the HS competition problem set is done, we will spend class time looking at ACM problem sets and working to solve problems from previous years in various regions. You will work on these in teams with the goal of selecting teams for next year.
I will expect you to participate (#1 and #3) every week. You should do four TopCoder matches (#2). I can't count HackerRankĀ until they provide a way for me to see what you did and when.