When it comes to programming, students from the University of Chicago’s Department of Computer Science can hold their own. Each year, students have the opportunity to compete in teams of three in the International Collegiate Programming Competition (ICPC): the oldest, largest, and most prestigious programming competition in the world. During the regional portion of the competition last month, UChicago’s five in-person teams placed within the top 20 out of 97, with one team placing second overall.
The competition is hosted in three stages: regionals, nationals, and world finals. Each stage allows students five hours to solve a collection of complex, real-world algorithmic challenges that progressively get more difficult with each stage. The problems require a combination of persistence, strategy, and reasoning as well as the ability to solve quicker than the other teams. This year’s regionals were hosted at Purdue University Northwest.
“The basic structure of the contest is that you have between 10-15 algorithm problems, and you have to write a program that solves it,” said first-year PhD student and team coach, Ziyi Zhang. “You get the printout with all the descriptions of the problems, you code, and then submit your solution to a system test that tells you what you got right and if there were issues. You can see everyone’s score on a large scoreboard as others submit.”
Ned Tagtmeier, an undergrad team from UChicago, had a rough start, but ultimately pushed through to take second place. Although they had done similar competitions in high school, this was only their second year competing together at the ICPC.
“We checked the leaderboard two hours in and we were placed 20th,” recalled third-year CS student, Ivan Galakhov. “We really had to dig deep for the last three hours.”
Usually the sites come equipped with common tools that allow competitors to test their programs locally. However, this year the tools needed to be installed manually, causing an unexpected bump in the team’s plans.
“Our team likes coding in C++,” said third-year team member, Derek Zhu. “There needs to be some sort of setup on the Linux terminal, and they need to have a client in C++ installed before the competition. It wasn’t done, so we had to manually install it on Windows. Kind of stressful, but we managed to get through it.”
The team credits Henry Cafaro, a second-year math and CS major, with helping them advance to the top, as he was the only person in the entire competition to solve one of the problems. The solution required almost 500 lines of implementation.
“It was definitely a lot of stress relief after the contest,” Cafaro said. “Over five hours, a lot of tension can build up. It felt nice to see the score and finally relax a bit.”
There were certain courses and faculty that the team also credited with their success. Foundationally, the team agreed it helped to take Data Structures and Theory of Algorithms. Galakhov tipped his hat specifically to classes with Professor László Babai.
“There’s definitely classes that help you with getting good at problem solving; math classes are especially good at that. I think one I would highlight is anything taught by László Babai. His classes are very interesting and focused on a specific type of problem solving that helps with this contest.”
The team will be headed to the North American Championship in Orlando, Florida at the end of May. Until then, they plan on practicing harder problems and working on more simulations that emulate the five hour competition. Typically, the hardest problems at regionals are the easiest at nationals. The team hopes to enjoy the experience regardless of what happens.
“Six days in Florida at the end of spring quarter is a good thing to have,” said Galakhov. “Even if we don’t go to the World Finals, we will get some vitamin D.”