CCO / UP / 01
Python for teens
The usual first CCC language.
Open the syllabusCanada · Informatics olympiad · CCC Senior, CCO, IOI
Canada does not hold an open informatics olympiad that students sign up for. Its olympiad is an invitation: CEMC, at the University of Waterloo, reads the results of the Canadian Computing Competition Senior paper each February, invites about twenty students to the Canadian Computing Olympiad on campus in the spring, and uses that week to choose the team that represents Canada at the International Olympiad in Informatics. This guide sets out each step in CEMC's own words, what an invited student needs to have done in February, why the CCO runs only in C++, and how IOI-style subtasks work, with a practice task we wrote and solved twice.
Teaching live online since 2020 · 10,000+ students · facts from CEMC's pages, and no promises about invitations
In short
The Canadian Computing Olympiad (CCO) is CEMC's invitation-only week at the University of Waterloo each spring, for about 20 top official CCC Senior writers from schools in Canada; it is written in C++ and used to select Canada's IOI team. Modern Age Coders prepares strong programmers for that road in small live online groups or privately, through its CCC Junior and Senior Preparation course.
Prepare with a teacher
Every invitation is earned on the CCC Senior paper, so that comes first. The other two build the C++ and the algorithms the olympiad level expects.

CCO / 01
The Senior track, aimed at the February 2027 paper that every CCO invitation is drawn from.
Open the syllabus →
CCO / 02
Advanced algorithms and data structures for students already solving Senior problems 3 and 4.
Open the syllabus →
CCO / 03
C++ from the ground up, with the STL, for students who must leave Python behind.
Open the syllabus →The path
There is one road, and CEMC controls each stage of it. The table follows a student along it, using CEMC's wording from its CCC page, its IOI page and its 2026 IOI news story, all read on 22 October 2026.
| Stage | When | What CEMC says |
|---|---|---|
| 1. CCC Senior | Wednesday 17 February 2027 (the Americas) | Written at school. CEMC's top Senior question is an "IOI level question". |
| 2. Official status | Checked on the results | Only official participants "are eligible to be invited to the Canadian Computing Olympiad (CCO)". For a writer at a Canadian school, CEMC means someone born no earlier than 1 July 2007 who lives in Canada. |
| 3. Invitation | After the CCC results | "Approximately 20 of the top official CCC Senior participants from schools in Canada are invited to the CCO at the University of Waterloo each spring." |
| 4. The CCO | Spring, at Waterloo | "a week-long learning experience featuring workshops, a contest and other extracurricular activities" |
| 5. Team selection | At the CCO | "Top scorers on this contest at the CCO are then selected to represent team Canada at the IOI." |
| 6. The IOI | Later in the year, abroad | Hosted "by a different country each year"; CEMC "trains the selected students for the IOI and leads the delegation at the event." |
Sources: CEMC, Canadian Computing Competition and CCO; CEMC, Canada at the IOI; CEMC news on IOI 2026. All read 22 October 2026. We have no link with CEMC, the University of Waterloo or the IOI.
CEMC states it directly: "The selection of CCO participants and the Canadian IOI team members is at the discretion of the CEMC." CEMC lists no application form and no essay: the invitation follows from results.
CEMC also leaves room beyond its main rule: "Outstanding participants, including those who are Canadian citizens or permanent residents attending school outside of Canada, may also be invited."
Many families search for a "Canadian informatics olympiad". The olympiad CEMC runs for Canadian school students is called the Canadian Computing Olympiad, and the national contest that feeds it is the Canadian Computing Competition.
The International Olympiad in Informatics is the world level. CEMC calls it "one of the most recognized computer science competitions in the world".
The CCO
The CCO is not just a contest. CEMC describes a week on campus with teaching as well as competing, and its CCC page sets out what invited students may receive. Every point below is CEMC's; the right-hand notes are ours.
| Point | What CEMC says | Our note |
|---|---|---|
| Format | A week of workshops, a contest and other extracurricular activities | Invited students learn as well as compete, so the week itself is training |
| Invitation-only | "This invitation-only event is also used to select Canada's teams for the International Olympiad in Informatics (IOI)" | No route in except a strong official CCC Senior result, or CEMC's discretion |
| Where and when | At the University of Waterloo, each spring | CEMC had not posted a 2027 CCO date when we checked |
| Language | "CCO participants must use C++." | Switch well before February, not after an invitation |
| Plaques | "Some CCO participants may receive a plaque for gold, silver or bronze standing based on their results in both the CCC and CCO competitions." | The CCC result still counts at the CCO |
| Prizes | CEMC lists a cash prize for each silver and each gold medallist | Awarded at CEMC's discretion |
| Past papers | The CCO is among the contests in CEMC's past contests filter | Useful for students already strong at Senior level |
CEMC asks something specific of the schools of students hoping for an invitation. For "participants aiming to be invited to the Canadian Computing Olympiad (CCO)", it says "we strongly recommend that Contest Supervisors arrange to record their screen for the entire duration of the competition".
The school keeps the recording, not CEMC, "for a month after the contest", because students being considered may be asked for it before formal invitations go out.
CEMC is careful on both sides of this. It says that "being asked to provide a screen recording does not guarantee an invitation, and without a screen recording, evidence of broken rules is more likely to lead to disqualification."
Our advice to a CCO hopeful: ask the CCC supervisor in January whether the school can record, and practise one mock paper with recording running so it is routine on the day.
The IOI
The IOI is the end of the road. CEMC's pages describe what it tests and how Canada enters; its news story on 2026 gives the latest result. We give medal counts but not names.
| Point | What CEMC says |
|---|---|
| What the IOI tests | "The competition tasks are algorithmic; however, the contestants must show basic IT skills like problem analysis, design of algorithms and data structures, programming and testing." |
| How Canada enters | "Canada's entry into the annual IOI competition is determined by performance on the" Canadian Computing Competition. |
| Team size | "Each year, participating countries typically send a delegation of four contestants to compete individually" |
| Contest days | Contestants solve informatics problems "during two competition days". |
| IOI 2026 | The team "returned from Tashkent, Uzbekistan with four medals": two silver and two bronze. |
| History | CEMC's table of Canada's IOI results runs back to IOI 1996. |
Put the numbers side by side and the shape of the road is clear. Thousands write the CCC each year; CEMC printed 2439 Senior contestants for 2026. About 20 reach the CCO. Four go to the IOI. That is why we talk to families about the CCO as a direction to grow in, never as a target to be promised.
C++ only
The CCC accepts five languages; the CCO accepts one. CEMC gives the rule without a reason. The practical effect is about speed: CEMC already warns that Python or Java may not reach a perfect score at the CCC, and the CCO is harder still. The table maps the Python a CCC student already knows onto the C++ they will need. It is our teaching table.
| In Python | In contest C++ | Watch out for |
|---|---|---|
| list | vector<int> or vector<long long> | Choose the element type; it will not grow into a bigger integer by itself |
| dict | map (ordered) or unordered_map (hashed) | map is slower but sorted; reading a missing key creates it |
| set | set or unordered_set | set iterates in sorted order |
| heapq (a min-heap) | priority_queue with greater<> | priority_queue is a max-heap by default |
| sorted(a), a.sort() | sort(a.begin(), a.end()) | Pass a comparison for custom orders |
| int (any size) | int, or long long past about two billion | Overflow gives silently wrong answers |
| input().split() | cin >> x, with fast input switched on | Without ios::sync_with_stdio(false), large inputs can time out |
| Recursion with a raised limit | Recursion, with care for very deep calls | Very deep recursion can overflow the stack; loops are safer |
A student aiming at the CCO should write CCC Senior in C++, because the invitation comes from that paper and the student will need C++ the moment it arrives. The year before is the right time to move: the autumn of Grade 9 or 10 for a student who expects to be strong at Senior by Grade 11.
In our classes the switch usually takes several weeks of steady practice before C++ feels as natural as Python did, and the first fortnight is the hardest.
We re-solve problems the student already solved in Python, in C++. The algorithm is familiar, so all the attention goes to the language: types, references, the standard library.
After that, every new Senior problem is attempted in C++ first. Python stays as a scratchpad for checking ideas, not as the contest language.
Worked example
CCC Senior and the olympiads above it split problems into subtasks: a small version that a simple method can solve, and a large version that needs the real idea. This task is ours, written for our students; it is not a CEMC, CCO or IOI problem. Both solutions are in C++, the CCO's language, and both were checked against a brute-force count on 400 random cases with no mismatches.
Our task: Signal Towers. N radio towers stand along a straight highway at positions x (whole numbers, kilometres from a marker). Two towers can talk if they are at most D kilometres apart. Count the pairs of towers that can talk. Input: N and D on the first line, then the N positions on one line. Output: one integer. Subtask 1 (40 percent of the marks): N is at most 2,000. Subtask 2 (60 percent): N is at most 200,000, and positions and D are at most one billion.
Sample input: 6 3 10 1 4 13 7 2 Sample output: 6
// Our practice task: Signal Towers, subtask 1 (N up to 2,000)
// Check every pair: about N * N / 2 comparisons.
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
long long d;
cin >> n >> d;
vector<long long> x(n);
for (auto &v : x) cin >> v;
long long pairs = 0;
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++)
if (llabs(x[i] - x[j]) <= d) pairs++;
cout << pairs << "\n";
return 0;
}About two million comparisons when N is 2,000: well inside the time. At N = 200,000 it would need about twenty billion, far too many. This version earns the first 40 percent and nothing more, and that is a perfectly good start on contest day.
// Our practice task: Signal Towers, full solution (N up to 200,000)
// Sort, then slide a window: O(N log N) for the sort, O(N) after.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
long long d;
cin >> n >> d;
vector<long long> x(n);
for (auto &v : x) cin >> v;
sort(x.begin(), x.end());
long long pairs = 0; // up to about 2 * 10^10: needs long long
int left = 0;
for (int right = 0; right < n; right++) {
while (x[right] - x[left] > d) left++;
pairs += right - left; // towers left .. right-1 reach tower right
}
cout << pairs << "\n";
return 0;
}After sorting, the towers a given tower can reach on its left form one unbroken block, so a left pointer only ever moves forward. Each tower is added and removed from the window once: linear time after the sort. Our arithmetic on the count: if all 200,000 towers stood at one spot, there would be 200,000 x 199,999 / 2 = 19,999,900,000 pairs, far beyond the roughly 2.1 billion an int can hold, so the count is a long long.
Write the subtask 1 solution first, always. It takes minutes, it earns marks, and it becomes the brute-force checker for the clever version. Students who skip this step tend to lose an afternoon to a bug it would have caught in seconds.
Then ask what structure the simple version wastes. Here, it compares towers that are obviously too far apart. Sorting is what lets the program stop looking.
Sorted, the positions are 1, 2, 4, 7, 10 and 13, with D = 3. The pairs that can talk are 1 and 2, 1 and 4, 2 and 4, 4 and 7, 7 and 10, and 10 and 13: six, as both programs print.
A student who cannot list the six pairs on paper is not ready to code either solution. At the olympiad end, the paper work comes first just as it does at Junior.
A longer view
Very few students reach the CCO in their first CCC year. This is the kind of path we sketch with a strong, keen student who starts in Grade 9. It is ours, and it is a direction rather than a promise.
| Year | CCC paper | Language | Focus |
|---|---|---|---|
| Grade 9 | Junior | Python | Clean input and output, loops, strings, first recursion |
| Grade 10 | Senior | Python, moving to C++ in the autumn | Sorting, binary search, BFS and DFS, first DP |
| Grade 11 | Senior | C++ | Shortest paths, harder DP, union-find, segment trees |
| Grade 12 | Senior, aiming at the CCO | C++ | Olympiad-level problems, subtasks, full timed papers |
Enjoyment of the problems for their own sake. Students who stay with algorithms through Grade 12 are the ones who like the moment an idea clicks, not the ones chasing a medal.
Steady weekly work. Two classes and a few problems a week, every week, beats intense bursts before February.
That about twenty places a year across Canada says nothing about whether a student is good at computer science. The skills built on the way, algorithms, efficient code, careful testing, are the ones university courses and software work ask for.
And that CEMC runs the CCC every year, so a student who is still an official participant can write Senior again next February.
Where a student starts
How we judge where a student stands relative to CCO-level work. The stages are ours.
| Stage | What it looks like |
|---|---|
| 1. Senior solid | Solves S1 and S2 reliably and takes S3 subtasks |
| 2. C++ fluent | Writes contest C++ from memory, with the standard library |
| 3. Full S3 and S4 | Solves middle Senior problems completely, in time |
| 4. Olympiad ready | Earns real marks on S5 and on past CCO problems |
Ask your child's teacher which stage they are at, not whether they will be invited. Stages can be worked on; invitations cannot.
Stage 2 is the one families often skip. Without C++ fluency, a strong Senior result cannot carry into the CCO.
Solve the small subtask first, every time. It is marks, and it is your checker.
Re-solve your old Python solutions in C++. It is the fastest way to switch.
The catalogue
Each course has a fixed teacher and meets live online; families pick a group place or private lessons, from any province.
CCO / UP / 01
The usual first CCC language.
Open the syllabusCCO / UP / 02
Data structures before contests.
Open the syllabusCCO / UP / 03
Algebra and proof underneath algorithms.
Open the syllabusCCO / SEN / 01
Counting and combinatorics for S3 and S4.
Open the syllabusCCO / SEN / 02
For students whose school teaches Java.
Open the syllabusCCO / SEN / 03
Python experiments with number patterns, ages 10 to 15.
Open the syllabusCCO / OLY / 01
Contest technique past high school.
Open the syllabusCCO / OLY / 02
Advanced structures, ages 18 and up.
Open the syllabusCCO / OLY / 03
Templates, memory and the STL, for adults.
Open the syllabusHow lessons run
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
Weekdays
After-school evenings, shown in your provincial time.
Weekends
Weekend mornings for long problem sessions.
1-on-1
Shaped around a multi-year plan for one student.
The olympiad language from the first Senior class.
Simple solutions, then the full idea.
Original problems; CEMC's archive for past ones.
Brute-force checks on every solution.
Students from British Columbia to the Atlantic.
Fifteen to twenty in a batch, or one to one.
Student work
Olympiad training runs alongside real projects. Some are below; the student labs hold the rest.

