Skip to content
Home/Canada/Ontario/Richmond Hill
Richmond Hill, Ontario

AI and Python classes for teens in Richmond Hill

How does a Richmond Hill teenager learn Python and AI properly, outside school hours?

Modern Age Coders runs live online Python and AI classes for Richmond Hill teens aged 13 to 18, in a group of fifteen to twenty or with one private teacher. Most begin with Python for Teens, then branch into machine learning, contest training for the CCC, or support beside a school ICS3U course. Classes run on Eastern time; the first one is free.

A Richmond Hill student meets code earlier than many parents expect. Ontario’s Grade 9 math course asks for it, the Grade 10 digital technology course names artificial intelligence outright, and two university-preparation computer science courses follow in Grades 11 and 12. What school cannot always give is time: time to write long programs, get them wrong and find out why. That is the gap our lessons fill. Below we set out the Ontario expectations a teen here will meet, quoted from the ministry and EQAO, how the CCC Junior paper is built according to CEMC, which AI tools a 13 to 17 year old may use under each company’s own rules, and a classifier our students build from York Region’s street tree records along Yonge Street, Bayview Avenue and the other regional roads.

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

Course picks for Richmond Hill teens

Four courses a Richmond Hill student can take between Grade 8 and Grade 12

Each matches a point in an Ontario timetable or the CEMC contest year. The free class decides which one fits, not the age on a form.

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.

Ontario expectations

What Ontario asks a Richmond Hill teen to code, Grade 9 to Grade 12

The wording in the middle column comes from the Ontario curriculum service and EQAO as we read them on 22 October 2026. The right-hand column is our own reading of what each line means at home.

Coding in Ontario secondary courses and assessments (Ontario Ministry of Education curriculum API and EQAO, read 22 October 2026; the last column is ours)
Grade and courseWhat the official text saysWhy it matters at home
Grade 9, MTH1WStudents “create code by decomposing situations into computational steps in order to represent mathematical concepts and relationships”Breaking a problem into steps is the core programming habit, and it starts inside math class
Grade 9, EQAO mathWindow 12 January to 5 February 2027; “Results of this assessment are to be included as part of a student’s final course mark”The provincial math test lands three weeks before the CCC, so January is a busy month
Grade 10, ICD2O (2023, Open)“Students will learn and apply coding concepts and skills to build hands-on projects and investigate artificial intelligence, cybersecurity, and other emerging digital technologies”The first school course that names AI; it surveys the field rather than training models
Grade 11, ICS3U or ICS3C (2008)No prerequisite for either in the ministry tableA teen can start computer science in Grade 11 with no earlier course on the transcript
Grade 12, ICS4U (2008)“Students will use modular design principles to create complex and fully documented programs”; ICS3U comes firstLarge programs split into functions and modules, with documentation another person can read

Read top to bottom, the table describes a ramp. In Grade 9 a student edits and writes short pieces of code to model math. By Grade 12 the same student is expected to plan a program in parts and document it so that a stranger could maintain it. Nothing in that ramp is out of reach for a teen who writes Python regularly, but the jump from MTH1W snippets to an ICS4U project is steep if Grade 10 and Grade 11 pass with little practice. We see that most often with students who took ICD2O as a survey course and then met ICS3U as their first experience of a program longer than a page.

Grade 9: write, then predict

We ask Grade 9 students to say what a loop will print before they run it. That habit carries the MTH1W coding strand and makes the EQAO questions that involve code far less mysterious.

Grade 10: build what ICD2O describes

ICD2O talks about AI and cybersecurity; our Grade 10 students write the small programs behind those words, such as a password checker or a first classifier, so the vocabulary has code underneath it.

Grades 11 and 12: the long program

ICS3U and ICS4U reward planning. Our companion course works on design before syntax: what the functions are, what each one takes and returns, and how to test a part before the whole exists.

School credits stay at school

Our lessons run beside the school timetable, and we do not grant Ontario credits: MTH1W, ICD2O, ICS3U and ICS4U credits come only from the school. Modern Age Coders has no link to the Ontario Ministry of Education, to EQAO or to any York Region school board.

CCC Junior by the numbers

The CCC Junior paper, as CEMC itself describes it

