What are the best coding classes in Moray?
Moray had about 93,400 residents in roughly 43,100 households at the 2022 census, spread thinly at 41.7 people per square kilometre. Elgin is the main town, with Forres, Buckie and Lossiemouth next and smaller places such as Keith, Fochabers and Dufftown. Our teachers in India give every lesson live over video, and a free first session places each learner, from P1 to S6 or beyond school. Anyone from 6 to 67 can study coding, Python or maths here, either one-to-one or in a group of five to ten. The Moray project begins with a lighthouse inscription near Lossiemouth. Following the free lesson, groups cost USD 100 a month and one-to-one lessons USD 150 a month.
Near Lossiemouth, Historic Environment Scotland lists the Covesea Skerries Lighthouse at Category A: a tall circular tower by the engineer Alan Stevenson, dated 1844, with Egyptian-style keepers' cottages. The listing transcribes the inscription over the entrance, which ends with a date in Roman numerals, and the characters it gives are MDLCC XL1V. That is not a standard Roman numeral, and it contains a digit 1 where a letter I would be expected. We have not seen the stone, so we cannot say what is carved there. But the transcription makes a perfect test for a program. Feed it to a careless parser and it cheerfully prints a date almost 150 years out. This page's project builds a Roman numeral reader in Python that knows when to refuse.
Facts last verified 26 September 2026. Teaching is online; no Moray branch is claimed.
A six-year-old in Buckie, a P7 in Forres who likes puzzles, an S3 in Elgin ready for proper Python, and an adult in Lossiemouth cleaning up data at work. These are their usual starting courses, each after a free lesson.

