ACM Programming Team Class, Fall 2012 [1] The ACM international collegiate programming contest [2] brings together over 25,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 2012 Fact Sheet [3]. 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 [4], 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 2012) are comprised of students taking this class. We usually send about 5 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. To that end, I'd like to hold a small try-out at the beginning of the semester. The try-out will consist of 2 take-home problems, to be solved within 48 hours. I'll decide enrollment based on the solutions submitted. Details will be announced on this page. The class is open to students of any year (freshmen to seniors), and the enrollment criteria will be differentiated according to the number of years of post-K12 experience. (Many successful teams at the competition became successful only at their second, third, or even fourth year of participation.) Degree credits: for students who have not taking CS 2104 Introduction to Problem Solving [5], this class can substitute for it. Students who have taken CS 2104 already can take this class (once) as a free elective. Because credit is awarded for the class, I'll assign problems that are used for grading as well. Please send me email at gback@cs.vt.edu or godmar@gmail.com if you plan to participate in the try-out or would like to know more about the class! Instructor: Dr. Godmar Back Meeting Times: (Tentative) M-W 5:30-6:45 Try-Out: (Tentative) Handout: Aug 16 8:00am Deadline: Aug 19 23:59pm References 1. http://people.cs.vt.edu/~gback/icpc/ 2. http://icpc.baylor.edu/ 3. http://people.cs.vt.edu/~gback/icpc/Factsheet.pdf 4. http://code.google.com/codejam/ 5. http://courses.cs.vt.edu/~cs2104/