Where can a teenager in Surrey, BC learn Python and AI live, with a real teacher?
Modern Age Coders teaches Python and AI live online to teens aged 13 to 18 in Surrey, British Columbia, in a class of fifteen to twenty or one to one. Students usually start with Python for Teens, then choose AI and Machine Learning for Teens, Data Science for Teens or CCC preparation. Classes are booked on Pacific time, which in BC no longer changes, and the first class is free.
This page is about Surrey in British Columbia, the city south of the Fraser River, not the English county. A Surrey teenager has more computing on offer at school than the course names suggest: British Columbia files programming under two different subject areas, so a student can meet Computer Programming in one corner of the timetable and Computer Science in the mathematics department. Outside school, CEMC’s contests start with a 45-minute challenge that needs no coding at all. Below we set out what the BC curriculum says, quoting it, what permanent Pacific time means for a live class with teachers in India, how contests fit a Grade 9 or 10 student, which AI tools a teen may legally use, and an unsupervised learning project built on the City of Surrey’s own playground map.
Facts last verified 22 October 2026. Teaching is online; no Surrey branch is claimed.
Python comes first for almost everyone. The other three follow a student’s interest: models, data or contests.

From the first line of code to functions, lists, dictionaries and files: the base that BC Computer Programming 11 and the projects below both build on.
See the syllabus
Supervised and unsupervised learning, tested honestly. Clustering playgrounds, as on this page, is where its unsupervised unit begins.
See the syllabus
Reading open data, cleaning it, summarising it and drawing it, with real municipal files from British Columbia in the exercises.
See the syllabus
Problems we write in the style of the Canadian Computing Competition, timed like the real paper and checked the way its grader checks.
See the syllabusBrowse the course atlas for more than one hundred options and use the coding roadmap to check prerequisites.
The four we are known for
These run underneath everything above. Every one is live and online, placed by ability rather than by age, and the first class is free.

