Since 2012, the University of Chicago has hosted an invitational programming contest open to the North American teams that qualify for the World Finals of the International Collegiate Programming Contest (ICPC), the largest and oldest programming contest in the world. Each year, the ICPC attracts more than 10,000 teams around the world which compete in various regional contests to earn one of the coveted 120 spots at the World Finals. Of these 120 teams, roughly 20-25 teams are from the North American ICPC super-region (comprised of the United States and Canada). The North American Invitational Programming Contest (NAIPC) was established by the University of Chicago as a destination event for these teams, with the primary goal of providing a unique training opportunity before the World Finals. The NAIPC is thus the only programming competition where the best programming students in North America compete on an even playing field.
From 2012 to 2014, the contest was held as an on-site event in Chicago. Starting in 2015, the contest switched to an online-only model.
What exactly does a “programming contest” involve?¶
ICPC-style programming contests are five-hour on-site contests where each team (composed of three students) must solve 8-11 programming problems (for example, see the problem set from the NAIPC 2016). Each team has a single computer, with no access to the Internet and only limited access to reference materials. To perform well on a contest, teams must have not just strong coding skills but also a solid grasp of Algorithms, Data Structures, and other foundational Computer Science topics.
Throughout the contest, teams submit their solutions to an automated judging system that will automatically determine whether the team’s solution is correct or not (this system accomplishes this by running the team’s solution through a variety of automated tests). Teams are ranked first on the number of problems solved, and then on the time it took them to solve a problem (with time penalties applied for submissions of incorrect solutions).
Throughout the contest, teams can see a scoreboard showing each team’s rank and the problems that they have solved (for example, see the scoreboard from the 2016 invitational contest). The scoreboard is an important part of the team’s strategy, as it allows them to see the problems that other teams are focusing on (e.g., if most of the teams have solved the same problem, that usually indicates that is an easy problem). An hour before the end of the contest, the scoreboard is frozen, which means teams won’t know the final ranking until the scoreboard is “thawed” at the closing ceremony, adding some suspense to the end of the contest.
To get a better sense of what a contest actually looks like, take a look at the photos from the 2014 invitational. And, in case you’re wondering why there are so many balloons in the photographs, this is a longstanding ICPC tradition: every time a team solves a problem, they get a balloon (with each problem having its own color).
The contest is hosted and organized by The University of Chicago‘s Department of Computer Science, and made possible through the generous support of our sponsors. You can contact the organizers at the following address: firstname.lastname@example.org
- Contest Director: Borja Sotomayor
- Head Judge: David Van Brackle (“vanb”)
- Sean McIntyre, Greater New York RCD
- Fredrik Niemelä, ICPC WF‘09 Contest Director, Kattis, ICPC Live
- Ali Orooji, North American Super-Regional Director
- Borja Sotomayor, NAIPC Contest Director
- Isaac Traxler, South Central USA RCD
- Kathy Traxler, South Central USA RCD
- David van Brackle (“vanb”), South East USA Head Judge