The Canadian Computing Competition is run by the University of Waterloo’s CEMC. Figures and quotes below are CEMC’s own, read on 22 October 2026; the advice column is ours.

CCC Junior structure and 2026 results (CEMC CCC page, read 22 October 2026; our advice in the last column)
Part of the paperWhat CEMC publishesHow we prepare for it
Questions 1 and 2“(e.g. basic loops and conditions)”Fluency drills: read input, loop, decide, print, with no time lost on syntax
Questions 3 and 4“(e.g. some combination of loops, conditions and counting)”Careful counting problems of our own, checked against hand-worked small cases
Question 5“(e.g. recursion, two-dimensional arrays, efficient/insightful algorithms)”Grids, recursion and the first ideas about running time
Length and scoring“Time allowed for completion is 3 hours”; “Score out of 75”Full three-hour mocks, never just single problems
2026 Junior resultsMean 42.65 out of 75 across 3421 Junior contestants (CEMC results table)A first-time writer should aim to finish the first three questions cleanly

Two things in that table are worth a parent’s attention. First, the Junior paper is not a test of cleverness on question one; CEMC says plainly that the opening questions are about basic loops and conditions, which a teen who has written Python for a few months can do. Second, the 2026 Junior mean sat a little above half marks, and CEMC states that “Every participant scoring in the top 25% of all competitors receives a Certificate of Distinction.” A Richmond Hill student who arrives in February 2027 able to solve the first three questions without errors is already writing a respectable paper. CEMC lists the 2027 CCC for Wednesday 17 February 2027.

Entry is through a school

CEMC writes that “It is not possible for students to individually register for a contest”. A teacher orders the paper. If a student’s own school does not, CEMC suggests that “students can look for another local school that will allow them to join as a participant”.

Who counts as official

For writers at schools in Canada, CEMC’s official status goes to students who were “born on or after July 1, 2007”. Younger Grade 9 and 10 students who start early simply have more years of practice ahead of them.

Our problems, not CEMC’s

CEMC’s past papers stay in CEMC’s free archive, where students can read them; our lessons run on problems we write, never on CEMC problems or solutions. See our CCC Junior guide for the details.

York Region data project

Can a model guess how tall a Richmond Hill street tree is from its trunk and its age?

York Region publishes a record for each street tree it owns or maintains along its regional roads, including in Richmond Hill. Our students download the Richmond Hill rows and teach a computer to guess each tree’s height band. All figures in this section come from our own code, not from the Region.

Our results on York Region Street Trees, MUNICIPALITY = Richmond Hill (9,505 rows fetched 22 October 2026; 9,398 with a height band; 7,518 trees to learn from, 1,880 held back to test)
ModelHow it guesses a test tree’s height bandShare of the 1,880 test trees it gets right
BaselineAlways says “2 - 5 metres”, the most common band in the training trees63.9 per cent
1 nearest neighbourCopies the band of the single most similar training tree by trunk diameter and planting year72.3 per cent
15 nearest neighboursTakes a vote among the 15 most similar training trees76.8 per cent
101 nearest neighboursTakes a vote among the 101 most similar training trees74.5 per cent

The program below is the whole exercise in standard-library Python. It asks the Region’s map service for the Richmond Hill rows 2,000 at a time, keeps the three fields it needs, shuffles the trees with a fixed seed so the result can be repeated, holds back one tree in five for testing, and scores two models. Run on 22 October 2026, it printed the baseline and the 15-neighbour figures in the table:import json, random, urllib.request, urllib.parse from collections import Counter URL = ("https://ww8.yorkmaps.ca/arcgis/rest/services/OpenData/" "Biodiversity/MapServer/0/query?") ask = {"where": "MUNICIPALITY='Richmond Hill'", "returnGeometry": "false", "outFields": "CURRENTDBH,YEARPLANTED,TREEHEIGHT", "f": "json", "orderByFields": "OBJECTID", "resultRecordCount": 2000} trees, ask["resultOffset"] = [], 0 while True: reply = json.loads(urllib.request.urlopen(URL + urllib.parse.urlencode(ask)).read()) if not reply["features"]: break for f in reply["features"]: a = f["attributes"] if a["TREEHEIGHT"]: trees.append((int(a["CURRENTDBH"]), a["YEARPLANTED"], a["TREEHEIGHT"])) ask["resultOffset"] += len(reply["features"]) random.seed(2026) random.shuffle(trees) cut = len(trees) * 4 // 5 train, test = trees[:cut], trees[cut:] def guess(dbh, year, k=15): near = sorted(train, key=lambda t: ((t[0] - dbh) / 10) ** 2 + ((t[1] - year) / 10) ** 2) return Counter(t[2] for t in near[:k]).most_common(1)[0][0] common = Counter(t[2] for t in train).most_common(1)[0][0] base = sum(t[2] == common for t in test) / len(test) knn = sum(guess(t[0], t[1]) == t[2] for t in test) / len(test) print(len(trees), "trees,", len(train), "train,", len(test), "test") print("always", repr(common), "->", round(100 * base, 1), "% right") print("15 nearest neighbours ->", round(100 * knn, 1), "% right")

