Skip to content
Waterloo, Ontario

AI and Python classes for teens in Waterloo

Where can a Waterloo teenager learn Python and AI properly?

Modern Age Coders teaches Python and AI live online to Waterloo teens aged 13 to 18, either in a group of fifteen to twenty students or with a private teacher. Most start with Python for Teens, then move to AI and Machine Learning for Teens, CCC preparation or the Ontario Computer Science Companion. Lessons are booked in Eastern time, and the first is free.

Few cities put a teenager closer to Canadian computing than Waterloo. The University of Waterloo’s Centre for Education in Mathematics and Computing, known as CEMC, writes the Canadian Computing Competition, hosts the Canadian Computing Olympiad and publishes free Python lessons, and a student here can use every one of them from a laptop at home. Being near all that does not, on its own, teach anyone to program. What turns it into skill is steady practice with someone who reads the code back and asks why. This page sets out what CEMC offers a Waterloo teen in 2026 to 2027, quoting CEMC, what Ontario computer studies courses expect, which AI tools a teenager may legally use, and a first machine learning project we built on the City of Waterloo’s own trail counter records.

Facts last verified 22 October 2026. Teaching is online; no Waterloo branch is claimed.

Course picks for Waterloo teens

Four courses for a Waterloo student between 13 and 18

Each fits a stage of an Ontario high school timetable or the CEMC contest year. A free first lesson checks the level before anyone commits to one.

Browse the course atlas for more than one hundred options and use the coding roadmap to check prerequisites.

The four we are known for

Python, AI, vibe coding and agentic coding

These run underneath everything above. Every one is live and online, placed by ability rather than by age, and the first class is free.

CEMC on the doorstep

What the University of Waterloo’s CEMC offers a teenager in 2026 to 2027

CEMC is part of the University of Waterloo, and most of what it publishes is free. Quotes below are CEMC’s, read from its own pages on 22 October 2026; summaries are ours.

CEMC computing resources a Waterloo teen can use, with what CEMC says about each (read 22 October 2026)
ResourceWhat CEMC saysWhat it means for a teen
Canadian Computing Competition (CCC)“North and South America: Wednesday, February 17, 2027”One online sitting at school. Junior or Senior is chosen by skill, “regardless of their grade”
Languages allowed in the CCC“CCC participants may use C, C++, Python 2, Python 3, or Java.”Python is allowed, with a caveat CEMC states itself (below)
Canadian Computing Olympiad (CCO)About 20 top official Senior writers are invited “to the CCO at the University of Waterloo each spring”The next step after a strong Senior paper; CEMC adds that “CCO participants must use C++.”
Computer Science CirclesSite title “Computer Science Circles”, tagged “[Python Programming Tutorials]”Free browser-based Python lessons from variables to recursion
Past contests“Below you will find resources from the last 10 years.”A decade of old papers, free; “There is no registration or fee required”

One line on CEMC’s CCC page matters a great deal for a Python student: “it may not always be possible to achieve a perfect score with a particular language choice (for example, Python or Java)”. That is CEMC being candid about time limits on the hardest problems. Our reading is simple. Python is the right first language for almost every teen, and the right contest language for Junior and early Senior work; a student aiming at the fifth Senior problem, or at the CCO, eventually needs C++ as well, and we plan for that switch rather than discovering it in February.

Entry goes through a school

CEMC is plain that “all students must participate through their school.” A Waterloo teen cannot sign up for the CCC alone. The contest is “Written in school, participants write online, individually.” We help with the preparation; a teacher at school handles the registration.

Canada’s informatics team

CEMC’s 2026 news item says CEMC, “along with the Faculty of Mathematics at the University of Waterloo, supports the team that represents” Canada at the International Olympiad in Informatics, which “returned from Tashkent, Uzbekistan with four medals”.

Not an admission ticket

CEMC writes that the CCC “is not required for admission to the Faculty of Mathematics at the University of Waterloo.” Teens write it to learn and to be tested fairly, not because a door depends on it. Our Waterloo CS admission page covers the courses that do count.

No connection to CEMC or the university

