Where can a Lethbridge teenager learn Python and AI from a real teacher, live?
Modern Age Coders runs live online Python and AI classes for Lethbridge teenagers aged 13 to 18, either in a class of fifteen to twenty or with a private teacher. A typical path is Python for Teens, then AI and Machine Learning for Teens or CCC preparation, with Grade 12 math support for students facing Math 30-1. Classes are scheduled on Alberta time, which no longer changes, and the first one is free.
Alberta is rewriting what its students learn, and artificial intelligence is now named in the plan. The province describes its renewed curriculum as integrating topics like artificial intelligence and computer science, with the drafts moving through pilot years before they become mandatory. For a Lethbridge teenager today that means school will talk more about AI, while the deep practice of building and testing programs still mostly happens outside class. This page quotes the Alberta government on the renewal, the diploma exams and the province’s new all-year clock, explains how CEMC’s contests work for a student in southern Alberta, sets out the AI tool age rules, and walks through a project in which our students teach a computer to recognise arterial roads from the City of Lethbridge’s own street records, and then find out what it misses.
Facts last verified 22 October 2026. Teaching is online; no Lethbridge branch is claimed.
Three are coding courses; one supports the Grade 12 math that machine learning and university programmes lean on. The free class shows where to start.

Real Python from the first program to functions, dictionaries and files, which is the toolkit the Lethbridge street project uses from start to finish.
See the syllabus
Models judged by more than accuracy: precision, recall and honest test sets, as in the arterial road classifier on this page.
See the syllabus
CCC-style problems we write ourselves, practised in timed sets with no AI help, so contest day feels familiar.
See the syllabus
Support for Math 30-1, the diploma course where the exam is 30 per cent of the final mark, taught beside the school course.
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 syllabusThe quotes in this section are the Alberta government’s, from alberta.ca as we read it on 22 October 2026. Where we explain what a line means for a teenager, we say so.
| Topic | Alberta government wording | What we take from it |
|---|---|---|
| AI in the renewal | “By integrating topics like artificial intelligence, computer science and money management, Alberta’s renewed curriculum will help students prepare for high-demand jobs in an evolving economy.” | Said of the draft science 7 to 9, CALM 10 and physical education and wellness 10 curriculums |
| When those drafts arrive | “Optional piloting of these draft curriculums will occur in 2027/28, followed by mandatory implementation in 2028/29.” | A teen in Grade 8 today may finish junior high before the change is compulsory |
| Grades 7 to 9 math | Optional classroom piloting in 2026/27 “ahead of mandatory implementation in September 2027” | Math changes sooner than science |
| Diploma exams | “70% of the final mark comes from course work. The remaining 30% comes from the diploma exam.” | Math 30-1 and 30-2 are on the diploma list; the exam matters, but course work matters more |
| Provincial tests | “Provincial Achievement Tests (PATs) are administered annually to all Alberta students in grades 6 and 9.”, written “in a digital environment rather than pencil and paper” | Grade 9 students meet a digital provincial test the year before high school |
The renewal sentence is worth reading carefully, because it is easy to over-read. Alberta is saying that artificial intelligence and computer science are topics the renewed curriculum integrates, in drafts that are still being piloted, with the science drafts not mandatory until 2028/29. It is not saying that every Lethbridge junior high student will build a model next year. Families who want their teenager to do that, to write Python that learns from data and then test it honestly, have a few years before school catches up. That gap is where our lessons sit. We also note what we could not verify: Alberta’s high school computing course descriptions sit on a site we could not read as plain text, so we do not describe them here.
Grade 7 to 9 students start with complete Python programs and short data tasks, so that when AI appears in school science it is something they have already built a small piece of.
Students move to algorithms and real datasets, and many try a first CCC paper. The street classifier below is a typical Grade 10 or 11 project with us.
Math 30-1 carries a diploma exam worth 30 per cent of the final mark. Students heading for computer science often pair our math support with coding. See Math 30-1 help.
Our classes run alongside a student’s school courses and we do not grant provincial credits; Alberta course credits and diploma exam marks come only through the school. We are not connected with Alberta’s education ministry or with any Lethbridge school division.
CEMC at the University of Waterloo runs Canada’s main school computing contest, the CCC. The quotes are CEMC’s, read on 22 October 2026; the advice is ours.
| Question | CEMC’s answer | Our advice |
|---|---|---|
| Is it a test? | “Our contests are not tests or exams. There is no passing or failing score.” | Write it for practice and for the feedback; nothing on a transcript depends on it |
| Who else writes? | Educators order CEMC contests “for over 300 000 students worldwide, reaching students in over 85 countries” | Alberta students are writing the same papers as students across Canada and beyond |
| Can I sign up myself? | “It is not possible for students to individually register for a contest” | Ask a teacher at school to order the CCC early in the new year |
| Which language? | “CCC participants may use C, C++, Python 2, Python 3, or Java.” | Python 3 for almost every first-time writer |
| When? | Wednesday 17 February 2027 for North and South America | On Alberta time, untouched by any clock change |
The first line in that table is the one we repeat most to anxious teenagers. A CEMC contest is a measuring tape, not a gate: a Grade 10 student who solves two Junior questions in February 2027 has learned exactly where they stand and what to practise next. Many of our Lethbridge students treat the CCC as one checkpoint in a longer year that also includes data projects and school courses. For students who outgrow the CCC, the USACO competition is another route; our USACO page for Canadian students covers it.
We never copy CEMC problems or solutions into lessons. CEMC’s free archive is for students to read independently; class time uses problems our teachers write.
The CCC bans AI helpers outright, so contest practice with us happens in a plain editor from the first week, and students learn to debug by reading their own code.
Our CCC Junior guide explains the first paper. Students move up to Senior when Junior practice papers stop being a challenge.
The City of Lethbridge publishes its street network with each segment’s type, posted speed, lanes, signals and sanding priority. Our students hide the type, let a program learn which single yes-or-no question does most to pick out arterials, and then measure it three ways. Every figure here is our own result, not the City’s.
| Rule | Accuracy | Precision (when it says arterial, how often it is right) | Recall (share of real arterials it finds) |
|---|---|---|---|
| Never say arterial | 79.6% | none (it never says arterial) | 0% |
| Learned rule: speed limit over 50 | 88.7% | 99.1% | 44.9% |
| Hand rule: sanding priority 1 or 2 | 86.8% | 63.7% | 83.0% |
Below is everything, written with Python’s standard library only. The program pages through the City’s street service 1,000 segments at a time, keeps only local, collector and arterial streets, shuffles them with a fixed seed, and tries seven candidate questions. For each it measures how mixed the two resulting groups are (the Gini impurity used in decision trees) and keeps the question that separates arterials most cleanly. Run on 22 October 2026, it printed the three rows above:import json, random, urllib.request, urllib.parse
URL = ("https://gis.lethbridge.ca/gisopendata/rest/services/OpenData/"
"odl_streets/MapServer/0/query?")
ask = {"where": "FDESC IN ('Local','Collector','Arterial') AND SPEED IS NOT NULL",
"outFields": "FDESC,SPEED,NumOfLanes,RedLight,SandPriority",
"returnGeometry": "false", "orderByFields": "OBJECTID", "f": "json",
"resultOffset": 0, "resultRecordCount": 1000}
roads = []
while True:
batch = json.load(urllib.request.urlopen(URL + urllib.parse.urlencode(ask)))["features"]
if not batch:
break
for f in batch:
a = f["attributes"]
roads.append({"speed": a["SPEED"], "lanes": int(a["NumOfLanes"] or 0),
"signal": a["RedLight"] is not None, "sand": a["SandPriority"],
"arterial": a["FDESC"] == "Arterial"})
ask["resultOffset"] += len(batch)
random.seed(2026)
random.shuffle(roads)
cut = len(roads) * 3 // 4
train, test = roads[:cut], roads[cut:]
QUESTIONS = {"speed limit over %d" % t: (lambda r, t=t: r["speed"] > t) for t in (30, 40, 50, 60)}
QUESTIONS.update({"more than %d lane" % t: (lambda r, t=t: r["lanes"] > t) for t in (1, 2)})
QUESTIONS["has a traffic signal"] = lambda r: r["signal"]
def impurity(group):
p = sum(r["arterial"] for r in group) / max(1, len(group))
return len(group) * 2 * p * (1 - p)
def split_cost(rule):
yes = [r for r in train if rule(r)]
return impurity(yes) + impurity([r for r in train if not rule(r)])
def report(name, rule):
hit = [r for r in test if rule(r)]
tp = sum(r["arterial"] for r in hit)
every = sum(r["arterial"] for r in test)
right = sum(rule(r) == r["arterial"] for r in test)
print("%s: accuracy %.1f%%, precision %.1f%%, recall %.1f%%"
% (name, 100 * right / len(test), 100 * tp / max(1, len(hit)), 100 * tp / every))
winner = min(QUESTIONS, key=lambda q: split_cost(QUESTIONS[q]))
print(len(roads), "street segments;", len(train), "to learn from,", len(test), "to test")
report("never say arterial", lambda r: False)
report("learned rule '" + winner + "'", QUESTIONS[winner])
report("sanding priority 1 or 2", lambda r: r["sand"] in ("1", "2"))
Only about one segment in five is an arterial, so a rule that never says arterial is still right 79.6 per cent of the time while finding none of them. That is why we never judge a classifier by accuracy alone on an uneven dataset.
The learned rule, a posted speed above 50, is almost never wrong when it fires, at 99.1 per cent precision, but it finds fewer than half the arterials, because 532 arterial segments are posted at 50. Sanding priority finds 83 per cent of them, at the cost of many false alarms.
There is no single right rule. If a wrong label is expensive, use the precise one; if missing an arterial is worse, use the one with more recall. Students write down a situation for each and defend their choice.
We also let the program ask a second question inside each branch, making a two-level decision tree. On this split it made exactly the same test predictions as the single rule. More model is not always more learning; sometimes the data simply does not hold the extra information. And notice that sanding priority is itself a decision someone made about each road, so a rule built on it partly copies an earlier human label rather than discovering anything new.
Some details for careful readers. The layer holds 5,833 segments in all; we kept the 4,830 typed Local, Collector or Arterial with a speed recorded (2,133 local, 1,645 collector, 1,052 arterial) and left out ramps, private, provincial, county, park and gravel segments. Only 8 of the kept non-arterial segments are posted above 50, which is why the speed rule is so precise. Posted speed is a reasonable clue, not a definition: the City decides street types for its own planning reasons. The data is published under the City of Lethbridge Open Data License, Version 2.0, which grants “a worldwide, royalty-free, non-exclusive license to use the information” and lets users use it “in any medium, mode or format for any lawful purpose”. Source: City of Lethbridge, Street Network, Lethbridge Open Data Catalogue. The City does not endorse this page or our classes.
Each rule is copied word for word from the organisation behind it, as checked on 22 October 2026. The third column records what we do.
| Tool or setting | The organisation’s rule | How we handle it |
|---|---|---|
| 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.” | Only with a parent’s consent; every lesson stands without it |
| Claude, Anthropic Consumer Terms (Oct 8, 2025) | A minimum age: “You must be at least 18 years old” | Never part of teen lessons |
| During the CCC, CCC Online Grader rules | “All other Internet use is forbidden.”, including “generative AI such as CoPilot or ChatGPT” | Contest practice without assistants |
The street project is a good test of what an AI tool adds for a teenager. Asked to classify Lethbridge roads, a chatbot would likely report a high accuracy and stop there. It would not, unless pushed, point out that a never-arterial rule scores 79.6 per cent, that the top-scoring simple rule misses most arterials posted at 50, or that sanding priority is a human label in disguise. Those three observations are the skill. We want a Lethbridge teen to be able to make them unprompted, so our students write and explain their own code first. A tool, where a parent consents, comes in later as a second opinion that gets checked like any other.
Between 13 and 18, OpenAI wants a parent to consent. Families decide; we name in advance any lesson where it might be used, and none depends on it.
Claude is an adults-only product under Anthropic’s terms. It is absent from teen lessons, and teenagers cannot join our adult agentic coding course.
We explain and review, and we do not write marked school assignments. A smaller program a student can defend beats a larger one they cannot.
Alberta’s Official Time Act now defines official time as 6 hours behind Coordinated Universal Time, so Lethbridge does not change its clocks on 1 November 2026. India never changes; Ontario does. The sample hours show the gaps and are not a timetable.
| Period | Lethbridge | India ahead by | Saturday 8 to 9:30 am in Lethbridge, in India | Weekday 5 to 6:30 pm in Lethbridge, in India | Ontario ahead by |
|---|---|---|---|---|---|
| To 31 October 2026 | UTC-6 | 11.5 hours | 7:30 to 9 pm | 4:30 to 6 am, next day | 2 hours |
| 1 November 2026 to 13 March 2027 | UTC-6, unchanged | 11.5 hours | 7:30 to 9 pm | 4:30 to 6 am, next day | 1 hour |
| From 14 March 2027 | UTC-6 | 11.5 hours | 7:30 to 9 pm | 4:30 to 6 am, next day | 2 hours |
With Alberta and India both fixed, a Lethbridge class time sits at the same India hour every week of the year. Long-term schedules stay put.
National webinars and contest briefings often run on Eastern time. After 1 November 2026 they are one hour ahead of Lethbridge, not two, so check the time again.
Lethbridge phones use 403 and Alberta’s overlay codes 368, 587 and 825. Type the ten digits in the form without a leading 1.
Treat the stages as a guide. We place students on evidence, the code they write in the free class, not on age.
Input, loops, lists and functions in full programs, with output predicted before every run.
Python for TeensSearching, sorting and counting, and a first CCC Junior paper for students who want one.
Problem Solving for TeensCCC Junior and Senior Preparation (Canadian Computing Competition)Open data from Alberta cities, classifiers judged by precision and recall, honest test sets.
Data Science for TeensAI and Machine Learning for TeensGrade 12 math support beside the diploma course, and a larger machine learning project of the student’s own.
Western Canada Grade 12 MathAI and Machine Learning for TeensBecause the street rule looked excellent on accuracy and still missed most of what it was looking for.
Precision and recall sound like jargon, but they are the plainest questions anyone can ask of a prediction: when it says yes, is it right, and of all the real cases, how many did it catch? A teenager who has measured both on a rule they wrote will ask the same questions of every AI system they meet, including the ones in the news.
That is why our teaching runs in a fixed order. Frame the question, look at the data, write the steps, predict, run, measure, and argue. AI tools come later, within the age rules, as one more model to measure. Students who learn this way stop being impressed by a single big number.
Contest day asks for the same habit: the CCC allows no AI at all, so every line must be understood by the person who typed it. The longer argument is in why coding is still worth learning in 2026.
Teaching is online, so a teen on the west side of Lethbridge and one in Coaldale or Taber share a lesson without a drive across the Oldman River.
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 from Coaldale, Taber, Raymond and the rest of southern Alberta join the same groups, all on Alberta time.
A group of fifteen to twenty at one level, or a private teacher for a student working towards a CCC paper or a Math 30-1 exam.
Every project stays in the student’s own files. Teachers explain and review; graded school work remains the student’s.
A computer that runs Python 3, a microphone and a dependable connection. We set Python up together in the first class if needed.
A full lesson at no charge, with no card requested, closing with a recommended course and level.
No Lethbridge office
Modern Age Coders has no premises in Lethbridge and claims none. Every class is live online, taught by teachers in India, on Alberta time.
Every fee is shown in the visitor’s own currency, labelled with its code.
A full live lesson with no charge, ending with a placement and a course suggestion.
One monthly fee for eight live classes in a group of fifteen to twenty at one level.
One monthly fee for lessons with a private teacher at hours the family chooses.
The fee in Lethbridge is the same as in any other Canadian city. Billing starts only after the free class, once a course and a schedule are agreed; see the pricing page for missed classes and holidays.
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 any coding so far. Beginners leave the first class with a working program of their own; a more experienced student might start on the Lethbridge street data or a timed CCC-style problem of ours.
The questions we hear most from families in Lethbridge and southern Alberta.
No. All classes are live online, so Lethbridge teens join from home, in a group of fifteen to twenty or with a private teacher.
Alberta says its renewed curriculum integrates topics like artificial intelligence and computer science. For the draft science 7 to 9 curriculum, it lists optional piloting in 2027/28 and mandatory implementation in 2028/29.
No. We teach alongside school and do not grant provincial credits; credits and diploma exam marks come through the student's school.
Alberta says 30 per cent of the final mark comes from the diploma exam and 70 per cent from course work.
Only with parental consent, which OpenAI's help centre asks for from age 13 to 18. Our lessons never require ChatGPT.
No. Anthropic's terms require users to be at least 18, so Claude is not used with anyone younger.
No. CEMC says its contests are not tests or exams and have no passing or failing score. Students enter through a school.
Yes. Alberta's Official Time Act sets official time at 6 hours behind UTC, so Lethbridge stays on UTC-6 and keeps the same time when Ontario falls 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. All times are confirmed in Alberta time.
Yes. It uses the City of Lethbridge's published street network, with the City's open data licence covering its use. Students build and measure the rule themselves; the City does not endorse our teaching.
Start with coding classes in Alberta, then read Alberta’s new math curriculum explained, Math 30-1 or Math 30-2 and Math 30-1 diploma exam preparation.