ONT / EAR / 01
Early Math Foundations
Counting, shapes and patterns with objects a child can hold.
Open the syllabusOntario · Grades 1 to 8 · Strand C, expectation C3
Since the 2020 math curriculum, every Ontario child from Grade 1 to Grade 8 is expected to write code in math class. The wording changes each year, one or two words at a time, and those words decide what a child should be able to do by June. Below is the expectation for every grade, quoted from the ministry’s own curriculum site, then what each step looks like in a real program, written and run by us.
Teaching live online since 2020 · 10,000+ students · Scratch first, then Python
In short
Ontario’s 2020 elementary math curriculum puts coding in Strand C, Algebra, as expectation C3 in Grades 1 to 8. Its C3.1 wording grows from code with sequential events in Grade 1 to code that analyses data in Grade 8. Modern Age Coders teaches this live online, as a group or one to one, in Scratch Coding for Kids.
Learn it with a teacher
Scratch carries the early grades, the math course keeps number sense moving, and Python takes over around Grade 5 or 6.

ONT / 01
Ages 6 to 12. Sequences, two sprites at once, loops and loops inside loops: the Grade 1 to 4 rungs, built as games.
Open the syllabus →
ONT / 02
Placement by grade, then counting, operations, fractions and geometry. The arithmetic every coding task leans on.
Open the syllabus →
ONT / 03
Ages 10 to 15. Fractions, patterns, geometry and probability written as Python programs: the Grade 5 to 8 rungs.
Open the syllabus →The reference table
In every grade the overall expectation is the same sentence: students will “solve problems and create computational representations of mathematical situations using coding concepts and skills”. What changes is the specific expectation C3.1, which ends “by writing and executing code, including code that involves” and then names that year’s idea. This table quotes the part that changes.
| Grade | C3.1 asks for code that involves | A line from the curriculum’s notes | What it looks like (ours) |
|---|---|---|---|
| 1 | “sequential events” | “In coding, a sequential set of instructions is executed in order.” | A route of arrow cards across a floor grid |
| 2 | “sequential and concurrent events” | “Concurrent events are when multiple things are occurring at the same time” | Two Scratch sprites moving at once |
| 3 | “sequential, concurrent, and repeating events” | “Loops make code more readable and reduce the number of instructions that need to be written.” | A repeat block that walks a rectangle and adds up its sides |
| 4 | “sequential, concurrent, repeating, and nested events” | “Loops can exist within loops, referred to as ‘nested loops’.” | A loop inside a loop that draws a 3 by 4 array |
| 5 | “conditional statements and other control structures” | “Conditional statements are a representation of binary logic (yes or no, true or false, 1 or 0).” | Checking whether 47 belongs to a number pattern |
| 6 | the same as Grade 5, but now “efficient code” | “Using loops whenever possible is one way to make code more efficient.” | Adding 1 to 100 two ways and counting the work |
| 7 | “events influenced by a defined count and/or subprogram and other control structures”, still “efficient code” | “Sub-programs can be reused for multiple programs or can be called upon more than once from one main program.” | A function that counts doublings, called three times |
| 8 | “the analysis of data in order to inform and communicate decisions” | “By combining mathematical and coding concepts and skills, students can write programs to draw conclusions from data.” | A week of garden rainfall turned into a watering decision |
| Grades | C3.2 in the curriculum’s words |
|---|---|
| 1 to 5 | “read and alter existing code” that involves that grade’s idea, “and describe how changes to the code affect the outcomes” |
| 6 and 7 | The same, plus how changes affect “the outcomes and the efficiency of the code” |
| 8 | “read and alter existing code involving the analysis of data in order to inform and communicate decisions, and describe how changes to the code affect the outcomes and the efficiency of the code” |
First, the ideas pile up rather than replace each other. Grade 4 still lists sequential and concurrent events; it simply adds nesting on top. A Grade 4 child who never got comfortable with plain repetition is being asked to put a loop inside a loop.
Second, the word “efficient” enters C3.1 in Grade 6 and stays in Grade 7, then drops out of the Grade 8 C3.1 sentence, where data takes centre stage. Efficiency does not vanish in Grade 8: C3.2 still asks how changes affect “the efficiency of the code”.
Every C3.1 is about mathematical situations, not about coding for its own sake. The Grade 3 list of possible situations includes “determining perimeter”; the Grade 1 list starts with “moving from one location to another”. The code is a way of doing math out loud, where the computer checks the thinking.
That is why our examples below are all math problems first. A child who can explain why the program prints what it prints has met the expectation, whatever tool they used.
Source: The Ontario Curriculum: Mathematics, Grades 1 to 8 (2020), Strand C, expectations C3.1 and C3.2 and the notes attached to them for each grade, read through the curriculum site’s public content service on 22 October 2026. Grade-by-grade quotes are exact; we dropped a stray space the service prints before commas. This page is our own reading: we have no tie to the ministry or to any school board.
Reading the wording
The curriculum’s notes are short and precise. Five of them settle most of the questions parents ask us, starting with which program a child should use.
The notes for Grades 1 to 4 say: “Coding can include a combination of pseudocode, block-based coding programs, and text-based coding programs.” Neither Scratch nor Python is named in any of the eight grade documents we read.
Children can program “a pixelated image on a screen, a classmate acting out the code when appropriate, or a physical device (e.g., robot, microcontroller)”. A Grade 1 lesson with no computer at all can meet C3.1.
A Grade 3 note on C3.2 says: “It is important for students to understand when order matters.” Adding steps in any order gets the same total; turning then moving is not the same as moving then turning.
From Grade 5, the notes draw a line that trips up many beginners: “Assignment statements assign a value to a variable and usually use a single equal sign (=), while comparison statements are used to compare two values and usually use a double equal sign (==)”.
In math class, the equal sign says two sides are the same. In most code, a single equal sign means “put this value in this box”. A child who writes total = total + 4 is not writing a false equation; they are updating a running total. We spend a whole lesson on that one difference.
The Grade 6 notes define it: “Efficient code may involve using the instructions to solve a problem, using the smallest amount of space to store program data, and/or executing as fast as possible.” At this age that mostly means fewer instructions doing the same job, often by using a loop instead of copying a line ten times.
Grade 7 adds the defined count: “A defined count is used to repeat an instruction either for a predefined number of times (e.g., 10 repeats) or until a condition has been met (e.g., Number <= 100).” The doubling example further down is exactly that second kind of loop.
Coding also turns up outside math. The 2022 Science and Technology curriculum asks Grade 6 students to “use coding in investigations and to model concepts, and assess the impact of coding and of emerging technologies on everyday life”, and its A2.1 adds “with a focus on obtaining input in different ways”. So a Grade 6 child may meet coding twice a week in two subjects, with two teachers using two different tools.
One example per band, ours
These are our own examples, written for this page. The early ones are described as Scratch blocks or classroom activities; from Grade 4 on they are Python programs that we ran, with the output printed under each. None is taken from the curriculum’s own sample tasks.
Grade 1, unplugged. Tape a 5 by 5 grid on the floor and put a toy at one corner. The child lays arrow cards in a row (forward, forward, turn right, forward) and a parent walks the route exactly as written. If the parent ends up in the wrong square, the child finds the card that is wrong. That is writing, executing, reading and altering a sequential program.
Grade 2, in Scratch. Two sprites, a cat and a bus, each get their own script that starts with the green flag. The bus glides across the road while the cat counts to ten. The concurrent part is that both scripts run at the same moment; the math is in how many steps each glide takes and which one arrives first.
A sprite walks around a rectangle that is 60 steps long and 40 steps wide. Written out in full, that is eight blocks: move, turn, move, turn, and so on. With a repeat block set to 2 around “move 60, turn 90, move 40, turn 90”, it is one loop with four blocks inside.
Then the math: add a variable called perimeter, and inside the loop add 60 and 40 to it. The sprite finishes at 200. Ask the child to change the repeat to 3 and predict the new perimeter before pressing the flag. The answer, 300, is wrong for a rectangle, and the child has to say why.
# Grade 4 band: a nested loop draws an array (ours)
rows = 3
columns = 4
dots = 0
for r in range(rows):
line = ""
for c in range(columns):
line = line + "o "
dots = dots + 1
print(line)
print(rows, "rows of", columns, "is", dots, "dots")Output: three rows of o o o o, then 3 rows of 4 is 12 dots. The inner loop runs four times for every one turn of the outer loop, which is multiplication made visible: change rows to 5 and the program prints 20 dots.
# Grade 5 band: is a number in the pattern 5, 9, 13, ...? (ours)
target = 47
term = 5
found = False
while term <= target:
if term == target:
found = True
term = term + 4
if found:
print(target, "is in the pattern")
else:
print(target, "is not in the pattern")Output: 47 is not in the pattern. The terms go 5, 9, 13 and on to 45, then 49, which jumps past 47. The if asks a yes-or-no question on every term, which is the binary logic the Grade 5 notes describe.
# Grade 6 band: two ways to add 1 + 2 + ... + 100 (ours)
steps = 0
total = 0
for n in range(1, 101):
total = total + n
steps = steps + 1
print("Loop:", total, "after", steps, "additions")
last = 100
quick = last * (last + 1) // 2
print("Pairing rule:", quick, "after 1 calculation")Output: Loop: 5050 after 100 additions, then Pairing rule: 5050 after 1 calculation. Pair 1 with 100, 2 with 99, and so on: 50 pairs of 101. Same answer, one calculation instead of a hundred, which is what C3.2 means by the efficiency of the code.
# Grade 7 band: a subprogram with a defined count (ours)
def doublings_past(start, limit):
"""How many times must start double before it is more than limit?"""
count = 0
value = start
while value <= limit:
value = value * 2
count = count + 1
return count
print(doublings_past(3, 100))
print(doublings_past(5, 1000))
print(doublings_past(1, 1))Output: 6, 8 and 1. Starting from 3, five doublings reach 96 and the sixth jumps to 192, past 100; 5 needs eight to pass 1000; 1 needs one. The loop runs until a condition is met, not a fixed number of times, and the function is written once and called three times.
# Grade 8 band: use data to make a decision (ours)
rain_mm = [12, 0, 4, 0, 0, 7, 0] # one week of rain in the school garden
def mean(values):
return sum(values) / len(values)
week_mean = mean(rain_mm)
spread = max(rain_mm) - min(rain_mm)
dry_days = 0
for r in rain_mm:
if r == 0:
dry_days = dry_days + 1
print("Mean:", round(week_mean, 1), "mm a day")
print("Range:", spread, "mm")
print("Dry days:", dry_days)
if dry_days >= 4:
print("Decision: water the garden on dry days")
else:
print("Decision: no extra watering")Output: Mean: 3.3 mm a day, Range: 12 mm, Dry days: 4, then Decision: water the garden on dry days. The mean alone would hide the dry spell; the count of dry days is what drives the decision. Asking which measure to trust is the Grade 8 skill.
C3.2, worked
Every grade’s C3.2 asks children to read code someone else wrote, change it, and explain what the change did. We teach that as a routine with six steps, using the Grade 5 pattern program above. It works the same way on a Scratch script in Grade 2.
target = 45. Predict again, then run: 45 is in the pattern. One change at a time is the only way to know which change did what.From Grade 6, C3.2 adds a second question after every change: did the code get more or less efficient? In the pattern program, there is a faster test. Subtract the first term, 47 minus 5 is 42, and check whether 42 divides evenly by 4. It does not, so 47 is out, with no loop at all.
We ask students to write both versions and count how many times the loop body runs for a target of 4,001. The loop version checks 1,000 terms before reaching it; the remainder test does one division. Children remember the idea far better once they have counted the cost themselves.
Change term <= target to term < target and test with 45. The loop now stops one term too early, after checking 41, so the program says 45 is not in the pattern. Off-by-one errors like this follow students all the way to high school computer science, so we plant them early.
Change the starting value of found to True and every number is suddenly in every pattern. A child who can explain why has understood that a variable remembers whatever it was last told.
Tools by grade
Because the curriculum leaves the tool open, schools and boards differ. This is how we match tools to the grades, based on teaching young children online since 2020. It is our approach, not a ministry rule.
| Grades | Main tool | Why at this age | Ready to move on when |
|---|---|---|---|
| 1 and 2 | Unplugged cards, then ScratchJr or Scratch | Reading is still developing; arrows and blocks carry the logic without typing | The child can fix a wrong route without being told which card is wrong |
| 3 and 4 | Scratch | Repeat blocks and loops inside loops are visible as shapes inside shapes | They choose a loop without prompting when a step repeats |
| 5 and 6 | Scratch, then first Python | Conditionals and variables read naturally as words; typing speed is usually enough | They can predict a short program’s output on paper |
| 7 and 8 | Python | Functions, lists and data need a text language to stay readable | They write a function, call it twice and test an edge case |
Some Ontario classrooms use a block editor, a robot or a microcontroller kit instead of Scratch. The ideas carry over: a loop is a loop. In our first class we ask which tool the class uses and show the child how today’s idea looks in both.
For families comparing the two big options, our article on Scratch vs Python for young learners sets out the trade-offs, and Scratch not working covers the common home-computer problems.
For Grades 1 and 2 we keep sessions short and mix in unplugged tasks, so a lesson is not forty minutes of staring at a screen. Scratch accounts for children can be set up by a parent, and we never ask a child to create an account on their own.
We do not use chatbots or AI code generators with elementary students. The point of C3.1 is that the child writes and executes the code; a program the child did not write teaches them nothing about sequence, loops or conditions.
For parents
Most parents did not learn to code in elementary school, and none of this needs a parent who can. Here is the plan we give families, in the order we suggest it.
How is coding assessed in math this term? Is it part of an Algebra unit or spread across the year? Which tool, and can my child use it at home? What does a strong piece of coding work look like at this grade?
Teachers usually welcome these questions, and the answers tell you whether coding is a weekly habit in the classroom or a two-week unit.
The University of Waterloo’s CEMC runs the Beaver Computing Challenge. It lists the 2026 BCC for North and South America from Monday, November 9, 2026 to Friday, November 20, 2026, with a Grade 5/6 level, and says the questions “only require familiarity with concepts covered in the mathematics curriculum across all Canadian provinces”. CEMC says “all students must participate through their school.”
CEMC’s Problem of the Week is e-mailed to educators for students “from Grades 3 to 12”. Our page on Waterloo contests covers the math contests from Grade 7 up. CEMC runs these on its own; we have no part in them.
Where this section comes from (all read on 22 October 2026): The Ontario Curriculum: Mathematics, Grades 1 to 8 (2020); the Ontario Science and Technology curriculum (2022), Grade 6, A2 and A2.1, through the same content service; CEMC’s Beaver Computing Challenge, Problem of the Week and How contests work pages.
Where your child is now
Our own stages, drawn from teaching young children their first lines of code. Grade level and stage often differ, and that is fine.
| Stage | What it looks like |
|---|---|
| 1. Follower | Builds a script by copying a model, block by block, and is delighted when it runs |
| 2. Fixer | Spots the wrong step in someone else’s sequence and corrects it |
| 3. Predictor | Says what a loop or condition will do before running it, and is right more often than not |
| 4. Designer | Starts from a math question, plans the code, and explains why it works |
Watch for stage 2 at home. A child who says “that block is in the wrong place” has moved past copying, whatever their grade.
Stage 3 is the one that the C3.2 expectations reward, and it grows only with practice at predicting, not with more screen time.
Before you press the green flag, say out loud what you think will happen.
When something goes wrong, change one block, then test. Not three blocks. One.
The catalogue
Each one runs as live video lessons with a teacher your child will see every week, in a group or alone.
ONT / EAR / 01
Counting, shapes and patterns with objects a child can hold.
Open the syllabusONT / EAR / 02
Number bonds and estimation, built as real understanding.
Open the syllabusONT / EAR / 03
From a first Scratch game to apps, at the child’s pace.
Open the syllabusONT / MID / 01
Logic puzzles that train decomposition and patterns.
Open the syllabusONT / MID / 02
Typed code, turtle drawings and small games from age 9.
Open the syllabusONT / MID / 03
Loops and conditions inside games children actually play.
Open the syllabusONT / SR / 01
Pre-algebra, geometry and data before high school.
Open the syllabusONT / SR / 02
Variables and equations, the bridge into Grade 9 math.
Open the syllabusONT / SR / 03
Harder problems for children who finish early.
Open the syllabusHow 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.
Weekdays
Late afternoon, once homework and snacks are done.
Weekends
Saturday or Sunday mornings, often the calmest slot for a six-year-old.
1-on-1
Paced to one child and one grade’s expectations.
Blocks, talk and unplugged moves mixed.
Each program computes something real.
The habit C3.2 is built on.
What we did and one task to try.
Someone who knows your child.
Fifteen to twenty, or one child.
Student work
Older students’ work, to show where a Grade 3 Scratch loop can lead. More on the student labs page.

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

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

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