Modern Age Coders is not part of CEMC or the University of Waterloo and is not endorsed by either. We never copy CEMC problems or solutions into lessons; students read the originals in CEMC’s free archive and practise on problems we write ourselves.

Ontario computer studies

Grade 9 to 12: where Python and AI sit in an Ontario timetable

A Waterloo high school student follows the Ontario curriculum. These are the ministry’s course descriptions as its curriculum service returned them on 22 October 2026; where we summarise, we say so.

Ontario courses with coding or AI content, Grades 9 to 12 (Ontario Ministry of Education curriculum API; summaries in the last column are ours)
CourseGrade and year issuedWhat the ministry text includesPrerequisite
MTH1W, MathematicsGrade 9, 2021, de-streamedCoding inside math: “read code to predict its outcome, and alter code to adjust constraints, parameters, and outcomes”None listed
ICD2O, Digital Technology and Innovations in the Changing WorldGrade 10, 2023, OpenTo “investigate current and emerging innovations in digital technology, including automation and artificial intelligence, and assess their benefits and limitations”None listed
ICS3U, Introduction to Computer ScienceGrade 11, 2008, UniversityOur summary: software built alone and in teams, using a development life cycleNone
ICS4U, Computer ScienceGrade 12, 2008, UniversityModular design and complex, fully documented programs (our summary)ICS3U

ICD2O is the only Ontario course on the current list whose own expectations name artificial intelligence. It asks students to weigh benefits and limitations, which is a different thing from building a model; its programming strand stops at the instruction to “use fundamental programming concepts to write simple programs”. ICS3U and ICS4U are where serious programming happens, and the 2008 document notes that “Each of the courses listed above is worth one credit.” None of these courses trains a neural network or evaluates one, and none has to. That gap, between talking about AI and testing a model against data it has never seen, is where our AI and machine learning course spends its time.

Grades 9 and 10

Teens who code only in MTH1W often meet Python in short snippets they edit rather than write. We start them on full programs early, so ICD2O feels easy and ICS3U is not their first real program.

Grade 11

ICS3U has no prerequisite, and the University of Waterloo’s computer science page lists Grade 11 U Introduction to Computer Science as its recommended course. Many of our Waterloo students take it with our companion course beside it.

Grade 12

ICS4U follows ICS3U. Students who want the CCC Senior paper, a machine learning project for a portfolio, or both, usually add one of those in this year. The Ontario computer science pathway page maps the sequence in detail.

Credits come from school

We teach alongside a student’s school courses and we do not grant Ontario credits. ICS3U, ICS4U and ICD2O credits are earned only at school. We are not connected with the Ontario Ministry of Education or any Waterloo school board.

Waterloo data project

Can a model guess tomorrow’s traffic on the Laurel Trail? A first machine learning project

The City of Waterloo publishes hourly counts from counters on its trails. Our students download one counter’s history, train three very simple models on 2018 and test them on 2019. Every number in this section is our own calculation, not the City’s.

Our results on City of Waterloo Trail Counter Data, counter LOC_ID 4, Laurel Trail at University Ave. W. (44,114 hourly rows fetched 22 October 2026; trained on 356 complete days in 2018, tested on 360 complete days in 2019)
Model (trained on 2018)How it guesses a 2019 dayAverage miss on 2019 (people per day)
BaselineThe same number every day: the 2018 daily average, about 17190
Weekday modelThe 2018 average for that day of the week90
Month modelThe 2018 average for that month, from about 59 a day in January to 324 in July65