1. Clean what arrives as text

The diameter field, CURRENTDBH, is stored as text, so every value comes back as a string like “5” and has to be turned into a number. The height is not a number at all but a band such as “2 - 5 metres”, which makes this a classification problem rather than a regression.

2. Beat the lazy answer

Because nearly two thirds of the test trees sit in one band, a model that always says “2 - 5 metres” already scores 63.9 per cent. Any model worth keeping has to clear that line, and the 15-neighbour vote clears it by about thirteen points.

3. Choose k, then check it

One neighbour copies noise from a single odd record; 101 neighbours blur real differences. Fifteen did best on this split. Students then reshuffle with a new seed to see whether fifteen still wins or whether that was luck.

Where the model goes wrong

Accuracy hides who gets ignored. Of the 57 test trees recorded as “0 - 2 metres”, the 15-neighbour model got only 16 right and called 38 of them “2 - 5 metres”. Of 150 trees in the “10 - 15 metres” band it got 61 right and placed 70 one band lower. Small classes get outvoted by big ones. That is a real lesson in machine learning, not a bug in the student’s code, and it is why we always print the breakdown beside the headline number.

Three more honest notes. A diameter of 5 appears on 2,816 of the 9,505 rows, mostly on trees planted in recent years, and a handful of rows record round values such as 100; the field does not state its unit, so we do not guess one. Planting years run from 1920 to 2026, with 170 rows planted in 2026 itself. And the file covers only the trees the Region owns or maintains: its own description says it holds street trees “within regional road right-of-ways”, with only “partial data available for Regional owned street trees in rural areas”, so it is not a census of every tree in the city. The commonest species in the Richmond Hill rows is the Ivory Silk Lilac (925 rows), ahead of the Kentucky Coffee Tree (673), and Bayview Avenue carries more rows than any other road (1,751). We use it under the York Region Open Data Licence, whose terms say users may “Use the Information commercially”; the Region suggests the credit “Contains public sector information made available under The Regional Municipality of York’s Open Data Licence”. The City of Richmond Hill’s own map layers carry no reuse licence, which is why we used the regional file. Nothing on this page is endorsed by York Region.

AI tools for under-18s

Which AI tools a Richmond Hill teenager may use, and when

A tool’s minimum age is set by the company that runs it, and contest rules by the organiser. Each line below comes from the organisation’s own page, read on 22 October 2026.

Age and use rules for AI tools, as each company or organiser publishes them, checked 22 October 2026 (the last column is our practice)
Tool or settingWhat the organisation saysOur practice with 13 to 17 year olds
ChatGPT (OpenAI Help Center, “Is ChatGPT safe for all ages?”)“ChatGPT is not meant for children under 13, and we require that children ages 13 to 18 obtain parental consent before using ChatGPT.”Optional, only after a parent agrees in writing; no lesson depends on it
Claude, under Anthropic’s consumer terms dated Oct 8, 2025Users “must be at least 18 years old”Not used and not suggested to anyone under 18
Any AI helper during the CCC (CCC Online Grader rules)Banned outright; the rules name “generative AI such as CoPilot or ChatGPT”Contest practice happens with every assistant switched off

