# International Collegiate Programming Contest

L’International Collegiate Programming Contest (abrégé en ICPC) est un concours annuel de programmation informatique compétitive, ouvert aux étudiants. La première finale est organisée en 1977 à Atlanta (Géorgie) par l’Association for Computing Machinery (ACM). Elle confronte uniquement des universités américaines.
À partir de 1990, la participation est élargie à des universités non américaines. Les concurrents proviennent de tous les continents. La compétition est découpée en étapes régionales puis en finale mondiale. Elle est ainsi animée chaque année par près de 10 000 bénévoles, 5 000 cadres, 60 000 étudiants issus de 3 450 universités dans 111 pays. La fondation ICPC en assure la gestion. Son siège est hébergé de 1989 à 2021 par la Baylor University. Le concours est placé sous l’égide de l’ACM jusqu’en 2018.

## Principe

Le concours se déroule par équipe de trois étudiants rattachés à un même établissement universitaire. Un membre du personnel du dit établissement, distinct des membres de l’équipe, est désigné pour assurer l’inscription de la dite équipe et pour certifier le statut de ses membres. Il joue souvent le rôle complémentaire de tuteur (coach). Chaque équipe opère sur un seul ordinateur de configuration identique pour toutes les équipes$^,$.
Lors de la compétition, une dizaine de problèmes de nature algorithmique est soumise aux équipes. Ces dernières disposent d’une durée de cinq heures pour tenter d’en résoudre le plus grand nombre. En pratique, la résolution d’un problème consiste à écrire un programme en langage C, C++, Java, Python ou Kotlin. Les équipes peuvent tester leur programme sur un ou plusieurs jeux de données fournis avant de le soumettre au jury.
Le programme proposé (run) est alors vérifié de manière automatique à partir d’un jeu de données détenu exclusivement par le jury. Le verdict indique si le programme est accepté ou rejeté.
Le rejet d’un programme peut être déclaré par le jury pour l’une des quatre raisons suivantes : erreur de compilation (compilation error), erreur d’exécution (run-time error), délai expiré (time-limit exceeded), réponse incorrecte (wrong answer). L’équipe concernée peut soumettre une nouvelle version du programme jusqu’à la fin de la compétition. Dans ce cas, une pénalité de 20 minutes est appliquée par tentative avortée, sauf pour les erreurs de compilation.
À l’issue de la compétition, le classement des équipes est établi selon deux critères : d’abord le nombre de problèmes résolus, puis le temps total de résolution des problèmes résolus. Ce second critère tient compte des éventuelles pénalités de temps pour chaque problème résolu par une équipe.

## Organisation

Le concours est organisé en plusieurs étapes. La première phase consiste en une sélection à l’échelle régionale, une région pouvant couvrir plusieurs pays. En l’occurrence, l’édition de l’année 2017-2018 dénombre 69 régions. Certaines sélections régionales fédèrent plusieurs sous-sélections plus locales. Une centaine d’équipes est ainsi sélectionnée pour la finale qui a lieu chaque année dans une université différente.
Entre 2000 et 2018, quatre universités se distinguent : l'Université d'État en technologie de l’information, mécanique et optique de St-Pétersbourg ITMO en Russie remporte 7 fois le concours, l'Université d'État de Saint-Pétersbourg 4 fois, l’Université d'État de Moscou et l'Université Jiao-tong de Shanghai en Chine trois fois chacune. Ces victoires correspondent à des pays où le concours a une reconnaissance importante.

## Participants célèbres

Beaucoup d'anciens finalistes de l'ICPC ont réalisé des exploits dans l'industrie du logiciel et la recherche. On peut citer Adam D'Angelo, ancien CTO de Facebook et fondateur de Quora, Nikolaï Dourov, cofondateur de Telegram, Matei Zaharia, créateur d'Apache Spark, Tony Hsieh, PDG de Zappos et Craig Silverstein, premier employé de Google.