Block coding with number puzzles, codes and games that check the player's answers.
See the syllabus
A first typed language, including programs that read and check what people type.
See the syllabus
Complete Python for teenagers, with strings, validation and testing done properly.
See the syllabus
Python from zero for adults, including cleaning and checking messy real-world data.
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 syllabusTotals for the council come from the rounded first results of the 2022 census, published by National Records of Scotland. Town sizes are NRS estimates for mid-2020.
| Locality | Residents | Locality | Residents |
|---|---|---|---|
| Elgin | 25,040 | Burghead | 1,840 |
| Forres | 9,900 | Lhanbryde | 1,830 |
| Buckie | 9,010 | Fochabers | 1,770 |
| Lossiemouth | 6,840 | Hopeman | 1,710 |
| Keith | 4,610 | Dufftown | 1,590 |
At 41.7 residents per square kilometre, Moray is more thinly settled than Scotland overall (69.8). Adding the census age bands ourselves, we find 15.5 per cent of Moray's people are under 15, close to the Scottish 15.3, and 22.9 per cent are 65 or older, above Scotland's 20.1. Moray Council sets its own school terms; we have not read them and fit breaks around what each family tells us.
See Aberdeenshire and the Highlands. For exam support: National 5 Computing Science and Higher Computing Science.
Seven letters, a handful of rules, and a date that should not come out as 1695.
Roman numerals use seven letters, I, V, X, L, C, D and M, worth 1, 5, 10, 50, 100, 500 and 1,000. Most of the time you add them up, but a smaller value placed before a larger one is subtracted, as in IV for 4. The learner's first program does exactly that and nothing more: it skips any character it does not recognise, then walks along the letters, adding or subtracting. It is short, and it is dangerously polite, because it never refuses an input.
| Input | Naive parser says | Strict validator says |
|---|---|---|
| MDLCC XL1V (as transcribed) | 1695 | Not a valid numeral |
| MDLCCXLIV (1 read as I) | 1694 | Not a valid numeral |
| MDCCCXLIV (1844 written the standard way) | 1844 | Valid |
| MDCCCXLIIII (four I's, as on some clock faces) | 1844 | Not standard |
| IM | 999 | Not a valid numeral |
| VX | 5 | Not a valid numeral |
The naive parser turns the transcription into 1695, or 1694 if the 1 is read as an I, even though the listing itself says the lighthouse is dated 1844. The problem is the L before the C, which it treats as "subtract 50". Standard Roman numerals never put L before C, and a strict validator knows that. The learner writes one as a pattern: up to three M's, then a hundreds part, a tens part and a units part, each from a short list of allowed forms. Anything else is rejected with a clear message instead of a confident wrong number.
Then the checks. Converting every number from 1 to 3,999 into Roman numerals and back gives zero mismatches, so the two directions agree. Of all 19,607 possible strings of one to five Roman letters, only 735 are valid numerals, fewer than 4 per cent, yet the naive parser gives a number for every one of them. It even reads IV, IIII and the nonsense IVX as 4. The longest standard numeral below 4,000 is 3,888, MMMDCCCLXXXVIII, fifteen letters.
Build a Scratch quiz that converts numbers to Roman numerals and back, and find inputs that trick it.
Write the add-and-subtract parser in Python, then list five inputs it gets wrong and explain why.
Write the strict validator as a regular expression, test every number to 3,999, and count how many random strings pass.
We are using the listing's typed transcription as test data. We have not seen the carved stone, and the characters on it may well differ from the transcription. Nothing here says the inscription itself is wrong.
What Historic Environment Scotland records about it.
| Listing detail | What it records |
|---|---|
| Category | A, listed in 1971 |
| Engineer and date | Alan Stevenson, engineer; James Smith, contractor; dated 1844 |
| Tower | Tall circular 7-storey lighthouse tower |
| Cottages | A pair of single-storey Egyptian-style keepers' cottages |
| Inscription | Names the engineer, contractor and superintendent William Middlemiss, ending MDLCC XL1V as transcribed |
| Today | The light is automated; the original light is in Lossiemouth Fisheries Museum |
Every form on the internet faces the same question as the Roman numeral parser: accept what was typed, or refuse it with a helpful message. Dates, postcodes, phone numbers and prices all arrive messy, and code that silently guesses creates quiet errors that surface months later. A Moray pupil who has watched a parser invent the date 1695 will write validation first from now on.
We have no link with Historic Environment Scotland or Moray Council. The listing and its transcription are theirs; the parsers, tests and any mistakes are ours.
Stages are guides only; the free lesson settles the starting point.
Block coding with number games, secret codes and answer checking.
Coding for KidsScratch Coding for KidsTyped Python that reads what users type and handles mistakes.
Python and AI for KidsMaths Through CodingParsing, patterns and systematic testing beside National 5, Higher and Advanced Higher Computing Science.
Python for TeensProblem Solving for TeensPython for adults who need to check and tidy real data.
Python MasterclassData Analysis CourseAlways producing an answer is not the same as being right.
Give a chatbot MDLCC XL1V and ask for the year. Some answers will correct it to 1844 without saying so, others will compute something else, and few will explain that the string is not a valid numeral. Either way the uncertainty disappears from view.
A Moray learner who has written a strict validator knows that refusing bad input, and saying why, is part of a correct program. It is the same judgement needed to check anything an AI returns.
That is why a Moray teenager should still learn to code in 2026: to build programs that know the difference between an answer and a guess. The longer argument is in why teenagers should still learn to code in 2026.
With towns spread across the county, online classes save the evening journey.
Learners write every line themselves while the teacher follows the shared screen.
We work in P6, S3, National 5, Higher and Advanced Higher, as Moray schools do, in English.
A real lesson with no charge, followed by a straight recommendation.
Five to ten learners at one stage, often from several countries.
Twice a week in term; nothing during school holidays.
Your slot keeps its UK time when the clocks change; teachers in India time adapt instead.
Why not group by town?
Five learners at one stage, free at the same hour, rarely live in one Moray town. Grouping by stage across a wider pool finds a real class for a pupil in Hopeman or Lhanbryde.
Buckie or Burghead, the fee is identical, and the same everywhere we teach outside India.
A complete free lesson, then a clear suggestion.
About eight lessons a month with five to ten learners at one stage.
About eight lessons a month with a teacher of your own.
Our prices are in US dollars, and we have no sterling price list. Charges begin only once the free lesson has fixed a course and a weekly time; the pricing page details holidays, missed lessons and moving between formats.
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
Say who is learning, their age or S stage, and a favourite interest. The first lesson could be a Scratch game, a Python program, or the Roman numeral reader on this page.
Moray in figures, the lighthouse project and the practicalities.
The 2022 census counted about 93,400 residents in roughly 43,100 households, rounded by NRS to the nearest hundred.
NRS mid-2020 estimates give Elgin 25,040, Forres 9,900, Buckie 9,010, Lossiemouth 6,840 and Keith 4,610.
Learners write a Roman numeral parser in Python, test it on the listing's transcription MDLCC XL1V, see a naive parser output 1695, and build a strict validator that rejects it.
In the standard form, MDCCCXLIV: M for 1,000, DCCC for 800, XL for 40 and IV for 4.
Historic Environment Scotland says it is dated 1844, by the engineer Alan Stevenson, and lists it at Category A.
Lessons are online, so learners join from home anywhere in Moray.
Yes, alongside National 5 Computing Science and maths at both levels. We teach understanding and make no promises about grades.
Ages 6 to 67. Young children start with blocks, secondary pupils with Python and exam work, and adults wherever they need to.
The first lesson is free; afterwards USD 100 a month for a group or USD 150 a month one-to-one.
No, we pause. Tell us your school's holiday dates and we work around them.
Try Aberdeenshire, the Highlands and Inverness, or every council on the Scotland page. The UK hub covers the rest.