What are the best coding classes in Oxfordshire?
Oxfordshire is five districts holding 725,291 people at the 2021 Census. Oxford itself is by far the biggest place, and its built-up area reaches into two neighbouring districts; after it come Banbury, Bicester, Didcot, Abingdon and Witney, then a long list of market towns and villages. Wherever a family lives among them, the offer is the same. A teacher in India works with the learner live over video; the starting level comes from skill, not birthday, for anyone between 6 and 67; and the choice is a group of five to ten or a teacher to themselves, across programming, Python, GCSE computing, AI and maths. The Oxfordshire project starts at Culham, with the fusion records set there. The first lesson costs nothing; from then on group places are USD 100 monthly and private teaching USD 150.
In 2023 the JET machine at Culham, near Abingdon, produced 69 megajoules of fusion energy over five seconds from 0.2 milligrams of fuel, about the weight of a fruit fly. Headlines often turn numbers like that into "megawatts", and the two words are not the same thing. A megajoule is an amount of energy; a megawatt is a rate, energy per second. Confuse them and a calculation can be wrong by any factor you like, with nothing on the page to warn you. This page's project builds a small piece of Python that knows the difference: every number carries its units, and the program refuses outright to add a megajoule to a megawatt. Then it uses JET's published records to show what the right sums say.
Facts last verified 26 September 2026. Teaching is online; no Oxfordshire branch is claimed.
A seven-year-old in Thame building a first game, a Year 6 in Wantage who asks how everything works, a Year 10 in Banbury sitting GCSE Computer Science, and a lab technician in Didcot who wants Python for the data piling up at work. Different routes; one free first lesson for each.