AI and ML
An AI nutrition coach that reads what you eat and works you toward a target.

AI and ML
A chatbot that answers mathematics and programming questions, built and deployed by a student.

AI and ML
An assistant that helps a young person recognise unsafe situations online.

Web app
A weather forecasting site with live conditions for any location.
Fees
No family pays for a CCO invitation, and none can buy one. Our fee is for live teaching only, paid monthly, so a student can train for a season or for several years without committing to either.
Free first class
Free
no card required
Group batch
$100 USD
a month, eight live classes
One to one
$150 USD
a month, eight live classes
What families say
Parents' Google reviews, as written.
★★★★★
"The one step solution for my son. Modern Age Coders make learning coding so simple that kids love it. The teachers explain complex concepts clearly with practical exercises and interactive content."
Ria Mukherjee
Parent
★★★★★
"Modern Age Coders has been a game-changer for me. I struggled to grasp IT concepts and coding before joining, but their classes transformed everything. I can now confidently write complex programs with ease."
Samriddha Mondal
Student
★★★★★
"One of the most wonderful education centres out there. Education is not limited to school syllabus but focuses on skill development."
Vansh Agarwal
Student
★★★★★
"My child Dhairya is really enjoying the Modern Age Coders classes. This is his first online class and he eagerly looks forward to it. I can already see his improvement, and the teachers are very cooperative."
Sonam Oswal
Parent of Dhairya
★★★★★
"Modern Age Coders have wonderful teachers who teach in a clear, easy and practical way. The teacher boosts students' confidence and inspires them to learn without hesitation."
Sonu Goyal
Parent
★★★★★
"I highly recommend this computer coding class! The teachers are incredibly knowledgeable and passionate about coding."
Ritu Kedia
Parent
Questions from Canadian families
It is an invitation-only week run by CEMC at the University of Waterloo each spring, with workshops, a contest and other activities. CEMC also uses it to select Canada's team for the International Olympiad in Informatics.
Through the Senior paper of the Canadian Computing Competition. CEMC invites about 20 of the top official CCC Senior participants from schools in Canada, and may also invite outstanding participants such as Canadian citizens or permanent residents at school abroad. Selection is at CEMC's discretion.
No. CEMC lists no application. Invitations come from CCC Senior results, and only official participants are eligible, which for a school in Canada means born on or after 1 July 2007 and living in Canada.
C++ only. CEMC says CCO participants must use C++, even though the CCC itself also accepts C, Python and Java. Students hoping for an invitation should switch to C++ before writing CCC Senior.
CEMC says Canada's IOI entry is determined by performance on the Canadian Computing Competition, and that top scorers on the CCO contest are then selected for the team. CEMC trains the team and leads the delegation.
CEMC reports that the team returned from Tashkent, Uzbekistan with four medals in 2026, two silver and two bronze.
It is not required, but CEMC strongly recommends that schools record the screens of students aiming for the CCO, and keep the recordings for a month. CEMC adds that being asked for one does not guarantee an invitation.
CEMC says the CCO is held at the University of Waterloo each spring, but it had not posted a 2027 date when we checked on 22 October 2026. The CCC Senior paper that leads to it is on 17 February 2027.
No. Invitations are decided by CEMC from CCC results, at its discretion, and we are not connected with CEMC. We teach the algorithms and C++ that strong Senior writers need.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. Times are agreed in Eastern time and converted to your province.
Elsewhere on this site
More for Canadian students aiming high in algorithms.
The contest every CCO invitation comes from.
Where most olympiad students began.
The international level in more depth.
Our longer view of olympiad training.
Another algorithm contest open to Canadians.
Every Canada page we publish.
Start here
The first class is a Senior-level task in C++, solved with the student. Afterwards the teacher tells you honestly which stage the student is at, and what a sensible path towards the CCO would look like from here.
Curious about the teaching first? How we teach walks through a live class, and our courses page sets out what each one covers.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
All lessons are live over video; our teachers are in India and there is no Canadian centre. WhatsApp gets the quickest reply.
A priority demo is a full class of about 45 to 60 minutes. After the class the mentor sends a written skill report and a personal learning roadmap on WhatsApp. If you enrol, the demo fee is adjusted against your first month's fee. Share your demo Order ID with us on WhatsApp and we take it off.
Book a priority demo