For a Grade 9 or 10 student the practical question is not which chatbot is cleverest but what happens to their own thinking when one is always open. The tree model above is a good test. A chatbot could write the loop that fetches the pages. It would not notice that the diameter arrives as text, that the smallest trees are being outvoted, or that the file stops at the regional road allowance. Those are the observations that make the work the student’s own, and they come only from reading the data and the output line by line. So in our classes a teen writes and explains the code first. Where a parent has agreed to ChatGPT, it appears later as something to check against, never as the author.

Parental consent is the rule

OpenAI asks for a parent’s consent from 13 to 18. We put that decision with the family, say in advance which lessons could use the tool, and keep every lesson complete without it.

No 18-plus tools for teens

Anthropic limits Claude to adults, which keeps it out of every lesson we teach to under-18s. Our agentic coding course is for adults for the same reason, and teens are not placed in it.

Homework stays theirs

We explain ideas and review a student’s reasoning. We do not write marked school work, and we would rather a teen hand in a smaller program they understand than a polished one they do not.

Eastern time

Richmond Hill clock and India clock, autumn 2026 to summer 2027

Richmond Hill moves its clocks back on 1 November 2026 and forward again on 14 March 2027, while India keeps one clock all year. The sample hours below show the gap and are not a published timetable.

Richmond Hill time (zone America/Toronto) beside India time. UTC offsets: IANA time zone database 2026e. Conversions: ours
DatesRichmond Hill offsetIndia ahead bySunday 9 to 10:30 am in Richmond HillWeekday 7 to 8:30 pm in Richmond Hill
Late October 2026, before the changeUTC-4nine and a half hours6:30 to 8 pm in India4:30 to 6 am the next day in India
1 November 2026 to 14 March 2027UTC-5ten and a half hours7:30 to 9 pm in India5:30 to 7 am the next day in India
Spring and summer 2027, from 14 MarchUTC-4nine and a half hours6:30 to 8 pm in India4:30 to 6 am the next day in India

Times written in Eastern

Every confirmation names the Richmond Hill time, never India time alone. Before each clock change we send the new times again, so the November and March weekends cost nobody a class.

Phone numbers here

Richmond Hill numbers use the 289, 365, 742 and 905 area codes, shared across the belt of cities around Toronto. Type all ten digits in the form below, without a leading 1.

January and February

The Grade 9 EQAO math window ends on 5 February 2027 and the CCC follows on 17 February. Students who want both get a plan in December that spaces the practice instead of stacking it.

Learning ladder

From first loops in Grade 8 to a classifier a Grade 12 student can defend

The ages are rough. Placement follows what the student can already program, which the free class finds out in about twenty minutes.

Ages 13 and 14

Programs, not snippets

Input, output, loops and lists in complete programs, plus the predict-before-you-run habit that MTH1W coding rewards.

Python for Teens
Ages 14 and 15

Algorithms and a first CCC

Counting, searching and two-dimensional grids, with a CCC Junior attempt for students who want one.

Problem Solving for TeensCCC Junior and Senior Preparation (Canadian Computing Competition)
Ages 15 to 17

Data and models

Real public data, cleaned and tested: the York Region trees first, then larger sets and proper train and test splits.

Data Science for TeensAI and Machine Learning for Teens
Ages 16 to 18

ICS4U and beyond

Support beside ICS3U and ICS4U, and C++ for students who aim at the hardest CCC Senior problems.

Ontario Computer Science CompanionC++ for Teens
Thinking before tools

Why a Richmond Hill teen should understand the model before an AI tool explains it

Because the useful part of the tree project is the doubt, and a tool cannot doubt on the student’s behalf.

A nearest-neighbours model is simple enough to explain on a whiteboard: find the most similar examples you already know, and copy what they say. A teen who has written one by hand knows exactly why it fails on rare cases, why the choice of k matters, and why a single accuracy figure can flatter it. That understanding transfers to every model they will meet later, including the large ones behind chatbots.

So our order is fixed. A student first describes the problem in plain words, then writes the steps, predicts the result, runs it and compares. Only after that, and only within the age rules above, might an AI tool come in as a second opinion to be checked. Students who learn in this order become the ones who can tell when a tool is wrong.

