The ACM international collegiate programming contest
brings together over 29,000 students world-wide who compete at regional
competitions for a coveted spot in the world finals, which is held every year in spring.
For more information & background, see this 2013 Fact Sheet.
The ACM Programming Competition focuses on algorithmic problem solving - teams of three, using just one computer, solve as many of 8 problems during 5 hours as they can. Teams are ranked by the number of problems solved, with cumulative time needed used as a tiebreaker. The judge provide sample input/output data, but the input/output used for judging is kept secret. Most problems used in these competition require the application (or adaptation) of traditional algorithms and techniques. Very often, the problems are designed such that the application of an algorithm with inappropriate complexity (e.g., implementing an O(n^2) algorithm where a linear algorithm is possible) leads to failure due to time-out for the judge's input data.
Besides the ACM programming contest, many other contests have sprung up in the past years, such as Google Code Jam, and various contests sponsored by companies. Though those contests vary in the specific format and choice of programming languages, their focus is usually also on how to quickly implement programmatic solutions to algorithmic problems. Companies like this format because it requires a combination of algorithmic thinking and concrete implementation skills that they value in their employees. Consequently, many job interviews have come to include questions that require both developing algorithms and code for problems that are presented to interview candidates.
In this class, we'll work on problem solving with a specific focus on implementing algorithm solutions to problems in the style provided by the ACM programming contest. It is expected that the teams participating in the regional competitions (scheduled for early Nov 2013) are comprised of students taking this class. We usually send about 5-6 teams of 3 students each.
Precondition for taking this class is a) enthusiasm for solving problems in a competitive atmosphere, and b) the skills (or potential) for doing so. This is not a make-up class for students who feel they need to improve their programming skills. Enrollment in the class is by instructor permission only.
We will not be holding try-outs to enter the class this year. (We will be having a regional qualifier to determine who'll make the teams). To enroll, please show up for our first class on Monday, Aug 26, 5:30pm McBryde 322
There are two ways to obtain degree credits.
For students taking the class the first time, credit is given as CS 2974. For student who have not taken CS 2104 Introduction to Problem Solving, this class can substitute for it. Students who have taken CS 2104 already can take this class as a free elective.
For advanced students who have previously participated in programming contests, or students who obtain my permission, credit can be given as CS 4974, which is a technical elective that can substitute for other CS-4000 level classes as per your degree checksheets. Students taking CS 4974 will be required to submit more work than students enrolling as CS 2974, and their work will be graded. In addition, I expect that those students will have already taken our core sequence (e.g. up to CS 3114). This option is offered so that committed students can integrate the required time and work for the team preparation into their schedules.
The class is open to students of any year (freshmen to seniors). Many successful teams at the competition became successful only at their second, third, or even fourth year of participation.
Instructor: Dr. Godmar Back Meeting Times: Monday and Wednesday, 5:30pm-6:45pm Room: McB 308Please enroll in piazza at CS PROGTEAM for updates and/or send me email with questions.