Inside ICPC:
Guide to the Largest and Most Prestigious Programming Contest
On October 1-5, Moscow will host the final round of the International Collegiate Programming Contest (ICPC), which will bring together students from over 42 countries. Fifteen teams from Russia, including ITMO students, will also come to Moscow to compete for the title of the best programmers in the world. Learn how and where you can watch the ICPC finals, why Russian developers are well-known around the globe, and why programming contests are just as cool as the UEFA EURO 2020.
In a nutshell
Competitive programming is just as cool as the Olympic Games and here’s why
Choosing the best of the best
The reward
1970s
The International Collegiate Programming Contest (ICPC) is the world’s oldest, largest, and most prestigious programming contest for students. Its history dates back to the 1970s when students, teachers, and business representatives from the UPE Computer Science Honor Society worked together to organize the first programming competition at Texas A&M University. The initiative quickly gained popularity within the US and Canada and from 1977 the competition was held annually.


1980s
The tournament was mostly popular amongst universities in the US and Canada up until 1989 when the competition went global and brought together 1,000 participants from 308 universities.

1990s
ICPC expanded even more during the ‘90s. The number of its participants quadrupled over ten years. The competition welcomed other countries, including Russia, which joined in 1995.

Since the early 2000s, Russian teams have regularly been placed among the championship’s winners. Students from the St. Petersburg State University (SPbU) became champions in 2000 and 2001, while ITMO students (Dmitry Pavlov, Pavel Mavrin, and Sergey Orshansky) won the tournament for the first time in 2004. Later, teams from ITMO University became champions again in 2008 and 2009.


In a nutshell
2000s
Starting from 2012, Russian teams continuously gained victory at the competition. Over six years, Russian universities did not lose a single championship: ITMO students scored four victories and SPbU students won the contest twice. In 2018, Lomonosov Moscow State University joined the winning teams and finished first in 2018 and 2019.

2010s
The ICPC finals 1985 (New Orleans, US). Credit: icpc.global
The ICPC finals 1985 (New Orleans, US). Credit: icpc.global
The ICPC winners 1989 (Louisville, US). Credit: icpc.global
The ICPC finals 1990 (Washington, D.C.). Credit: icpc.global
The ACM ICPC world champions 2004, ITMO University. Credit: wikimedia.org
ITMO University holds the record for the most wins in the competition, with a total of seven victories under its belt. Having been at the roots of the ICPC movement in Russia, the university’s representatives continue to actively promote the competition across the country. 
“ICPC is a family which, without any exaggeration, unites people all over the globe. This global family gave rise to several generations of first-class programmers. I remember the times when we were just starting to collaborate with ITMO University. Back then, we stood in the face of great challenges and great opportunities. And then I learned that here there was a program that aimed at gathering the most talented students and providing them with opportunities for growth. What you are doing is really impressive.”

Bill Poucher, the executive director of ICPC:

Today
In recent years, the ICPC qualifying rounds have attracted over 60,000 programming students from 3,000 universities in 115 countries across the world. The ICPC contest can rival the largest sports tournaments.
Every year, it draws more contestants than the Olympic Games: around 46,381 people from 103 countries in ICPC 2017 vs a total of 11,544 athletes in Olympic Games Rio 2016.


Competitive programming is just as cool as the Olympic Games and here’s why:

1
ICPC is a large-scale programming contest that is a lot like the Olympic Games and other major sporting events. The primary task for participants is to come up with fast yet efficient solutions within the allocated time.

For that reason, competitive programming can be compared to chess tournaments and even Formula 1. Here, participants should demonstrate not only the highest speed but also a strategic approach. It’s no surprise that competitive programmers are considered the most inventive specialists in their field because they learn to think outside the box, come up with unconventional ideas quickly, and propose ready-made solutions in the form of compact and efficient code.

2
Just like athletes, programmers train for years to represent their university at the final round of ICPC. They study programming languages, test various technologies, and perform routine tasks in order to show an even better performance at the competition.


The contest’s participants have around 25-30 minutes to solve a certain problem (300 minutes for 12 problems), with the greatest competitive programmers showing results in 5-7 minutes. 
Nikolay Budin, a member of ITMO’s team, together with Arseny Kirillov and Dmitry Sayutin will represent ITMO in the upcoming finals. Nikolay has been programming since the eighth grade and started to prepare for ICPC back in 2015 when he was a first-year Bachelor’s student. Currently, he also trains students at the Faculty of Information Technologies and Programming.