Here is the whole project in standard-library Python. It pages through the City’s public query service 2,000 rows at a time, adds the hourly counts up by date, keeps only dates with all 24 hours, and scores each model by its mean absolute error. It printed the three numbers in the table when we ran it on 22 October 2026:import json, urllib.request, datetime URL = ("https://services.arcgis.com/ZpeBVw5o1kjit7LT/arcgis/rest/services/" "City_of_Waterloo_Trail_Counter_Data/FeatureServer/0/query" "?where=LOC_ID%3D4&outFields=DATE,TOTAL_COUNT&orderByFields=OBJECTID" "&resultRecordCount=2000&f=json&resultOffset=") daily, hours, offset = {}, {}, 0 while True: page = json.load(urllib.request.urlopen(URL + str(offset))) rows = page["features"] if not rows: break for r in rows: a = r["attributes"] day = datetime.datetime.fromtimestamp(a["DATE"] / 1000, datetime.timezone.utc).date() daily[day] = daily.get(day, 0) + (a["TOTAL_COUNT"] or 0) hours[day] = hours.get(day, 0) + 1 offset += len(rows) full = [d for d in daily if hours[d] == 24] train = [(d, daily[d]) for d in full if d.year == 2018] test = [(d, daily[d]) for d in full if d.year == 2019] def fit(key): groups = {} for d, n in train: groups.setdefault(key(d), []).append(n) return {k: sum(v) / len(v) for k, v in groups.items()} def error(key): model = fit(key) return round(sum(abs(model[key(d)] - n) for d, n in test) / len(test)) print(offset, "hourly rows,", len(train), "train days,", len(test), "test days") print("same guess every day:", error(lambda d: 0)) print("guess by weekday:", error(lambda d: d.weekday())) print("guess by month:", error(lambda d: d.month))

1. Beat the baseline

A model is only interesting if it beats a dumb guess. Guessing the yearly average every day misses by 90 people a day on 2019. Knowing the weekday does not help at all here, which surprises most students; knowing the month cuts the miss to 65.

2. Split by time

Training on 2018 and testing on 2019 is honest in a way a random split is not: the model never sees the future it is graded on. Students then try training on 2017 to see whether a longer history helps.

3. Audit the labels

The same counter can carry two spellings. In the City’s file, LOC_ID 2 appears as both “Iron Horse Tail at John St. W.” and “Iron Horse Trail at John St. W.”, and LOC_ID 10 as both “Spur Line Trail at Roger Street” and “Spurline Trail South of Roger St.”. Group by ID, never by name.

What the model cannot know

The 2019 days averaged about 133 people against 171 in 2018, so every 2018 model guesses high. Is that a real change in walking and cycling, a counter moved or partly blocked, or something else? The data alone cannot say. The City’s own note warns that construction meant traffic “has been diverted around many EcoCounter installations resulting in a perceived drop in traffic”, without naming this counter. And 15 April 2018, 14 September 2019 and 15 September 2019 record zero people across all 24 hours, which looks more like a counter gap than an empty trail. A student who flags those days before trusting the error figure is doing real data science.

Two more honest details. The item description says “This data is updated daily”, yet the newest rows we could fetch are dated 30 November 2021, so this is a historical exercise, not a live feed. The whole table held 534,489 rows across all counters on the day we queried it; we used one counter so a laptop finishes in seconds. The data is used under the Waterloo Open Data User Licence, which lets anyone “use the Information commercially”. Contains information provided by the City of Waterloo under licence (licence, dataset). The City has not endorsed this page or our teaching.

AI tools and age rules

Which AI tools a Waterloo teen may use, and where they are banned

Age limits come from each company’s own terms, and contest rules come from the organiser. We read each document on 22 October 2026 and teach inside those limits.

AI tool rules for students aged 13 to 17, from each organisation’s own document (read 22 October 2026)
Tool or settingWhat the document saysWhat we do
ChatGPT (OpenAI Terms of Use, effective January 1, 2026)“If you are under 18 you must have your parent or legal guardian’s permission to use the Services.”Used only with a parent’s permission, and never to write graded work
Claude (Anthropic Consumer Terms, effective Oct 8, 2025)“You must be at least 18 years old”Never recommended to anyone under 18
The CCC itself (CCC Online Grader rules)Internet use is forbidden, including “generative AI such as CoPilot or ChatGPT”, and “AI-based tools within an IDE cannot be used.”Contest practice is done with every AI helper switched off

The CCC rule is the one that changes how a teen should practise. On 17 February 2027 a CCC writer will have an editor, the official language documentation and their own head; the autocomplete that finishes a loop in a school assignment is gone. Students who learned with an assistant always on tend to freeze at that point. So our contest lessons run with AI tools off from the first week, and our machine learning lessons treat an AI tool as something to test, not something to trust.

