One hundred twenty teams. Five hours. Ten problems. Three team members. One computer. Ready, set, code!
The scene at the annual World Finals of the Association for Computing Machinery’s International Collegiate Programming Contest. Photo by Victor Zavyalov
On July 4, 2013 USC Viterbi Computer Science PhD students Rongqi Qiu, Zheng Cao and Yu Cheng competed in the 37th Annual World Finals of the Association for Computing Machinery’s International Collegiate Programming Contest in St. Petersburg, Russia.
The USC Team placed 21st overall and 3rd in North America, behind Carnegie Mellon and MIT. Given the fierce competition in this field, this is a significant achievement.
From left to right: Kai Song, Rongqi Qiu, Zheng Cao and Yu Cheng. Photo by Bob Smith
Student coaches Jing Huang and Kai Song — previous ACM-ICPC competitors — along with faculty advisors David Kempe and Sven Koenig from the Computer Science department provided the team with support throughout the training and competing process.
The showing in St. Petersburg was the culmination of a year’s worth of work for these talented computer science students.
It started in Fall 2012, when USC Viterbi hosted an internal competition, the USC Programming Contest, to select the three or four teams of three programmers each that would compete in the upcoming ACM-ICPC Southern California Regional competition. There, facing off against Cal Tech, Harvey Mudd College, UC San Diego, UCLA and others, USC took first place and advanced to the World Finals for the second consecutive time.
In St. Petersburg, the USC team faced off with 119 other universities from around the globe in a grueling competition of speed and programming acumen. “For college students this is the contest you want to win if you want to show that you’re really good at hacking quickly and thinking on your feet algorithmically,” said Kempe.
The contest itself consists of 10 real-world problems that the team must write computer programs to solve. Teammates work quickly to tackle each challenge, outlining requirements, designing test beds and building software that solves each scenario.
“This competition is not really about programming,” explained Koenig. “It’s about problem-solving. And not just how we solve it, but how we solve the problem efficiently.”
A panel of expert judges with a confidential list of acceptance criteria decides whether or not the submitted solution is correct. Each incorrect submission to the panel results in a time penalty.
For the first four hours of the contest, a live leader board displays the statistics of all the teams. For the final hour of competition, however, the board goes dark, and no one knows the rankings until the results are announced at the culmination of the event.
To win, a team must solve the most problems in the fewest attempts with the least cumulative time.
The USC team works to complete their programs. Photo by Randy Piland
Qiu explains their team’s strategy, “Before the competition, we set up the goals to solve six problems: each of us solving two problems. And we actually did!”
Soon, the next season of the ACM-ICPC will begin.
In September, interested students under the age of 23 can compete in the USC Programming Contest for a coveted spot on the USC team. But Kempe emphasizes that not making the team on a first try should not discourage anyone. In the past, students that struggled at the USC competition as freshman participated in weekly trainings and went on to represent USC later as juniors and seniors.
“We want to thank our student coaches Jing Huang and Kai Song,” said Cheng, “and our faculty coaches David Kempe, Sven Koenig and Liang Huang. Without them, we would never have advanced to the world final in 2012 (in Warsaw, Poland), and we would not have advanced to the world final this year (2013 in Saint Petersburg, Russia).”