From a first Scratch game to Minecraft and Roblox coding, with kid-safe AI and a taste of Python.
See the syllabus
Real Python for children, where numbers, variables and simple classes first appear.
See the syllabus
Taught to the board your child actually sits, AQA 8525, OCR J277 or Edexcel 1CP2.
See the syllabus
Python for working adults: automation, scraping and applied AI for documents, text and forecasts.
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 syllabusDistrict totals come from the 2021 Census on Nomis. Towns are ONS built-up areas, and our own sum of census output areas shows which councils each one touches.
| District | Usual residents | Main towns |
|---|---|---|
| Oxford | 162,040 | Oxford |
| Cherwell | 161,016 | Banbury, Bicester, Kidlington |
| South Oxfordshire | 149,085 | Didcot in part, Thame, Henley-on-Thames, Wallingford, Chinnor |
| Vale of White Horse | 138,913 | Abingdon-on-Thames, Wantage, Faringdon, Grove |
| West Oxfordshire | 114,237 | Witney, Carterton, Chipping Norton, Eynsham |
The ONS Oxford built-up area had 170,805 residents, more than the 162,040 of Oxford district, because the city's edges run into South Oxfordshire and the Vale of White Horse. Didcot, too, sits across the South Oxfordshire and Vale boundary. Outside that central belt the county is a scatter of market towns, from Banbury in the north to Henley in the south-east, and the distances between them are real: a weekly club in Oxford is not a practical option for most families in Chipping Norton or Faringdon.
| Place | People in 2021 | Place | People in 2021 |
|---|---|---|---|
| Oxford | 170,805 | Faringdon | 8,625 |
| Banbury | 52,045 | Wallingford | 8,455 |
| Bicester | 37,755 | Grove | 7,945 |
| Didcot | 34,600 | Chinnor | 7,265 |
| Abingdon-on-Thames | 33,175 | Chipping Norton | 6,985 |
| Witney | 30,165 | Shrivenham and Watchfield | 5,350 |
| Carterton | 17,950 | Eynsham | 5,325 |
| Kidlington | 14,640 | Sonning Common | 5,265 |
| Wantage | 13,105 | Benson | 5,240 |
| Thame | 12,945 | Henley-on-Thames | 11,780 |
All twenty agree with our own count to within rounding, and none of them crosses the county line, which is unusual; most counties we have checked lose a town or two to a neighbour. Oxfordshire's larger places sit well inside its borders, with only Henley-on-Thames and Sonning Common close to Berkshire and Buckinghamshire.
Oxfordshire County Council's website did not respond when we tried to read its term dates on 26 September 2026, so we print none rather than rely on a copy. Academies can also set their own. Lesson breaks are arranged with each family, around the dates your own school sends home.
JET's published records, a little class that carries units with every number, and the answers that only make sense once the units are right.
The learner writes a class for a quantity: a number plus the powers of kilograms, metres and seconds that describe it. A joule is kilograms times metres squared per second squared; a watt is the same divided by one more second. Dividing a quantity by a time subtracts one from the power of seconds automatically, so energy divided by time comes out as power without anyone remembering to say so. Adding two quantities checks first that their units match, and if they do not, the program stops with an error. That one rule catches a whole family of mistakes before they ever produce a number.
| What we asked | From GOV.UK | Answer, with units checked |
|---|---|---|
| Average power of the 2023 record | 69 megajoules over five seconds | 13.8 megawatts |
| Average power of the 2021 record | 59 megajoules over five seconds | 11.8 megawatts |
| Shortest time the 1997 record could have taken | 21.7 megajoules at a peak of 16.1 MW | At least 1.35 seconds |
| Energy per kilogram of fuel in 2023 | 69 megajoules from 0.2 milligrams | 3.45 x 10 to the 14 joules per kilogram |
| Adding 69 megajoules to 16.1 megawatts | A mistake people make in headlines | Refused: the units do not match |
The third row shows why peak and average are different things. If JET's 1997 run had produced its peak power of 16.1 MW the whole time, 21.7 MJ would have taken 1.35 seconds; since power rises and falls during a pulse, the real run must have been longer. The fourth row is the one that makes people sit up. 3.45 times ten to the fourteen joules per kilogram is a number so large it needs comparison: the same 69 megajoules would run a 3 kilowatt kettle, our example, for about 6.4 hours, and it came from fuel weighing as much as an insect.
There is one more lesson hidden in the sources. GOV.UK's 2023 page gives the 1997 record as 16.1 MW and 21.7 megajoules; a 2022 page from the same agency gives 16 megawatts and 22.5 megajoules. The energy figures differ by 3.7 per cent. We do not know which measurement or definition each page used, so we print both and say where each came from. A program can check units; it cannot tell you which of two official sources to believe, and a careful learner notices when they disagree.
Convert energy and time into power by hand and in Python, and explain in a sentence why "megawatts of energy" is a muddle.
Build the quantity class with multiply, divide and add, and write tests that prove adding joules to watts raises an error.
Extend the class to prefixes and conversions, run JET's records through it, and write up the disagreement between the two sources.
The records, the fuel mass and the pulse facts are UKAEA's, quoted from GOV.UK. The averages, the minimum duration and the energy per kilogram are our own arithmetic, and the kettle is our illustration. None of it is a statement about fusion power stations or energy policy.
The county link, as the UK Atomic Energy Authority describes it on GOV.UK.
| Fact | As published |
|---|---|
| Where | UKAEA's Culham Campus in Oxfordshire |
| First plasma | 25 June 1983; originally designed to run experiments for eight years |
| Pulses | Over 103,000 by June 2023, each typically lasting 40 seconds |
| 2021 record | 59 megajoules over 5 seconds |
| 2023 record | 69 megajoules over five seconds, from 0.2 milligrams of fuel |
A machine designed for eight years that ran for forty is itself a lesson for anyone who writes software: things built to last a little while have a habit of lasting a long time, and the decisions made on day one follow them. JET's engineers kept a machine from 1983 doing new experiments into the 2020s by measuring carefully, recording everything and checking their units. Those are habits a thirteen-year-old can start practising this week.
Modern Age Coders has no connection with UKAEA, EUROfusion or Oxfordshire County Council, and nothing here suggests one. The published figures are theirs; the unit class, the calculations and any mistake in them are ours.
Nearby pages
The Oxford page covers the city, with its own weather project. Berkshire is across the Thames, Buckinghamshire to the east and Warwickshire to the north.
The free lesson decides the first step. Year group is a clue; what the learner can already do is the answer.
Scratch projects with timers, scores and speeds, where children first see that a number means nothing without its unit.
Coding for KidsScratch Coding for KidsPython variables that hold measurements, and simple functions that convert minutes to seconds and grams to kilograms.
Python and AI for KidsMental Maths for KidsObject-oriented Python, tests that must fail when they should, and the GCSE and A level topics built on them.
GCSE Computer SciencePython for TeensPython that processes real data and reports with units and sources attached, so the numbers survive scrutiny.
Python Automation CourseData Analysis CourseOnly if you know that the unit is part of the answer, not decoration.
Language models write fluent sentences about energy, and fluent sentences mix up megajoules and megawatts as easily as people do, because both appear in the same articles. Ask one for JET's record and you may get the right number with the wrong unit, or a power figure computed from an energy figure without dividing by time. The sentence reads well; the physics is off by a factor of five.
An Oxfordshire student who has written a class that refuses to add joules to watts reads such an answer differently. They check the unit, ask over what time, and redo the division. They also notice when two official sources disagree, as the 1997 figures do, and say so instead of silently picking one. Those habits make someone useful in any lab, office or classroom that now runs on AI-written text.
So an Oxfordshire teenager should learn to program in 2026 to be the person who catches the wrong unit in a confident paragraph, whoever or whatever wrote it. The longer argument is in why teenagers should still learn to code in 2026.
Oxfordshire's towns are spread out and its roads are busy at school pick-up. An online lesson skips all of it.
A bedroom in Carterton, a kitchen in Kidlington, a spare room in Wallingford. The teacher shares a screen and the learner types.
Teachers talk about Year 9 options, mock exams and exam boards the way an Oxfordshire classroom does, always in English.
A real lesson with real work and a clear recommendation at the end. You will not be asked for card details.
Your classmates, between five and ten of them, will have reached the same point as you, even if they log in from the far end of the country, which keeps the pace comfortable.
Typically two lessons a week, paused for your own school's breaks, since academies and council schools can differ.
Our teachers work on India time, 4.5 hours ahead of the UK in summer and 5.5 in winter. Every booking is written in UK time.
Why groups follow level, not town
One city and nineteen smaller towns mean few places outside Oxford have enough learners at one stage on one evening. Level-based groups let a Faringdon learner and a Bicester learner share a class.
Identical fees in every Oxfordshire town and in every country except India.
A complete lesson of genuine work, with a recommended level and course.
Roughly eight lessons a month, five to ten learners at one level.
Roughly eight lessons a month, one teacher with one learner.
We quote in US dollars for all families outside India and keep no pound prices. You pay nothing until the free lesson has fixed a course and weekly time, and the pricing page sets out how pausing, missed lessons and moving between group and private places work.
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
An age or school year, plus one thing the learner enjoys, is enough. The first lesson could be a block-coding game, a first Python unit converter, or the megajoule checker on this page.
The county, the fusion project and how lessons work.
The five Oxfordshire districts had 725,291 usual residents at the 2021 Census, from ONS figures on Nomis. Oxford district had 162,040 and West Oxfordshire, the smallest, 114,237.
By ONS built-up area: Oxford 170,805, Banbury 52,045, Bicester 37,755, Didcot 34,600 and Abingdon-on-Thames 33,175. Our table lists twenty Oxfordshire towns above five thousand residents.
Learners build a Python class that carries units with every number, then use JET's published records to compute average power, peak durations and energy per kilogram. The class refuses to add megajoules to megawatts.
UKAEA says JET, at its Culham Campus in Oxfordshire, produced 69 megajoules over five seconds in 2023 from 0.2 milligrams of fuel, after 59 megajoules in 2021. It first made plasma on 25 June 1983.
A megajoule is an amount of energy. A megawatt is a rate, one megajoule every second. JET's 69 megajoules over five seconds is an average of 13.8 megawatts.
There is no building anywhere. Teaching happens over video, which is how a Chinnor teenager and a Chipping Norton teenager end up in one class with no journey for either.
Six to sixty-seven. Block coding for the youngest, typed Python from about ten, GCSE and A level computing for teenagers, and Python, data and AI for adults. The free lesson settles the level.
Yes. Our GCSE course is taught to the specification your child actually sits: AQA 8525, OCR J277 or Edexcel 1CP2.
The first lesson is free. Then USD 100 a month for a group place or USD 150 a month one to one, with no joining fee and no contract.
The county council sets dates for its schools and academies can set their own. We could not reach the council's website on the day we checked, so breaks are arranged around your school's own dates.
The Oxford city page asks whether rain remembers yesterday. Neighbouring counties so far are Berkshire, Buckinghamshire and Warwickshire, and the UK hub links everything else.