Web app
A weather forecasting site with live conditions for any location.
Fees
Your first class is free. Families then pay one monthly fee for eight live classes a month; the price box shows the amount with its currency code. Nothing is signed for a term, and a family that wants to stop simply tells us before the next month begins.
Free first class
Free
no card required
Group batch
$100 USD
a month, eight live classes
One to one
$150 USD
a month, eight live classes
What families say
What parents and students wrote on Google, unedited.
★★★★★
"The one step solution for my son. Modern Age Coders make learning coding so simple that kids love it. The teachers explain complex concepts clearly with practical exercises and interactive content."
Ria Mukherjee
Parent
★★★★★
"Modern Age Coders has been a game-changer for me. I struggled to grasp IT concepts and coding before joining, but their classes transformed everything. I can now confidently write complex programs with ease."
Samriddha Mondal
Student
★★★★★
"One of the most wonderful education centres out there. Education is not limited to school syllabus but focuses on skill development."
Vansh Agarwal
Student
★★★★★
"My child Dhairya is really enjoying the Modern Age Coders classes. This is his first online class and he eagerly looks forward to it. I can already see his improvement, and the teachers are very cooperative."
Sonam Oswal
Parent of Dhairya
★★★★★
"Modern Age Coders have wonderful teachers who teach in a clear, easy and practical way. The teacher boosts students' confidence and inspires them to learn without hesitation."
Sonu Goyal
Parent
★★★★★
"I highly recommend this computer coding class! The teachers are incredibly knowledgeable and passionate about coding."
Ritu Kedia
Parent
Questions from Ontario parents
Yes. The 2020 Ontario elementary mathematics curriculum includes coding in Strand C, Algebra, as overall expectation C3, in every grade from 1 to 8. Students are expected to solve problems and create computational representations of mathematical situations using coding concepts and skills.
Grade 1 C3.1 asks students to solve problems and represent math situations by writing and executing code that involves sequential events, meaning instructions carried out in order. C3.2 asks them to read and alter existing code with sequential events and describe how the changes affect the outcome.
Grade 3 C3.1 asks for code that involves sequential, concurrent and repeating events. Repeating events are loops, which the curriculum notes say make code more readable and reduce the number of instructions that need to be written.
Grade 6 C3.1 asks students to write and execute efficient code that involves conditional statements and other control structures. Grade 6 C3.2 adds that students describe how changes to the code affect both the outcomes and the efficiency of the code.
Grade 7 C3.1 adds events influenced by a defined count or a subprogram, which means loops that run until a condition is met and reusable pieces of code. Grade 8 C3.1 focuses on code that analyses data in order to inform and communicate decisions.
No. The notes say coding can combine pseudocode, block-based coding programs and text-based coding programs, and that students can program a character on a screen, a classmate acting out the code, or a device such as a robot. Neither Scratch nor Python is named in the grade documents we read.
No. Each year's expectation includes the earlier ideas, so a Grade 5 child starts with sequence and loops in the first weeks and reaches conditional statements quickly. Children who start later often move fast because their reading and math are stronger.
Yes. Ask your child to predict what their program will do before running it, change one number together and talk about what changed, and ask what the code is calculating. None of that needs any coding knowledge.
EQAO describes its Grade 3 and Grade 6 assessments as covering reading, writing and mathematics. We have not found an EQAO statement on whether coding questions appear, so we do not claim either way. Ask your school how coding is assessed in class.
Not to write their code. In these lessons the child writes every line, in unplugged activities, Scratch and then Python, and we use no chatbots or AI code generators with elementary students. Some of our kids' courses do teach what AI is by having children train small models of their own, with no chatbot accounts.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. We book every lesson in your local clock. Ontario's Eastern zone falls back an hour on 1 November 2026 and springs forward on 14 March 2027, and we reconfirm the lesson time in each of those weeks.
Nothing for the first lesson. From then on a single monthly fee covers eight live lessons, and no term has to be signed. Look at the fees box on this page for today's figure, shown separately for a batch and for a private teacher.
Elsewhere on this site
More for Ontario families with children in elementary school.
Our main page for the province, all ages.
Our pages for families across the provinces.
How our Scratch course runs, week by week.
Math help from Grade 1 through Grade 12.
The case for learning the two side by side.
What changes in a child’s math when they code.
Gauss in Grades 7 and 8, and what follows.
Our lesson structure, written out in full.
Start here
Tell us your child’s grade, the tool their class uses and how they feel about coding so far. The first lesson starts from where they are, with something they can finish and show you.
Want to see the shape of a lesson first? How we teach lays it out, and the Scratch course syllabus lists every project.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
Lessons are live video with teachers based in India, timed for Ontario afternoons and weekend mornings. Nobody visits your home, and WhatsApp is the fastest way to reach us.
A priority demo is a full class of about 45 to 60 minutes. After the class the mentor sends a written skill report and a personal learning roadmap on WhatsApp. If you enrol, the demo fee is adjusted against your first month's fee. Share your demo Order ID with us on WhatsApp and we take it off.
Book a priority demo