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 and Mathematica, 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.
Contest Stages
Stage 1
The contest is three hours long. There are five questions, each worth 15 points, for a total of 75 points. The grading is done on the CCC Grader. The algorithms used in the Junior competition ranges from straightforward, simple loops and flow control structure, and sometimes recursion. The tasks in the Senior competition are generally more difficult than the Junior competition, ranging from simple implementation to advanced techniques such as dynamic programming. It is split into Junior (for elementary programming skills) and Senior (for higher programming skills). All written programs have a 3 second time limit and a maximum of 512 MB of memory. While access to the Internet is allowed (for accessing documentation), the use of other material (such as Google, chat systems, forums, and any other form of communication) is forbidden. Calculators are permitted.
The CCC Online Grader accepts the following programming languages:
For the Junior competition, the questions test the following content:
- Questions 1 and 2: basic loops and conditions
- Questions 3 and 4: combination of loops, conditions, counting
- Question 5: recursion, two-dimensional arrays, algorithm design
For the Senior competition, the questions test the following content:
- Questions 1 and 2: basic algorithm design (sorting and searching)
- Questions 3 and 4: advanced algorithm design (counting skills and mathematical reasoning)
- Question 5: International Olympiad for Informatics (IOI) level question
Students who perform well are considered for scholarships and are given rewards. The top 20 or so participants are invited to write the Canadian Computing Olympiad (CCO) at the University of Waterloo. It is used to select members for the Canadian delegation at the International Olympiad for Informatics (IOI).
Canadian Computing Olympiad (CCO)
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.