The Canadian Computing Competition (CCC) is an annual programming competition for secondary school students in Canada, organized by the Centre for Education in Mathematics and Computing at the University of Waterloo. Stage 1 is written at high schools and can be written in the programming language of the students' choice, with only a few, such as Maple andMathematica, disallowed. There are two levels of problems presented, Junior and Senior. The top 20 (or so) students in the Senior division are invited to the University of Waterloo to participate in Stage 2, the Canadian Computing Olympiad (CCO). CCO participants are restricted to languages permitted at the IOI, which currently includes only Java, C and C++. (Pascal was discontinued in 2019). The CCO is used to select students to represent Canada at the IOI.
The questions in the CCC are algorithmic in nature, designed to test a student's ability to design and code algorithms rather than their knowledge of APIs or language-specific features. Stage 2 is more difficult than Stage 1, but still easier than the IOI. The problems generally have memory or time constraints, forcing the programmer to find efficient solutions to earn full marks.
The contests are also open to students from Hong Kong (since 2005) and Beijing (since 2007), although they are not eligible to participate on the Canadian IOI team.
The CCO is two days long, with four hours to do three questions each day. There are six questions, each weighted 25 points. Contestants' combined stage 1 and CCO scores are used to determine final scores for the Canadian Computing Competition. Bronze, silver, and gold medals are awarded, with each competitor receiving a medal; winners of gold medals are invited to represent the Canadian team at the IOI.