October 26, 2011
It’s practice time for DePauw’s programming team. Teammates squeeze together on a student lounge couch, their laptops side-by-side. Fingers walk across each line of computer code on the screens in search of potential bugs. Nearby, a coach talks strategy using a wall-mounted monitor. While you won't hear whistles or screeching sneakers, this is still an intense workout.
Their sport is a distilled version of what programmers, mathematicians and scientists do every day: identify a problem, solve it on paper and translate the solution into computer code. In competition programming, teams huddle around a computer and face a timed series of challenges. Each problem is explained with example inputs and outputs, but even the simplest ones take time to work through.
For example, anybody can be taught to play rock-paper-scissors, but how would you program a computer to follow along? In other words, how do you translate something intuitive into computer-friendly C++ or Java?
Other problems are more typical of what a professional programmer might find on the job, such as parsing DNA sequences or writing a software memory manager. During practice sessions, problems from past competitions are used to prepare the team for common hurdles. But the similarities can also be superficial or intentionally misleading. Half the work is often figuring out exactly what you’re being asked to do.
“Sometimes the problem is disguised within the instructions,” explains Brian T. Howard, assistant professor of computer science, who has coached DePauw’s programming teams for the last 10 years. “You have to figure out what it’s getting at before you can convert it into a program, so even that can be difficult.”
The competitions are set up by various computer science organizations such as the Association for Computing Machinery (ACM), but, unlike NCAA athletic competitions, there are no divisions in these contests. Teams from every school, big and small, go against the same problems with only their practice and a few written resources to lean on.
“We can teach strategies for solving the problems, and coach them on what kind of notes and reference materials they will need,” says Joseph B. Kendall-Morwick, an instructor of computer science and programming coach. “But once a competition begins, the students are on their own.”
On Oct. 21, the team traveled to Cincinnati to compete in the regionals for the 36th annual ACM International Collegiate Programming Contest. Because the required team size is three, two separate DePauw teams competed: Da Huo ’13, Lei Liang ’13 and Tao Qian ’15 as the DePauw Zombies, and Rajat Kumar ’15, Ngoc Nguyen ’14 and Michael D. Osborn ’13 as the DePauw Daemons.
The Zombies finished 45th out of a field of 122 teams from the United States and Canada. Missing one of their regulars – the competition took place during DePauw’s fall break – the Daemons tied for 95th. Only a team from the University of Waterloo managed to solve all nine problems within the five-hour time limit.
It was the team’s second competition of the year, and, for some members, their first competition ever. During a competition hosted by the Consortium for Computing Sciences in Colleges (CCSC) in September, the team found out that the best practice is the real thing.
“We weren’t familiar with all the rules,” says Huo, who competed for the DePauw Zombies. “We got stuck on a problem and kept trying because we thought it would be a pity to abandon all the code.”
Now, Huo says the team is better prepared for competition programming – not only for future events, but also, to borrow a common college sports phrase, for when they “go pro.”