CSci 3907, Fall 2011: GW ACM ICPC Training

Professors: YOU
Other minor professors: Rhys Price Jones and Gabriel Parmer
{rhyspj,gparmer} at gwu
Class Schedule: Friday 2:30-4:30, Tomp 211

Prepare students for the ACM Programming Competition and other similar events. Increase understanding of how algorithms can be applied to solve problems; improve implementation skills and team dynamics under competition constraints.

  • 9/02: First day of class. We so excited! Fun, fun, fun, fun!

Please click on any section below to see its contents.

Objectives and Structure

Objectives - This class' success will be directly proportional to the effort put into it by the students of the class. You are the professor for this one. The saying goes:

when you are explained the information, you learn it;
when you apply the information, you understand it;
when you teach it, you master it.

This class will not only prepare you for the ACM ICPC, but will give you a taste of that mastery.

Structure - The work for this class will be broken into two components:

  • Students must complete homeworks assigned to them pertaining to the techniques being practiced in class. Most of these problems will be drawn from repositories of past problems. Students must interact in class, and participate. Bring your creativity!
  • Students will alternate teaching the techniques and ideas each week. This will include
    1. First week: 1.25 hours of introducing the material, and doing sample problems. Assign homework for the week.
    2. Over the course of the week: mediate discussion on the mailing list, and reviewing homework submissions to understand where other students had issues.
    3. Second week: 0.75 hours of homework discussion to follow up and take the material further.

Course Prerequisites and Student Responsibilities

  • A deep desire to become a better coder. Required.
  • Some programming experience.
Responsibilities - Students must
  1. Attend all classes unless you are sick or there is an emergency.
  2. Interact, ask questions, and generally participate in class discussions.
  3. Complete assigned homework, and interact on the mailing list.
  4. Take their teaching responsibilities very seriously (see course structure).

Homework is due by 11:59pm on Thursdays, unless otherwise indicated. Submit via blackboard.

Course Material

Official ACM ICPC Website:

Official ACM ICPC Website for the Mid-Atlantic region:

Art of Programming Contest:

Some old problems:

Programming Challenges:

Programming competition resources (especially see "Tutorials")

Previous ICPC class:

Problem sets:


Events are in bold. Note that this schedule is subject to change.

9/2 Parmer and Price Jones Introduction and class structure
9/9 Andrew Hirsch programming contest environment (file/input I/O,, competition HOWTO/techniques), binary search discussion (actual implementation, variable overflow, edge cases), complexity (big Oh), greedy algorithms
9/16 Nate Scott (setup environment) Mock Competition
9/23 ??? backtracking algorithms
9/30 ??? graph basics, DFS/BFS, Dijkstra, Floyd-Warshall, Mazes
10/7 ??? Mock Competition
10/14 ??? geometry
10/21 ??? dynamic programming
10/28 ??? Mock Competition
11/4 ??? ???
11/5 Competition!!!
,.. Nationals!!!
,.. World domination!!!


Grades will be assigned with the following proportions:

Homeworks: 33%
Attendance and Participation: 33%
Teaching: 34%

Academic Honesty

Just as you can do a google search for code online, it is trivial for us to do the same. We have caught numerous people cheating in the past in this way. If you feel pressured about an assignment, please come see me instead of cheating.

This course is about collaboration! You should talk actively about the homeworks, but do not share code with each other unless explicitly allowed to. This policy will be strictly enforced. If you're having significant trouble with an assignment, please contact me.

Academic Integrity Policy
Credit: I'd like to thank Prof. Narahari for the first versions of this academic honesty policy.