Parents decide on ChatGPT

OpenAI puts the permission decision with the parent until 18. We tell families exactly where in a course a tool would be used, and a teen whose parent says no loses nothing: every lesson works without it.

Adults only, for some tools

Claude is an 18-and-over product under Anthropic’s terms, so it never appears in a lesson for teenagers. The agentic coding course in the row of four above is an adult course for the same reason, and we do not place teens in it.

Build the model yourself

The trail counter project uses no AI service at all. Fitting averages by hand is the start of machine learning, and a teen who can explain why the month model wins understands more than one who pasted a prompt.

Eastern time

Waterloo hours against India hours from this autumn to next summer

Clocks in Waterloo move on 1 November 2026 and on 14 March 2027. Clocks in India, where our teachers are based, stay put. The hours below only illustrate the gap; they are not a timetable.

Waterloo clock (zone America/Toronto) beside the India clock. UTC offsets per IANA tzdb release 2026e; the conversions are our arithmetic
PeriodWaterloo onGap to IndiaSaturday 10 am to noon in WaterlooWeekday 5 to 7 pm in Waterloo
Now, until the 1 November 2026 changeUTC-49 h 30 minIndia evening, 7:30 to 9:30 pmIndia early morning, 2:30 to 4:30 am the next day
Winter, after 1 November 2026UTC-510 h 30 minIndia evening, 8:30 to 10:30 pmIndia early morning, 3:30 to 5:30 am the next day
Summer, after 14 March 2027UTC-49 h 30 minIndia evening, 7:30 to 9:30 pmIndia early morning, 2:30 to 4:30 am the next day

Your clock, not ours

Every class we confirm is written in Eastern time. In the week before 1 November 2026 and again before 14 March 2027 we resend each student’s times so that the change costs nobody a lesson.

Waterloo phone numbers

Waterloo sits in the 226, 382, 519 and 548 area codes, which share south-western Ontario. Any of them works in the form below: type the ten digits and leave out the 1.

CCC day in Eastern time

The CCC falls on Wednesday 17 February 2027, deep in the UTC-5 months. We schedule the last mock paper for the weekend before, at the same local hour the school plans to sit it.

Learning ladder

From a first Python script at 13 to a model a teen can defend at 18

Ages are a guide only. Placement depends on the code a student can already write, and the free lesson is where we find that out.

Ages 13 and 14

Python as a real language

Full programs rather than snippets: input, loops, lists and functions, with a habit of predicting output before running it, the MTH1W skill taken further.

Python for TeensProblem Solving for Teens
Ages 14 and 15

First contest, first data

A CCC Junior attempt for those who want it, and first files of real data such as the Waterloo trail counts.

CCC Junior and Senior Preparation (Canadian Computing Competition)Data Science for Teens
Ages 16 and 17

ICS3U, ICS4U and models

Support beside school computer science, and machine learning with proper train and test splits.

Ontario Computer Science CompanionAI and Machine Learning for Teens
Age 17 to 18

Senior paper or portfolio

CCC Senior with a plan for C++, or a larger independent AI project the student can explain line by line.

C++ for TeensAI and Machine Learning for Teens
Python before AI

Why a Waterloo teen should write Python before asking AI to

Because the hardest part of the trail project is not the code; it is noticing what is wrong with the result.

An AI assistant will happily write the trail counter script. It will not stop to ask why 2019 runs low, whether a zero day is a broken counter, or why the same ID carries two names. Those questions come from a student who has written the loop, seen the output and felt something was off. That instinct is what we are trying to build.

So we teach thinking first: break the problem into steps, write each step, predict the output, then check it. AI tools come in later, within the age rules above, as something a student questions the way a reviewer questions a draft. A teen who learns that way can use any tool that appears in the next five years; one who learned by pasting cannot.

The CCC rules ban AI helpers for exactly this reason: on contest day the thinking has to be the student’s own. The longer argument is in is coding still worth learning in 2026.

