Why do online Python classes suit learners across the Yarra Ranges?
Because the Shire is large and spread out, and a live online class reaches Healesville and Belgrave as easily as Lilydale. A teacher codes alongside each learner, from Scratch at six to Python with real data. The Shire of Yarra Ranges counted 156,068 residents in the 2021 Census.
Python programs often save their data as JSON so another program, or tomorrow's run, can read it. JSON looks like a Python dictionary, but it is not one. We saved seven years of entries for the Shire's five railway stations and read them straight back. Every single lookup by year failed.
Facts last verified 11 October 2026. Teaching is online; no Yarra Ranges branch is claimed.
The JSON project needs dictionaries, files and a careful eye for types. These courses build them; the free trial lesson sets the starting level.

Core Python, including dictionaries, files and the json module.
See the syllabus
From first scripts to well-structured programs that store and share data.
See the syllabus
Web apps that send and receive JSON every day.
See the syllabus
Friendly first Python, with saving and loading small game files.
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 syllabusHeadline 2021 Census QuickStats for the Shire of Yarra Ranges (ABS code LGA27450), with Victoria for comparison.
| What was counted | Yarra Ranges |
|---|---|
| Residents | 156,068 |
| Median age | 40 |
| Families | 43,981 |
| Private dwellings | 61,491 |
| People per household | 2.7 |
| Measure | Shire | Victorian total |
|---|---|---|
| Separate houses | 93.7% (52,325) | 73.4% |
| Workers who drove to work | 55.3% (44,209) | 49.9% |
| Workers who took the train to work | 0.7% (559) | 1.6% |
| Adults with a bachelor degree or higher | 21.4% (27,208) | 29.2% |
| Workers employed as professionals | 19.6% (15,672) | 25.0% |
The Census counted 9,765 residents aged 5 to 9 and 9,963 aged 10 to 14.
Under the August 2021 lockdown, 22.5% of employed residents, 17,963 people, worked from home.
The ABS boundary covers about 2,468 square kilometres, far more than any inner Melbourne council.
The bureau adds small random changes to Census cells for privacy, so we show every number as published and never add published numbers together.
We built a dictionary of FY18-19 to FY24-25 entries for Belgrave, Tecoma, Upwey, Lilydale and Mooroolbark, keyed by station and then by year as a whole number (2019 to 2025, our label for each financial year). That is 35 cells. Then we saved it with json.dumps and read it back with json.loads.
| What we saved | What came back | Effect |
|---|---|---|
| Year keys as integers | Year keys as strings | All 35 lookups such as data['Lilydale'][2025] fail |
| A ratio as a float | The same float | Exact match, no change |
| A ratio of NaN | The text NaN | Python reads it, but strict JSON readers reject it |
| The whole table | 616 characters | Small enough to read by eye |
| Python value | Error message |
|---|---|
| A set of station names | Object of type set is not JSON serializable |
| A tuple used as a key | keys must be str, int, float, bool or None, not tuple |
| A date | Object of type date is not JSON serializable |
The format only allows string keys, so Python quietly turns 2025 into "2025" when saving and does not turn it back.
Sets, tuples and dates fail immediately, which is good: the programmer must choose how to store them.
After loading, rebuild integer keys deliberately, or store years as values in a list of records instead of as keys.
Lilydale recorded 701,900 entries in FY18-19 and 512,300 in FY24-25; Mooroolbark went from 722,150 to 569,250, 78.8% of the earlier figure; little Tecoma from 75,650 to 47,250. Those figures survive JSON perfectly. Only the shape of the dictionary around them changes, which is why the bug is easy to miss.
Entry figures are the Department of Transport and Planning's, rounded to 50. Labelling FY24-25 as 2025 is our convention. The round trip, the failed lookups and the error messages are our own measurement, using Python's standard json module.
Files and APIs carry JSON everywhere. These habits keep a program's data intact on the way out and back in.
| Habit | In code | In the station project |
|---|---|---|
| Round-trip test | Assert loads(dumps(x)) == x | Fails at once on the integer keys |
| Prefer records | A list of small dictionaries | {"station": "Upwey", "year": 2025, "entries": 97850} |
| Convert explicitly | int(key) after loading | Year keys rebuilt in one line |
| Avoid NaN in files | Use null for missing | allow_nan=False makes Python refuse it |
Save a Scratch-style game score to a file, reload it and check it is still a number.
Run the round trip, find every failing lookup and fix the structure.
Write round-trip tests for the JSON files that work scripts already produce.
Upwey shows why the structure matters: 157,050 entries in FY18-19 and 97,850 in FY24-25, 62.3% of the earlier figure. A dashboard that silently fails to find 2025 would show nothing at all for that change.
Background from rail entry statistics, the state register of schools and the 2027 school calendar.
Our boundary check places Belgrave, Tecoma and Upwey on one line and Lilydale and Mooroolbark on another; no other metropolitan station falls inside the boundary.
The 2025 list gives 78 schools a Yarra Ranges address: 56 primary, 10 secondary, 8 combined and 4 special. Healesville High School, Upwey High School and Lilydale Heights College are government secondaries.
From the hills to the valley, government students return for Term 1 of 2027 on Thursday 28 January and leave for holidays on Thursday 25 March.
Shire-wide figures
The Census numbers on this page cover the whole Shire of Yarra Ranges, including the hills, the valley towns and the suburbs near Lilydale; individual towns have their own QuickStats.
Bands overlap; the free trial decides the real starting point.
Games with lists and saved high scores, built step by step.
Scratch Coding for KidsCoding for KidsVariables, lists, dictionaries and the first files.
Python and AI for KidsMaths Through CodingJSON, CSV and public datasets handled carefully.
Python for TeensData Science for TeensWeb apps, APIs and scripts that exchange JSON reliably.
Python MasterclassPython Web Development with Django and Flask CourseBecause AI-written code usually saves the data correctly and then reads it back with the wrong key type, and nothing complains until a lookup returns nothing.
Ask an assistant to "cache the station data in a JSON file" and you will get a neat json.dump and json.load. The program runs. Later, data['Upwey'][2025] raises a KeyError, or worse, a .get with a default hides it and a chart shows zero. Spotting why requires knowing that JSON keys are always text.
Learners who have seen all 35 lookups fail add a round-trip test to anything that touches a file. That small habit catches the same mistake in AI-generated code before it reaches anyone else.
The Yarra Ranges learner who tests the round trip is the one whose saved data can be trusted. The longer argument is in why teenagers should still learn to code in 2026.
Lessons happen on screen, so a learner in Warburton joins the same way as one in Mooroolbark.
Teacher and learner edit the same file and run it together.
Plans follow state school terms and stop for the holidays.
The free trial teaches real content and ends with a recommendation.
Learners matched by level and pace, sometimes from other states.
Fixed times, around eight lessons a month, with breaks planned.
A 5pm Yarra Ranges lesson in daylight saving starts at 11:30am India time, and at 12:30pm there after April.
Daylight saving
Melbourne clocks go forward on Sunday 4 October 2026 and back on Sunday 4 April 2027; India keeps one time all year. Lesson times are set in Melbourne time.
Three simple prices.
The first lesson is free and closes with an honest recommendation.
A month of group lessons, usually eight, with fifteen to twenty learners at a matched level.
About eight lessons a month with one teacher.
Payments from outside India are made in US dollars. Nothing is billed before the trial lesson, and only after a course and a weekly slot are chosen; for school holidays, missed lessons or a change of format, see the pricing page.
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
Give us the age of the learner and a favourite subject or pastime. Older learners commonly begin by writing the station table to a JSON file and loading it again; younger ones often start with a Scratch game that remembers its top score.
Questions families and adults in the Yarra Ranges often ask.
The 2021 Census QuickStats record 156,068 residents in the Shire of Yarra Ranges, with a median age of 40 and 43,981 families.
JSON is a plain-text format for storing and sending data, used by files, websites and APIs. It has strings, numbers, true, false, null, lists and objects with text keys.
JSON only allows text keys, so Python writes the integer 2025 as "2025". When the file is loaded, the key stays a string, and lookups using the integer fail.
After saving 35 station-year figures and reading them back, all 35 integer year lookups failed. Sets, tuple keys and dates refused to save, and NaN saved as text that strict JSON readers reject.
Most start with Scratch from six and move to Python around nine to twelve, depending on reading and typing.
No. Copilot Studio lessons are private only; group learners in the Yarra Ranges code their agents in Python.
No. Every lesson is live online, we have no premises in Australia, and the phone number we list is Indian.
The first lesson is free. Group lessons then cost USD 100 a month for two live lessons a week, about eight a month, with fifteen to twenty learners, or USD 150 a month one to one. Course, format and time are agreed before any payment.
Fifteen to twenty learners, matched by level, pace and goal. When no group suits the learner's schedule, one-to-one lessons are offered.
A steady home connection that handles a video call is enough; the code runs in a browser or on the learner's own computer.
Closer to the city, Box Hill and Doncaster have their own pages. Hills families can also browse all of Melbourne or Victoria as a whole.