This is a seminar course with the specific goal of training undergraduate students for ACM-ICPC (International
Collegiate Programming Contest.) ICPC is a 2-tier competition and the first step is to pass the regionals
that take place in the Fall, every year. This course will be taught by multiple instructors to ensure that students
get the best instructions on each topic. For details about the competition see
Note that coding competitions are good
preparation for technical interviews, since both require problem
solving and writing code in a high-pressure, time-limited setting.
Prerequisites: Prior exposure to programming and the consent of the instructor.
- Array and iteration problems
- Data structures
- String problems
- Sorting problems
- Arithmetic problems
- Combinatorics problems
- Number theory problems
- Backtracking problems
- Graph traversal problems
- Graph algorithms
- Dynamic programming
- Grid problems
- Geometry problems
- Computational geometry
We will be using many books and problem sets. Thus there is no single textbook for the course, however we will closely follow the material and presentation that can be found in the following books that are strongly recommended.
- Programming Challenges: The Programming Contest Training Manual, S. Skiena and M. Revilla,
- The Algorithm Design Manual, second edition, S. Skiena, Springer-Verlag, 2008.
- Art of Programming Contest, 2nd edition, A.S. Arefin, Gyankosh Prokashoni, Bangladesh.
Handouts and Homework:
All handouts and homework assignments will be posted on Oncourse.
- Homework assignments: 50%
- There will be weekly homework assignments.
- Solutions must be written LEGIBLY.
- It is encouraged to discuss the problem sets with
others, but everyone needs to turn in a unique personal
- Problem sets: 50%
- Collaborative work:
One of the best ways to learn new material is to collaborate in groups.
You may discuss the homework problems with your classmates, and in this way
make the learning process more enjoyable. However, the homework you hand in must be
your own work, in your own words and your own explanation. As for projects completed by groups, the contributions
of each member must be clearly explained on a separate page.
- Here is the link to
of Student Conduct.