Delivery

The same teacher for Waterloo, Kitchener and Cambridge

Classes are online, so a teen near Uptown Waterloo and one in Cambridge sit in the same lesson without a drive.

When classes 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.

Across the region

Students in Kitchener, Cambridge and the townships around them join the same classes on the same Eastern time clock as Waterloo students.

Batch or one to one

A batch of fifteen to twenty teens at one level, or one teacher for one student when the goal is a CCC Senior paper or an ICS4U project.

Code they keep

Every project lives in the student’s own folder, written by them. School assignments stay the student’s own work; we explain ideas and never write marked work.

What a teen needs

A laptop or desktop with Python 3 installed, a microphone, and a steady connection. We help set up Python in the first class if it is not there yet.

Start free

Lesson one costs nothing and is taught like any other; at the end the teacher names a course and a level. We ask for no card details.

No Waterloo office

Modern Age Coders has no centre in Waterloo and claims none. Every class is live and online, taught by teachers in India, on Waterloo time.

Fees

Fees for Waterloo families

Each fee below shows in your own currency, with the code printed next to it.

First classFree

A full live lesson, free, ending with a placement and a suggested course.

Group tuition$140 CAD

The monthly fee for a batch of fifteen to twenty teens working at the same level.

Private tuition$210 CAD

The monthly fee for one teacher with one teen, at hours the family picks.

A Waterloo family pays the same as one anywhere in Canada. Billing begins only once the free lesson is done and a course and hours are agreed; the pricing page covers missed lessons and holiday weeks.

Reviews

Google reviews from parents and students

Rated 4.9 across 547 Google reviews. These are real reviews, reproduced 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

Free placement class

Book a free class for a Waterloo teen

Tell us the grade and what the student has written so far. A beginner gets a first Python program; a stronger student might get the trail counter data or a timed CCC-style problem of ours.

+1

FAQ

Waterloo teen Python and AI questions

What Waterloo parents and teenagers ask us most.

Do you run Python and AI classes in Waterloo?

Yes, online and live. There is no Waterloo centre: teenagers from 13 to 18 log in from home, either to a group of fifteen to twenty or to private lessons with their own teacher.

Which course should a 13 or 14 year old start with?

Python for Teens, unless the free class shows they already write full programs. AI and Machine Learning for Teens comes after Python is fluent enough to read every line.

Does your course give an ICS3U or ICS4U credit?

No, and we do not grant Ontario credits of any kind. The credit belongs to the school course; our companion adds practice, explanations and project feedback on the side.

Can my teen use ChatGPT in your classes?

Only with your permission, because OpenAI's terms say users under 18 need a parent's or legal guardian's permission. Every lesson also works without it.

Is Claude suitable for a teenager?

No. Anthropic's terms say users must be at least 18, so we never recommend Claude to anyone under 18.

Can AI tools be used in the CCC?

No. The CCC grader rules forbid generative AI such as CoPilot or ChatGPT, and AI-based tools inside an editor. We train contest students with AI switched off.

How does a Waterloo student enter the CCC?

A teacher at the student's school registers them; CEMC does not accept individual sign-ups. The 2027 sitting is on Wednesday 17 February 2027, per CEMC, and we prepare students with problems we write ourselves.

Is Python good enough for the CCC?

For Junior and most of Senior, yes. CEMC itself warns that a perfect score may not always be possible in Python or Java, so students aiming at the top Senior problems or the CCO add C++.

What time are classes for Waterloo families?

Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. All times are confirmed in Eastern time.

Is Modern Age Coders part of CEMC or the university?

No. We are an independent online school. We point students to CEMC's free resources and never reuse CEMC problems in our lessons.

More for Ontario

Other pages for Waterloo and Ontario students

Contest students can read the CCC Junior guide, the CCC Senior guide and the CCO guide. For courses and admission, see ICS3U help and the Waterloo AIF guide, or start from coding classes in Ontario.

Free classPriority demoCall us

Keep exploring Modern Age Coders

Coding classes in nearby places

Learn more

Free resources

From the blog

Start here