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.

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 programming 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 do one competition and a number of practice problems on HackerRank. How many points worth of practice problems you need to do depends on your level. (No Data Abstraction: 100 points, No Algorithms: 200, With Algorithms: 300)
  3. After the High School 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.