Contestants train regularly for several hours. The two-time winner Niyaz Nigmatullin says that they had at least two meetings per week for five hours each in addition to seven hours of individual training a week.


Nikolay Budin
“When preparing for the championship, you should pay special attention to your personal growth, study innovative approaches, and solve various problems. If we want to enhance our skills, we go straight to a database of problems, read articles, and reach out to other people for advice. It’s impossible to be a valuable team member if you don’t learn on your own. Moreover, there are loads of online competitions for individuals, which can help you focus, test your strength in tight deadlines, and learn what you need to improve.


Niyaz Nigmatullin, a two-time ICPC world champion and an assistant at ITMO’s Faculty of Information Technologies and Programming:


Team training plays a crucial role, too. These are five-hour simulations, during which participants can tackle challenges from the previous tournaments. Of course, these are not real competitions but they are a great way to test yourself. After training, teams and coaches can analyze their results and discuss what can be done better.”

3
The selection for the ICPC finals is held in several stages. According to the rules, all universities are divided territorially into regions where the semi-finals are held. Following this scheme, Russia, Belarus, Kazakhstan, the Baltic countries, the Caucasus, and Central Asia are part of the one region – Northern Eurasia. The largest regions are also split into subregions that hold their own quarterfinals.


The number of teams, which will advance from the semi-finals to the finals, is determined annually. It depends on a number of factors, among them are the number of teams representing a certain region in the semi-finals, the results demonstrated by the region throughout the history of ICPC, and so on. In regional competitions, several teams can represent one university, while only one team can make it to the final.

Such large-scale competitions don't go without long-standing traditions and funny moments.


Once, I saw one of the team members doing push-ups right in the middle of the semi-final, even though they were the frontrunners during the entire five-hour round. The thing is, if two teams successfully completed the same number of problems, then those of them who had done it faster would be given an advantage in the competition. The quicker the team, the higher its position on the board. Teams can also get penalties, say, for submitting incorrect solutions, which will cost them 20 minutes. No team wants to receive a time penalty and thus have fewer chances at success.

This is a common practice among some programmers. If someone fails a task, they have to do 20 push-ups as a sort of punishment. That’s what was up with that team. Perhaps, if you’re not so familiar with ICPC, you will be surprised to know that someone would do such a risky thing when each minute is precious. I'd not do it myself but I admire such a spirit.
Niyaz Nigmatullin, a two-time ICPC world champion and an assistant at ITMO’s Faculty of Information Technologies and Programming
4
Each team has a coach, just like in football. Some of them are world-renowned like Andrey Stankevich who helps ITMO teams become the world’s champions. He has raised several generations of ICPC winners over 20 years and was honored with ACM-ICPC Senior Coach Award in 2016 for his achievements.





The International Association for Computing Machinery (ACM) has always appreciated the work of the Russian coach. His contributions to programming contests in Europe have earned him ACM ICPC Founder’s Award, and IBM presented him a special award for coaching.

Andrey Stankevich is actively engaged in programming competitions for school and university students both in St. Petersburg and Russia. He draws up contest tasks, as well as organizes and judges the largest city and federal competitions.






5
And, finally, there are participants who've become real legends in the world of competitive programming. For example, the chief technical developers of VK and Telegram Nikolai Durov and Andrey Lopatin are two-time world champions in programming. Another ICPC winner is Tony Hsieh, an American entrepreneur who earned $265 million within three years after winning the competition and launched the online retail shop Zappos, which was bought out by Amazon for $1.2 billion. Not to mention Adam D'Angelo, a co-founder of Facebook, and Craig Silverstein, a former Google’s director of technology, and Petr Mitrichev, a current lead engineer at Google.






One of ITMO PhD students is Gennady 'tourist' Korotkevich, a two-time ICPC winner and the world’s champion in competitive programming. Gennady is the star of various major international and national programming competitions organized by Google, IBM, Facebook, VK, Mail.ru Group, and many others. Since recently, Gennady Korotkevich started to train a new generation of competitive programmers.








Choosing the best of the best
In order to get to the ICPC finals, teams have to go through a multi-stage selection. Up until 1999, the contest’s final round was held only in the US but now, it has already been held in the Netherlands, Portugal, Canada, Sweden, Japan, the Czech Republic, Morocco, and China.


