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.
News:
- 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
- First week: 1.25 hours of introducing the material, and
doing sample problems. Assign homework for the week.
- Over the course of the week: mediate discussion on the
mailing list, and reviewing homework submissions to understand
where other students had issues.
- Second week: 0.75 hours of homework discussion to follow
up and take the material further.
Course Prerequisites and Student Responsibilities
Prerequisites:
- A deep desire to become a better coder. Required.
- Some programming experience.
Responsibilities - Students must
- Attend all classes unless you are sick or there is an emergency.
- Interact, ask questions, and generally participate in class discussions.
- Complete assigned homework, and interact on the mailing list.
- 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:
http://cm.baylor.edu/welcome.icpc
Official ACM ICPC Website for the Mid-Atlantic
region:
http://www.radford.edu/acm/midatl/index.html
Art of Programming
Contest:
http://www.seas.gwu.edu/~rhyspj/fall07cs197/ArtOfProgrammingContestBook.pdf
Some old problems:
http://www.seas.gwu.edu/~gogo/acm/ProblemSets/index.html
Programming Challenges:
http://www.cs.sunysb.edu/~skiena/392/programs/
Programming competition resources
http://community.topcoder.com/tc (especially see "Tutorials")
http://code.google.com/codejam
http://www.codechef.com/
Previous ICPC class:
http://www.seas.gwu.edu/~rhyspj/fall07cs197/cs197.html
Problem sets:
http://www.ntnu.edu.tw/acm/ProblemSetArchive.html
http://livearchive.onlinejudge.org/
Schedule
Events are in bold. Note that this schedule is subject
to change.
Date | Who | Topic |
9/2 |
Parmer and Price Jones |
Introduction and class structure |
9/9 |
Andrew Hirsch |
programming contest environment (file/input I/O,
http://www.seas.gwu.edu/~gogo/acm/cheats.html, 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!!! |
Grading
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.