What are the best online coding and Python classes in Perth?
For a Perth teenager or adult, a live online class where the teacher reads your Python as you type it and sets projects built on real Western Australian data. Greater Perth counted 2,116,647 people at the 2021 Census, and 77.8% of its occupied homes are separate houses, often a long drive from anywhere else. Online lessons remove the drive. We teach one to one or in small groups at the same level, and the first lesson costs nothing.
Every Python programmer leans on the dictionary, usually without a second thought: give it a key, get the value back almost instantly. Our Perth project opens the lid on how that works. We took the Department of Education's public list of schools in the North and South Metropolitan regions, 747 different names, and stored them three ways. A chained table lets clashing names share a bucket. Linear probing walks to the next free slot. Cuckoo hashing gives every name two possible homes and evicts whoever is sitting there. Learners count the slots each method checks, push the tables until they fail, and come away knowing why a dictionary slows down long before it fills up.
Facts last verified 7 October 2026. Teaching is online; no Perth branch is claimed.
Picked by what you want to do with code, then levelled in the free lesson. Nothing is charged and no card is needed to start.

Python from the first print statement to classes and files, with every exercise run on real data.
See the syllabus
Reading spreadsheets with Python, counting and charting them, and asking whether a result can be trusted.
See the syllabus
A full Python course from zero, including how dictionaries, sets and lists behave under the hood.
See the syllabus
Preparation for the Python Institute entry and associate exams, with each topic implemented in code first.
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 syllabusQuickStats figures for the Greater Perth capital city area from the 2021 Census, next to the Western Australian and national results.
| Measure | Greater Perth | Western Australia | Australia |
|---|---|---|---|
| People | 2,116,647 | Not compared | Not compared |
| Median age | 37 | 38 | 38 |
| Families | 570,121 | Not compared | Not compared |
| Private dwellings | 882,374 | Not compared | Not compared |
| Occupied homes that are separate houses | 605,453, or 77.8% | Not compared | 72.3% |
| Occupied homes that are a flat or apartment | 59,492, or 7.6% | 6.5% | 14.2% |
| Residents aged 15 and over with a bachelor degree or higher | 454,538, or 26.5% | 23.8% | 26.3% |
Only 7.6% of Greater Perth's occupied homes were flats or apartments in 2021, about half the national share of 14.2%.
Professionals were 250,973 of Greater Perth's employed residents, 23.7%, ahead of the Western Australian figure of 22.0%.
Greater Perth counted 123,315 residents aged 15 to 19 at the Census, 5.8% of its people.
One habit we keep when quoting a census. Each cell of a QuickStats table is lightly adjusted for privacy, so a column's pieces may not add up to its printed total. This page repeats the totals and percentages the bureau publishes and never builds a new total by adding pieces together.
The 747 distinct school names in the North and South Metropolitan regions of the Department of Education list, stored in three kinds of hash table.
| Method and how full the table is | Average slots checked | Worst case |
|---|---|---|
| Chaining, 747 buckets (as many buckets as names) | 1.459 | A bucket holding 4 names |
| Linear probing, half full | 1.431 | 11 slots |
| Linear probing, three quarters full | 2.134 | 30 slots |
| Linear probing, 90% full | 3.635 | 65 slots |
| Cuckoo hashing, any load that builds | At most 2 | 2 slots, always |
Each name is hashed to one of 747 buckets and clashing names share a short list. The longest list held 4 names, and 265 buckets were left empty.
If a slot is taken, step to the next one. Fine when the table is half empty; at 90% full one lookup needed 65 steps.
Every name has two possible slots in two tables. A newcomer evicts the occupant, who moves to its other slot. Lookups never check more than two places.
| How full both tables are together | Failed builds | Longest chain of evictions |
|---|---|---|
| 40% | 1 of 200 | 27 |
| 45% | 4 of 200 | 41 |
| 49% | 21 of 200 | 57 |
| 52% | 52 of 200 | 69 |
| 55% | 103 of 200 | 81 |
Cuckoo hashing makes reading cheap and writing risky. Past roughly half full, a growing share of builds ran into an endless loop of evictions and had to start again with new hash functions: 103 of 200 attempts failed at 55%. Linear probing never fails outright but slows sharply as it fills. Neither is better in every case, which is why measuring your own data beats choosing by name.
The figures are ours. The hash function is BLAKE2b with a different salt for each attempt, chosen so the results can be repeated; Python's own hashing of strings changes from one run to the next. The school list changes as schools open and close, so a later download will give slightly different counts. Only the school names are used, with no enrolment or results data.
The same ideas sit under every dictionary, set, cache and database index a programmer will use.
| Idea from the project | Where it shows up in Python | The habit it builds |
|---|---|---|
| Load factor | Dictionaries and sets grow themselves before they fill | Expect resizing and do not fear it |
| Collisions | Two keys can share a hash slot | Never assume a hash is unique |
| Worst case versus average | Average lookups are quick; unlucky ones are not | Look at the worst case, not just the mean |
| Deterministic hashing | String hashes change between runs unless fixed | Fix a seed when you need repeatable results |
| Measure, do not guess | Count probes with a small wrapper | Claims about speed come with numbers |
The Python documentation answers the question directly: "CPython’s dictionaries are implemented as resizable hash tables." Learners who have built one by hand read that sentence differently. They know a resizable table exists because a full one slows down, and they know why their dictionary still feels instant with thousands of keys.
Write each hash table in plain Python, load the real Perth school names, and graph probe counts as the table fills.
Compare the three methods on larger lists and explain the results in terms of load factor and clustering.
Use dictionaries and sets with confidence in scripts at work, and know when a lookup table will beat repeated searching.
Modern Age Coders is independent of the Western Australian Department of Education, the statistics bureau and the Python Software Foundation. The census counts are published by the bureau; the probe counts and failed builds on this page are our own calculations from the department's public school list.
Two facts that shape when a Perth learner can study with us.
Perth runs on Australian Western Standard Time, eight hours ahead of UTC, and does not use daylight saving, according to the IANA time zone database.
The same database records several trial periods of daylight saving in Western Australia; the last one ended in March 2009.
The Department of Education lists four terms for 2027, starting on Monday 1 February and ending on Thursday 16 December.
Why the time gap is good news
Perth is only two and a half hours ahead of India time, the smallest gap of any Australian capital. A 6pm lesson in Perth is 3:30pm for our teachers, comfortably inside their working day, and the gap stays the same all year.
Treat the ages as signposts only. The trial lesson sets the true starting point.
Variables, loops and lists in Python, ending with a script that reads a file and counts what is in it.
Python for TeensMaths Through CodingHashing by hand, collisions and load factor, and when a dictionary beats a list by thousands of steps.
Problem Solving for TeensData Science for TeensHash tables, trees and heaps compared on large data, with timing and counting built into every experiment.
Data Structures & Algorithms CoursePython MasterclassAutomating reports, cleaning spreadsheets and building small web tools that hold up under real use.
Python Automation CoursePython Web Development with Django and Flask CourseBecause generated code leans on dictionaries constantly, and only someone who understands them can tell when that choice is wrong.
Ask an assistant to remove duplicates or count words and the answer will almost always reach for a dictionary or a set, and usually that is right. Sometimes it is not: a generated script may rebuild a dictionary inside a loop, use a list where a set would be thousands of times faster, or rely on dictionary order in a way that breaks with older data. The code runs, so nobody notices until a file is ten times bigger than the test.
Learners who have pushed a hash table to 90% full and watched a lookup take 65 steps read generated code with sharper eyes. They spot the list scan that should be a set lookup, the table rebuilt on every pass and the assumption that keys never clash. That reading skill is what turns an assistant from a crutch into a useful colleague.
Machines can produce Python quickly; the value in 2026 is knowing which structure the problem needs and checking that the machine picked it, and a Perth learner who has built three hash tables can do exactly that. The longer argument is in should teenagers still learn to code in 2026.
Greater Perth stretches a long way along the coast, and an online lesson reaches the northern suburbs, the hills and the south in exactly the same way.
Learners in Joondalup, Midland or Rockingham join the same live lesson from home, with nothing to book but the time.
Teachers use the same year levels as Perth schools and plan around the four WA school terms. Every lesson is in English.
Bring a question or a project idea; leave with a working piece of code and a recommended course and time. No payment details are taken.
Groups of fifteen to twenty at the same stage, drawn from Perth and other places in a similar time zone, so evening slots fill easily.
Around eight a month in a regular slot, with breaks for school holidays and exams arranged with the teacher in advance.
Perth is 2 hours 30 minutes ahead of our teachers throughout the year, so a 4:30pm Perth lesson is at 2pm in India.
No clock change to plan for
Western Australia does not use daylight saving, and neither does India, so a Perth lesson time never shifts during the year. Times are still always confirmed in Perth time.
Three numbers, set out plainly.
One whole lesson at no cost, after which you get a level, a suggested course and a regular time.
A month of lessons, typically eight, alongside fifteen to twenty learners at your level.
About eight lessons each month in the same pattern, with one teacher for one learner.
Every family outside India pays in US dollars at a single rate, so Fremantle and Ellenbrook see the same bill and there is no Perth price list. Nothing is charged until the trial is done and a course and time are agreed; the pricing page covers holidays, missed lessons and switching between group and private.
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
We set the first task to suit: a first Python loop for a Year 8 student, a dictionary challenge for someone in Year 11, or the full school-name hashing project for an adult.
Questions Perth learners and parents ask us before starting.
Greater Perth had 2,116,647 residents at the 2021 Census, with a median age of 37, a year younger than both Western Australia and Australia.
A hash table stores items by turning each key into a number, called a hash, and using that number to pick a slot. Looking up a key means hashing it again and checking that slot, so most lookups take a step or two however many items are stored.
Cuckoo hashing gives every key two possible slots in two separate tables. When a new key lands on an occupied slot it pushes the old key out, and the old key moves to its other slot. Lookups only ever check two places, but inserts can fail if the tables get too full.
Learners store the 747 distinct school names from the Department of Education list for the North and South Metropolitan regions in three kinds of hash table, then count how many slots each lookup checks and how often each table fails as it fills.
No. Beginners start with simple Python scripts, and the free lesson places everyone at the right level. Learners who already code move straight on to data structures and projects.
After school, in the evening or at the weekend, chosen during the trial and always given in Perth time. Perth is two and a half hours ahead of India time all year.
Yes. We teach from age 6, starting younger learners with Scratch and visual projects. This page is written for teenagers and adults, but the free lesson works for any age.
No, and none is claimed. All teaching is live and online, with no premises anywhere in Australia. A learner needs a laptop or desktop, working sound and a reliable connection, and the contact number shown is an Indian one.
The first lesson is free. After that a group place is USD 100 a month for two live lessons a week, around eight a month, with fifteen to twenty learners, or USD 150 a month for the same pattern one to one. Course, format and time are agreed before anything is paid.
Fifteen to twenty learners, matched on level, pace and what they want to build rather than on age or suburb. If no suitable group meets at a workable time, one-to-one lessons are offered instead.
Younger Western Australian students working towards the GATE program can read WA GATE and ASET maths practice. Learners moving on from block coding should see the step from Scratch to Python, and anyone unsure which language to start with can compare them in coding languages for Australian learners. All our Australian pages are listed on the Australia coding page.