This year, the ICPC World Finals will be held in Moscow for the first time. The competition is organized by
the Moscow Institute of Physics and Technology.
Russia hosted the final round of ICPC twice:
in St. Petersburg and Yekaterinburg.
The championship is open to teams composed of three students who have completed less than eight semesters of full-time studies.

Their objective is to solve 12 problems of different levels in five hours. The problems are based on real-life scenarios, such as the optimization of the metro timetable, modeling air traffic control, optimization of fence placements, tracking robot movements, race track design, simulating luggage collection at airports, estimating oil and gas reserves, and so on.

After reading the scenario for each problem, the participants should distinguish the main problem and come up with algorithms to solve it. Submission of incorrect solutions is punished by a time penalty. The winner is the team that can solve the most tasks in the shortest time.

Such a format is considered to be one of the best and also complex setups: the participants must not only solve problems correctly and have great expertise in algorithms but also work as a team and come up with a strategy.

Rules
Nikolay Budin, ITMO Master’s student, member of ITMO’s team that will participate in the ICPC finals in Moscow
“Naturally, we should try to submit our solutions as quickly as possible. That’s why at the beginning, we distribute the tasks into three groups and each person reads their share, looking for easy tasks. Then, during the second hour of the contest, everyone reads what’s left so that everyone can choose the problems they like most. Plus, the tasks cover different fields, so we also decide who’s more proficient in this or that topic.”
Only one computer per team has been allowed until this year. This time, the rules are different.

“Coronavirus played its role here. Now at some competitions, the organizers allow the teams to use three computers – one for each team member. This only happens at online competitions, because it wouldn’t be possible to control the number of computers used anyway. But some offline competitions also joined this trend, such as the ICPC finals.”
C/C++, Kotlin, Java, and Python are official ICPC programming languages, which means that the teams can pick one of them for their solutions.

“The tasks can be solved in any language – whichever you choose, it won’t really change the level of difficulty. But the problem is, some languages work faster, some slower, while the time limits are the same for all of them. So usually everyone’s using C++ because it’s the fastest. In rare cases, we use Python, if speed isn’t a priority for the task. Python code is a bit simpler,” says Nikolay Budin.

Another feature of the contest is balloons given out to the participants for each task solved successfully. This is yet another tradition of ICPC.
How the winners are determined

Apart from the number of balloons, you can follow the teams’ results by looking at the real-time score table. However, you probably won’t be able to tell who’s the winner until the award ceremony. The score table gets frozen in the last hour of the contest and that’s when the main battle starts. Leaders can change in just a couple of minutes. That’s why watching ICPC finals is like watching penalty series in the EURO finals.


This year, you can watch the finals on October 5 using YouTube and Twitch (in Russian and English). Before the finals start, you can visit the open program: on October 1 and 2, Manege will host lectures by representatives of Russian and international companies, such as Megafon, Raiffeisenbank, Tinkoff, 1C, Yandex, JetBrains, Shutterstock, as well as meetings with former ICPC participants. At these events, you’ll learn how to improve your soft skills, build a career, and launch your own projects in business in science. Follow the news in English here.
The number of solved tasks determines the winner. If this number is even, the team that has spent the least amount of time wins. The final decision is made by the jury committee.
Unlike most sports competitions, teams that take places 1-4 in the finals, receive gold medals. Teams that are placed 5-8 are silver medal winners, and those in places 9-12 are bronze medalists. The students who take first place are the champions and get the cup.

The reward

Leading IT companies from all over the world are headhunting ICPC winners and medalists because the best sports programmers are the specialists who can solve unusual tasks and look for new approaches.



Thousands of last years’ participants work in the industry. According to the ICPC Foundation, they are employed at more than 1,500 international companies. More than 500 graduates work as CEOs and around 20,000 of them are engineers and software developers. The ICPC community is also prominent in academia: more than 2,000 former participants are professors at various universities.


At the same time, their field of work isn’t limited by IT: they work in different fields, such as consulting, finances, banking, and so on. Overall, according to the ICPC Foundation, the community of this student championship is composed of more than 300,000 people.
Creators:

Text by: Elena Menshikova
Layout: Ekaterina Shevyreva
Photo and video: ICPC.Global, ICPCNews, NERCNews, giphy.com, ITMO University
Translation by: Marina Belyaeva and Kseniia Tereshchenko