The Association for Computing Machinery is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional membership group, claiming nearly 110,000 student and professional members as of 2022.
The ICPC International Collegiate Programming Contest, known as the ICPC, is an annual multi-tiered competitive programming competition among the universities of the world. Directed by ICPC Executive Director and Baylor Professor Dr. William B. Poucher, the ICPC operates autonomous regional contests covering six continents culminating in a global World Finals every year. In 2018, ICPC participation included 52,709 students from 3,233 universities in 110 countries.
Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Contestants are referred to as sport programmers. Competitive programming is recognized and supported by several multinational software and Internet companies, such as Googleand Facebook.
A programming competition generally involves the host presenting a set of logical or mathematical problems, also known as puzzles, to the contestants (who can vary in number from tens or even hundreds to several thousands), and contestants are required to write computer programs capable of solving each problem. Judging is based mostly upon number of problems solved and time spent for writing successful solutions, but may also include other factors (quality of output produced, execution time, memory usage, program size, etc.)
Participation in programming contests may increase student enthusiasm for computer science studies. The skills acquired in ICPC-like programming contests also improve career prospects, as they help to pass the "technical interviews", which often require candidates to solve complex programming and algorithmic problems on the spot.
There has also been criticism of competitive programming, particularly from professional software developers. One critical point is that many fast-paced programming contests teach competitors bad programming habits and code style (like unnecessary use of macros, lack of OOP abstraction and comments, use of short variable names, etc.] Also, by offering only small algorithmic puzzles with relatively short solutions, programming contests like ICPC and IOI don't necessarily teach good software engineering skills and practices, as real software projects typically have many thousands of lines of code and are developed by large teams over long periods of time.[24] Peter Norvig stated that based on the available data, being a winner of programming contests correlated negatively with a programmer's performance at their job at Google (even though contest winners had higher chances of getting hired. Norvig later stated that this correlation was observed on a small data set, but that it could not be confirmed after examining a larger data set.
Yet another sentiment is that rather than "wasting" their time on excessive competing by solving problems with known solutions, high-profile programmers should rather invest their time in solving real-world problems
There are two types of competition formats: short-term and long-term. Each round of short-term competition lasts from 1 to 5 hours. Long-term competitions can last from a few days to a few months.
International Collegiate Programming Contest (ICPC) – one of the oldest competitions, for students of universities in groups of 3 persons each
International Olympiad in Informatics (IOI) – one of the oldest competitions, for secondary school students
American Computer Science League (ACSL) – computer science competition with written and programming portions, for middle/high school students
CodeChef – competition held from 2009, there are three contests held every month[6] and an annual competition called CodeChef SnackDown[7]
Codeforces Round – typically two hour contest, held every week
Facebook Hacker Cup – competition held from 2011, provided and sponsored by Facebook
HackerRank – multiple competitions
Gridwars – four competitions held between 2003 and 2004.
Google Code Jam – competition held from 2003, provided and sponsored by Google
IEEE Xtreme Programming Competition – annual competition for IEEE Student Members held since 2006 by IEEE.
Topcoder Open (TCO) – Algorithm competition held since 2001 by Topcoder
LeetCode Contests - Weekly and Biweekly contests, 1.5 hours to solve 4 problems.
In most of the above competitions, since the number of contestants is quite large, competitions are usually organized in several rounds. They usually require online participation in all rounds except the last, which requires onsite participation. A special exception to this is IEEEXtreme, which is a yearly 24-hour virtual programming competition. The top performers at IOI and ICPC receive gold, silver and bronze medals while in the other contests, cash prizes are awarded to the top finishers. Also hitting the top places in the score tables of such competitions may attract interest of recruiters from software and Internet companies.
HackerRank Week of Code
ICFP Programming Contest – annual 3-day competition held since 1998 by the International Conference on Functional Programming
Topcoder Marathon Matches
Codechef Long Challenges - held every month - lasts up to 10 days