Programming Competitions
A programming competition generally lasts for several hours and consists of a set of problems. These problems are not open problems; they have already been solved by the problem writers and testers and are designed to be solved in the short timeframe of a contest. In general, each problem in competitive programming is solved with a two-step process:
- coming up with the algorithm, which involves problem solving skills and intuition.
- implementing the algorithm, which requires programming skills to translate the algorithm into working code.
For each problem, you submit the completed code to a grader, which checks the answers calculated by your program against a set of predetermined test cases. For each problem, you are given a time limit (usually 2 seconds) and a memory limit (usually 256 megabytes) that your program must satisfy.
For those of you with experience in software development, note that competitive programming is quite different, as the goal is to write programs that compute the correct answer, run quickly, and can be implemented quickly. Note that nowhere was maintainability of code mentioned. You don’t need to bother documenting your code because it only needs to be readable to you during the contest. That being said, you probably want to maintain a bare minimum level of readability so you can keep track of what’s going on.
Competitive programming is mostly popular among high school and university students. There are different competitions for different levels of education, as well as for different experience in CP.
CCC & CCO
The Canadian Computing Competition (CCC) is an annual programming competition designed for secondary school students in Canada. CCC provides an opportunity for high school students with interest in programming to showcase their talents and compete for a chance to participate at the next stage, which is called Canadian Computing Olympiad (CCO).
Approximately 20 of the top CCC senior official participants from schools in Canada are invited to the CCO at the University of Waterloo each spring. A week-long learning experience involving workshops, a contest and other extra-curricular activities. This invitation-only event is also used to determine Canada’s team that will participate in the International Olympiad in Informatics (IOI), which is hosted by a different country each year.
To learn more about CCC, CCO and other high school math and programming competitions, visit CEMC website.
ICPC
The International Collegiate Programming Contest (ICPC), is an annual multi-tiered competitive programming competition among the universities of the world. Directed by ICPC Executive Director and Baylor Professor William B. Poucher, the ICPC operates autonomous regional contests covering six continents culminating in a global World Finals every year.
For Canadian teams from Ontario, the first stage is called East Central NA Regional Contest, hosted in person both in Canada and USA. Top teams from ECNA are invited to North American Championship (NAC), usually hosted at the University of Central Florida in Orlando. Finally, top teams from NAC are invited to represent NA region at the World Finals that are held in different country each year.
To learn more, visit ICPC website and NAC website.