It is also how the CCC works: three hours, an editor and no assistant, so the reasoning on the page has to be the student’s. The longer argument is in whether coding is still worth learning in 2026.

Delivery

One live classroom for Richmond Hill, Markham and Vaughan

Lessons are online, so a teen near Yonge and Major Mackenzie and another in Markham or Vaughan can share a class without a drive along Highway 7.

Class times

Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.

Neighbouring towns

Students in Markham, Vaughan, Aurora and Newmarket join the same groups, all on the Eastern time clock that Richmond Hill uses.

Group or private

A class of fifteen to twenty at the same stage, or a teacher of their own when a deadline is close, such as a contest in February or a final ICS4U assignment.

Work in their own folder

Projects sit in folders the student owns, and the student writes them. We explain and review; graded school work stays the student’s own.

Equipment

A laptop or desktop that can run Python 3, a headset or microphone, and a stable connection. If Python is not installed yet, the first class sets it up.

A free first class

The first lesson is a real lesson, at no cost and with no card details asked. It ends with a named course and a level, or advice to wait.

No Richmond Hill centre

Modern Age Coders has no office or classroom in Richmond Hill and does not claim one. Teachers are based in India and teach live, online, at Richmond Hill hours.

Fees

Fees for Richmond Hill families

Each fee shows in your own currency, with its code beside it.

First classFree

One complete live lesson with no charge, ending in a placement and a suggested course.

Group tuition$140 CAD

Eight live classes a month with fifteen to twenty teens at one level, billed as a monthly fee.

Private tuition$210 CAD

One teacher for one teen at hours the family picks, billed as a monthly fee.

Richmond Hill families pay what families pay anywhere else in Canada. We bill nothing until after the free class, once a course and a schedule suit the family. Missed classes and holidays are covered on the pricing page.

Reviews

Google reviews from families 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

Request a free first lesson for a Richmond Hill teen

Give us the grade and a line about what the student has coded so far. A beginner writes a first full program; a stronger student may get the York Region tree data or one of our timed CCC-style problems.

+1

FAQ

Questions from Richmond Hill parents and teens

The ones we hear most often from families in Richmond Hill.

Are your Richmond Hill classes in person?

No. Every class is live and online, so a Richmond Hill teen joins from home. There is no centre in the city; students choose a group of fifteen to twenty or a private teacher.

What should a Grade 9 student in Richmond Hill learn first?

Usually Python for Teens. If the free class shows complete programs already, we place higher. The same course backs up the coding strand of MTH1W, Grade 9 math.

Will your classes count as ICS3U or ICS4U?

No. We teach alongside the school course and we do not grant Ontario credits. The credit is earned only at school; we add practice, explanation and project feedback.

Does my 15 year old need my permission to use ChatGPT?

Yes, by OpenAI's own rule: its help centre says children aged 13 to 18 need parental consent. Our lessons never depend on it, so saying no costs your teen nothing.

Do you use Claude with teenagers?

No. Anthropic's consumer terms require users to be at least 18, so Claude is not part of any lesson for students under 18.

How hard is the CCC Junior paper?

CEMC describes the first two questions as basic loops and conditions, and the 2026 Junior mean was 42.65 out of 75. A teen with a few months of steady Python can write a solid paper.

Can a Richmond Hill student enter the CCC without a school?

Not alone. CEMC says students cannot register individually; a school orders the contest. If the student's own school does not, CEMC suggests asking another local school.

Are AI assistants allowed during the CCC?

No. CEMC's grader rules ban them by name, CoPilot and ChatGPT included, so our contest practice runs with every assistant turned off.

When are classes for Richmond Hill 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. Every time is confirmed in Eastern time.

Is the York Region tree project real data?

Yes. Students download York Region's published street tree records for Richmond Hill under the Region's open data licence and build the model themselves. The Region has not endorsed our teaching.

More for Ontario

Other pages for Richmond Hill and Ontario students

For school courses, read ICD2O explained, ICS3U help and ICS4U help. For contests, try the CCC past problems guide and the Canadian contest calendar, or go back to the Ontario page for the whole province.

Free classPriority demoCall us

Keep exploring Modern Age Coders

Coding classes in nearby places

Learn more

Free resources

From the blog

Start here