Description:
This is a seminar course with the specific goal of training undergraduate students for ACMICPC (International
Collegiate Programming Contest.) ICPC is a 2tier 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
this page.
Note that coding competitions are good
preparation for technical interviews, since both require problem
solving and writing code in a highpressure, timelimited setting.
Prerequisites: Prior exposure to programming and the consent of the instructor.
Tentative Syllabus:
 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
Textbooks:
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,
Springer 2003.
 The Algorithm Design Manual, second edition, S. Skiena, SpringerVerlag, 2008.
 Art of Programming Contest, 2nd edition, A.S. Arefin, Gyankosh Prokashoni, Bangladesh.
Available Online.
Handouts and Homework:
All handouts and homework assignments will be posted on Oncourse.
Grading:
 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
writeup.
 Problem sets: 50%
Associate Instructor:
Ground rules:
 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
The Code
of Student Conduct.