Python, web and AI projects where the learner still owns the thinking.
See the syllabus
Automate the work you already do, then let AI carry part of it.
See the syllabus
Train a model, read what it learned, and be able to say why it is wrong.
See the syllabus
Run AI coding agents on real work without losing control of the codebase.
See the syllabusBritish Columbia lists programming courses in Applied Design, Skills, and Technologies (ADST) and, separately, Computer Science 11 and 12 in Mathematics. The quoted text is from curriculum.gov.bc.ca as we read it on 22 October 2026; the notes are ours.
| Course | Subject area | What the curriculum text includes | Our note |
|---|---|---|---|
| Computer Studies 10, Web Development 10 | ADST | Both appear in the ADST 10 to 12 course list | The Computer Studies 10 content lists hardware, software types and security risks; Web Development 10 is the web-focused option |
| Computer Programming 11 | ADST | “programming language constructs to support input/output, logic, decision structure, and loops” | The first full programming course for most students |
| Computer Programming 12 | ADST | “higher-level structures, such as functions, methods, or classes, that help improve the organization of source code” | Organising larger programs, the step from scripts to software |
| Computer Science 11 and 12 | Mathematics | Big idea of decomposition: “dividing complex problems into parts that are easier to conceive, understand, and program” | Algorithmic and mathematical, closer to contest thinking |
| Robotics 11, Computer Information Systems 11 | ADST | Both appear in the ADST 10 to 12 course list | Hardware control and information systems, for students who like applied work |
Two lines in those documents describe our teaching better than we could. Computer Programming 11 defines computational thinking this way: “Key components are decomposition, patterns and generalizations, abstraction, and algorithmic thinking.” Computer Science 11 calls algorithms “sets of rules or instructions that precisely define a sequence of operations” and asks students, among its sample questions, “What makes one algorithm better than another algorithm?” That last question is the heart of the playground project further down: two runs of the same algorithm on the same data give different answers, and a student has to decide which one is better and why. Which BC courses a particular school offers, and in which grade, varies, so families should check the school’s own course list.
Before the senior courses, we get students writing full Python programs, so Computer Programming 11 starts with logic and loops they already trust instead of syntax they are still learning.
Students who enjoy building apps and tools often like the ADST courses; those who enjoy puzzles and proofs often like Computer Science 11 and 12. Many take both, and our lessons support either.
Our page on Computer Programming 11 and 12 in BC covers the two ADST courses in depth, and coding curriculum by province compares BC with the rest of Canada.
Our classes run alongside school courses and we do not grant provincial credits; BC course credits come only from the student’s school. Modern Age Coders has no connection with BC’s education ministry or with any BC school district.
Both contests below are run by CEMC at the University of Waterloo and are written through a school. Facts and quotes are CEMC’s, read on 22 October 2026; the last column is our suggestion.
| Contest | When, per CEMC | Format, per CEMC | Who it suits |
|---|---|---|---|
| Beaver Computing Challenge, Grade 9/10 | Monday 9 November 2026 to Friday 20 November 2026 | “15 multiple-choice questions out of a total of 90”; “Time allowed for completion is 45 minutes.” | Students in Grade 10 or below, including those who have never coded |
| Canadian Computing Competition (CCC) | Wednesday 17 February 2027 | “5 questions.”, three hours, written online; Junior or Senior level | Students who already write programs, at Junior first |
The Beaver Computing Challenge is the gentler door. CEMC says its questions “only require familiarity with concepts covered in the mathematics curriculum across all Canadian provinces”, and that “Students in Grade 10 or below are eligible to participate in the Grade 9/10 BCC”. It is offered in English only. The CCC is the real programming paper, available in English and French, and CEMC notes that “participants can create a free practice account and access previous contests” on its online grader. For a Surrey student in Grade 9, a sensible year is the Beaver Challenge in November, then a CCC Junior attempt in February once loops and lists are comfortable. Both are written through a school: CEMC states that “all students must participate through their school.”
With BC on UTC-7 all year, the CCC falls on the same clock as every other week of the school year. We hold mock papers at the hour a student’s school plans to run the real one.
The CCC accepts Python, and for Junior questions it is all a teen needs. Students who later chase the hardest Senior problems add C++ with us in a later year.
We do not copy CEMC questions or solutions. Students use CEMC’s free archive and practice account on their own, and in class work through problems we have written. See the Beaver Challenge guide.
The City of Surrey maps every park playground it runs and labels each with a community such as Newton or Cloverdale. Our students hide those labels, let the k-means algorithm group the playgrounds by location, then compare its groups with the City’s. The clusters and counts here are our output; the community labels are the City’s.
| Run | Total squared distance to cluster centres | Playgrounds in a cluster led by their own community | Communities leading the six clusters |
|---|---|---|---|
| Tightest of the 20 runs | 891 million square metres | 137 of 167 | Cloverdale, Guildford, Newton, South Surrey (twice), Whalley |
| Tightest run with six different leaders | 944 million square metres | 144 of 167 | Cloverdale, Fleetwood, Guildford, Newton, South Surrey, Whalley |
This is the full program in standard-library Python. It downloads the playground outlines in the City’s own map grid, where positions are in metres, reduces each outline to a rough centre by averaging its corner points, and runs k-means twenty times from different random starting centres. When we ran it on 22 October 2026 it printed exactly the two rows in the table:import json, random, urllib.request
from collections import Counter
URL = ("https://services5.arcgis.com/YRpe0VKTJytZSSIB/arcgis/rest/services/"
"Park%20Playgrounds/FeatureServer/0/query?where=1%3D1"
"&outFields=COMMUNITY&f=json")
spots = [] # centre of each playground outline, metres east and north (UTM zone 10N)
for f in json.load(urllib.request.urlopen(URL))["features"]:
ring = f["geometry"]["rings"][0]
spots.append((sum(p[0] for p in ring) / len(ring),
sum(p[1] for p in ring) / len(ring), f["attributes"]["COMMUNITY"]))
def nearest(x, y, centres):
gaps = [(x - cx) ** 2 + (y - cy) ** 2 for cx, cy in centres]
return gaps.index(min(gaps)), min(gaps)
def kmeans(k, seed):
random.seed(seed)
centres = [s[:2] for s in random.sample(spots, k)]
for _ in range(50):
groups = [[] for _ in range(k)]
for s in spots:
groups[nearest(s[0], s[1], centres)[0]].append(s)
centres = [(sum(s[0] for s in g) / len(g), sum(s[1] for s in g) / len(g))
if g else centres[i] for i, g in enumerate(groups)]
spread = sum(nearest(s[0], s[1], centres)[1] for s in spots)
return spread, groups
runs = sorted(kmeans(6, seed) for seed in range(1, 21))
def leaders(groups):
return [Counter(s[2] for s in g).most_common(1)[0] for g in groups]
def report(label, spread, groups):
top = leaders(groups)
print(label, "spread", round(spread / 1e6), "million m2;",
sum(n for _, n in top), "of", len(spots), "match their cluster")
print(" clusters led by", sorted(str(name) for name, _ in top))
report("tightest of 20 runs:", *runs[0])
six = next(r for r in runs if len({name for name, _ in leaders(r[1])}) == 6)
report("tightest run with six different leaders:", *six)
Unlike most school exercises, k-means is never told the right groups. It places six centres, gives each playground to the nearest one, moves each centre to the middle of its group, and repeats. The community names are used only afterwards, to judge the result.
Twenty starts did not all agree. The run with the smallest total distance split South Surrey into two clusters and left Fleetwood without one of its own; a slightly looser run matched all six communities and placed 144 playgrounds with their own label.
That is BC Computer Science 11’s own question, and here it has no single answer. The tightest run is better by the algorithm’s own measure; the six-community run is better at matching how the City describes itself. Students write down which they prefer, and why.
Of the 167 playgrounds, 13 carry no community label and one is tagged City Centre. Newton has the most labelled playgrounds (38), then Cloverdale (32), Whalley (28), South Surrey (24), Guildford (18) and Fleetwood (13). Because South Surrey covers a large area with fewer playgrounds, a method that only cares about distance is tempted to cut it in two. Clusters reflect the data you give them, not the map in a resident’s head.
A note on the numbers: averaging an outline’s corners gives a rough centre, not a true centroid, which is close enough for clustering a city’s worth of small parks. The playground layer is published by the City of Surrey with an update frequency the City gives as monthly, so a later download may differ slightly. The City’s open data licence grants “a worldwide, royalty-free, perpetual, non-exclusive license to use the Information, including for commercial purposes”, and asks for the statement “Contains information licensed under the Open Government License”, with the City of Surrey named after it. Source: City of Surrey, Park Playgrounds layer. The City has not endorsed this page or our classes, and our clusters are not City boundaries.
Each rule comes from the organisation that owns the tool or runs the contest, read in its own document on 22 October 2026. The right-hand column is how we apply it.
| Tool or setting | The organisation’s rule | In our classes |
|---|---|---|
| ChatGPT (OpenAI Help Center) | “ChatGPT is not meant for children under 13, and we require that children ages 13 to 18 obtain parental consent before using ChatGPT.” | Optional, with a parent’s consent; never needed to finish a lesson |
| Claude (Anthropic Consumer Terms, Oct 8, 2025) | Users “must be at least 18 years old” | Never used or recommended for teens |
| Coding editors during the CCC (CCC Online Grader rules) | “AI-based tools within an IDE cannot be used.” | We switch editor autocomplete off in contest practice too |
The editor rule is the one Surrey families tend to miss. Many school laptops and free editors now finish lines of code automatically, and a student who has always worked that way can be startled to find the help gone on contest day. We start contest students with plain editors early. In project work the issue is different: the playground program is short enough that a chatbot could write it, but the interesting work is deciding whether a split South Surrey is a mistake or a finding. A teen who learns to make that call, and to explain it, is learning the part of AI work that tools cannot do for them.
OpenAI asks for parental consent from 13 to 18. We let the family decide, list the lessons where the tool might appear, and make sure a teen without it misses nothing.
Anthropic’s terms set 18 as the minimum age, so Claude stays out of teen classes; our adult agentic coding course is closed to under-18s for the same reason.
We explain, question and give practice. We do not complete marked school work, and we would rather see a shorter program a student can defend than a longer one they cannot.
The BC government announced that “B.C. will adopt permanent, year-round daylight saving time after clocks shift forward an hour on Sunday, March 8, 2026”, and that “Pacific time will be set seven hours behind co-ordinated universal time (UTC-7)”. So Surrey does not fall back on 1 November 2026, while Ontario and Quebec do.
| Period | Surrey | India is ahead of Surrey by | Saturday 9 to 10:30 am in Surrey is, in India | Weekday 4:30 to 6 pm in Surrey is, in India | Ontario is ahead of Surrey by |
|---|---|---|---|---|---|
| To 31 October 2026 | UTC-7 | 12.5 hours | 9:30 to 11 pm | 5 to 6:30 am, next day | 3 hours |
| 1 November 2026 to 13 March 2027 | UTC-7, no change | 12.5 hours | 9:30 to 11 pm | 5 to 6:30 am, next day | 2 hours |
| From 14 March 2027 | UTC-7 | 12.5 hours | 9:30 to 11 pm | 5 to 6:30 am, next day | 3 hours |
Because India and BC both stay put, the gap is twelve and a half hours all year. A Surrey class time never shifts against its teacher, which makes long-term timetables simple.
The difference from Ontario is what moves: two hours in winter, three in summer. Anything a Surrey teen joins on Eastern time, such as a national webinar, needs checking after 1 November.
Surrey numbers use 604 and the BC overlay codes 236, 257, 672 and 778. Enter the ten digits in the form below without a leading 1.
Treat the ages as rough. Placement depends on what a student can already program, checked in the free class.
Complete programs with loops, lists and functions, and the Beaver Challenge for students who want a first contest.
Python for TeensSearching, sorting and careful counting, the CS 11 kind of thinking, with a CCC Junior paper in February.
Problem Solving for TeensCCC Junior and Senior Preparation (Canadian Computing Competition)Open municipal data cleaned and mapped, then k-means and other unsupervised methods on real files.
Data Science for TeensAI and Machine Learning for TeensSupervised models with proper testing, and C++ for students heading for CCC Senior.
AI and Machine Learning for TeensC++ for TeensBecause k-means gave two different answers on the same playgrounds, and only a person can say which one matters.
Unsupervised learning is a good place to see the limits of automation. The algorithm optimises one thing, distance, and is perfectly happy to split a community in two. A student who has watched that happen understands that every model optimises something specific, and that the something is chosen by a person.
Our teaching follows from that. Students state the question first, write and run the steps, predict what should happen, and argue with what does. AI tools, where a family allows them, arrive later as a second opinion to be tested. Teens who work this way are the ones who notice when a confident answer is wrong.
The CCC enforces the same idea from the other side: no assistant in the editor, so the reasoning has to be the student’s. The longer argument is in why learning to code still pays off in 2026.
Classes are online, so a teen in Newton and another in Cloverdale, Delta or White Rock can sit in the same lesson without a trip over the Pattullo Bridge.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
Students in Delta, Langley and White Rock join the same groups as Surrey students, all on Pacific time.
Groups of fifteen to twenty at one level, or private lessons for a student with a fixed aim such as a CCC paper or a BC course project.
Students write and keep every project in their own files. Teachers review and explain; school assignments remain the student’s work.
A laptop or desktop able to run Python 3, a microphone and a reliable connection. Python is installed together in the first lesson if needed.
The first class costs nothing, asks for no card, and ends with a recommended course and level from the teacher.
No Surrey centre
Modern Age Coders has no office or classroom in Surrey, BC and does not claim one. Teachers work from India and teach live online, on Pacific time.
Fees appear in your own currency, with the currency code printed beside each.
A complete live class at no cost, finishing with a placement and a course suggestion.
A monthly fee for eight live classes with fifteen to twenty teens at one level.
A monthly fee for one teacher with one student, at hours the family chooses.
Surrey families pay the same as families anywhere in Canada. There is no charge until after the free class and an agreed course and schedule; the pricing page covers missed lessons and school breaks.
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
Tell us the grade and what the student has coded so far. A beginner writes a first complete program; a student with experience might try the Surrey playground data or a timed problem of ours in the CCC style.
What parents and teens in Surrey, British Columbia ask us most.
Yes. It is for families in Surrey, BC, on Pacific time and in the BC school system, not Surrey in England. Classes are live online from home.
No. Every lesson is live online. Teens join a class of fifteen to twenty or have a private teacher.
No. We teach alongside school courses and do not grant provincial credits. The credit for Computer Programming 11, 12 or Computer Science 11 comes from the school.
Python for Teens in most cases, plus the Beaver Computing Challenge in November if they want a first contest. The free class confirms the level.
Yes. OpenAI's help centre says children aged 13 to 18 need parental consent, and that ChatGPT is not meant for children under 13. Our lessons work without it.
No. Anthropic's terms say users must be at least 18, so no student under 18 uses Claude with us.
No. The CCC grader rules say AI-based tools within an IDE cannot be used, so we practise for contests with those features off.
Yes. The BC government says the province adopted permanent daylight saving time after 8 March 2026, set at UTC-7, so Surrey does not fall back on 1 November 2026.
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 Pacific time.
From the City of Surrey's published Park Playgrounds layer, used under the City's open data licence. Students download it and run the clustering themselves; the City has not endorsed our courses.
Start with coding classes in British Columbia, or read about UBC computer science admission. For contests see the CCC Junior guide, and for scheduling across provinces the Canada time zones guide.