POB / START / 01
Python and AI for Kids
Turtle drawings, games and small AI, 9 to 12.
Open the syllabusOberhausen · Live online Python · From age 10
Most people who try to learn Python alone in an evening stop at the same place: they can follow an example, but they cannot change it to fit their own problem. Our live classes for Oberhausen learners are built around that step. A mentor watches you type, in English, and keeps you working until a piece of code is truly yours. On this page we show how the online part works, where Python meets school Informatik in North Rhine-Westphalia, and one small program that reads five of the city's own files.
Live classes since 2020 · over 10,000 students taught · Google rating 4.9 from about 547 reviews
At a glance
Online Python classes in Oberhausen at Modern Age Coders are live lessons, held on video and taught in English, in which a mentor follows the learner's screen and helps them write their own working code. Learners from 10, teenagers and adults each have their own course, from first scripts to reusable functions and real data files, in a batch of fifteen to twenty or one to one.
Pick a course
One course that uses Python to make school maths visible, one full Python course for teenagers, and one for adults who want Python to do their routine work.

POB / 01
Ages 10 to 15, nine months. Fractions, angles and graphs explored in Python, so a pupil practises both subjects in one hour.
Open the syllabus →
POB / 02
Ages 13 to 18, ten to twelve months. A full course from print() to classes, files and testing, paced for school terms.
Open the syllabus →
POB / 03
Adults, ten to twelve months, no experience needed. Scripts that sort files, clean spreadsheets and fetch data, then applied AI.
Open the syllabus →Live online, explained
You need a computer, a headset and a link. Everything else happens in the class.
Your own editor, the mentor's face in a corner, and whichever screen is being shared. In a group, other learners' screens appear when they share to ask a question, and those moments teach the whole group, because everyone watches a real mistake being fixed.
Clear English at a calm pace. The mentor reads code aloud, line by line, and asks you to do the same. Reading code aloud is one of the quickest ways to find a bug, and it builds the vocabulary of programming at the same time.
Watch for an hour. A class where the learner only watches is a video with extra steps. In our classes the learner's hands are on the keyboard for most of the hour, and the mentor talks less than you might expect.
The mentors are in India and the lessons are in English only; we do not teach in German. Oberhausen families sometimes worry about that and then find it matters less than expected, because Python itself is written in English words and everything said is also shown on screen. Mentors slow down, repeat, and adjust to each learner's accent within the first few classes.
NRW schools
Every pupil in North Rhine-Westphalia now has Informatik in grades 5 and 6. After that it depends on the school type and on what the pupil chooses.
| School type | Grades | What can be offered |
|---|---|---|
| All general school types | 5 and 6 | Pflichtfach Informatik for every pupil |
| Hauptschule | 7 to 10 | Informatik as a Wahlpflicht subject, up to eight weekly hours in total |
| Realschule | 7 to 10 | Wahlpflicht Informatik, usually three hours a week throughout |
| Gesamtschule and Sekundarschule | 7 to 10 | Wahlpflicht Informatik, usually three hours a week |
| Gymnasium (nine years) | 9 and 10 | Informatik offered in the Wahlpflicht area, six weekly hours in total, alone or combined with another subject |
| Oberstufe | EF, Q1, Q2 | Grundkurs three hours; Leistungskurs five hours in the Qualifikationsphase |
From the North Rhine-Westphalia entry of the Gesellschaft für Informatik's Informatik-Monitor 2026/27, read on 2 November 2026. EF is the Einführungsphase, Q1 and Q2 the two years of the Qualifikationsphase.
So an Oberhausen pupil meets Informatik early, but after grade 6 it becomes a choice, and at a Realschule or Gesamtschule the elective competes with other subjects for the same hours. Pupils who do not choose it can go four years without another computing lesson. Others choose it and want more time at the keyboard than three hours a week shared with a full class.
That is the gap our Python classes fill. We teach beside the school, not instead of it, and we award no grades: the school's own Informatik course is what counts on the report. Our North Rhine-Westphalia page has the Land picture in full, including the central Informatik Abitur.
The steps
Each step has one idea at its centre. The step most self-taught learners skip is the fourth.
| Step | Central idea | The learner can answer |
|---|---|---|
| 1 | Values and variables | What is stored, and under which name? |
| 2 | Decisions and repetition | When does this line run, and how often? |
| 3 | Lists and dictionaries | Where do I keep many values, and how do I find one? |
| 4 | Functions | How do I write it once and use it everywhere? |
| 5 | Files | How do I read data someone else made? |
| 6 | Errors | What does this traceback tell me, and where do I look? |
| 7 | Projects | What problem of my own can I solve with all of this? |
Our own outline. A ten year old in Maths Through Coding reaches step 4 with graphs and shapes; a teenager or adult on a full Python course reaches step 7 with their own project.
Functions are where Python stops being a list of instructions and becomes a tool. Before functions, a learner copies code and changes a word; after them, the learner writes one piece of code that works for many inputs, and spends the saved time on harder questions. The Oberhausen project below is a function meeting five files, and the fifth file is where the real learning happens.
A real Oberhausen project
The city of Oberhausen publishes how many people visited its high-ropes course, its swimming pool, the LVR industrial museum, the short film festival and the theatre. One function should be able to read them all. Should.
The Stadt Oberhausen publishes these visitor figures through Open.NRW under the Datenlizenz Deutschland Namensnennung 2.0, which allows any reuse, including commercial, with the source named. The files were last updated on 30 September 2026; we downloaded the five CSV files on 3 November 2026 and gave them short names, such as hallenbad.csv and theater.csv.
Each file has one row per year and a column called "Besucher*innen insgesamt", total visitors. The files cover different spans: the high-ropes course since 2006, the swimming pool since 2008, the museum from 2000 to 2021, the festival since 2000 and the theatre since the 2004/2005 season.
Write one function, visitors(path), that opens any of the files and returns a dictionary from year to total. Then loop over the five files and print each one's peak and its latest figure.
A beginner would copy the reading code five times. That works until something changes, and then it must be fixed five times. A function is written once and tested on every file.
import csv
def visitors(path):
counts = {}
with open(path, encoding="utf-8") as f:
for row in csv.DictReader(f, delimiter=";"):
counts[row["Jahr"]] = int(row["Besucher*innen insgesamt"])
return counts
FILES = ["hochseilgarten.csv", "industriemuseum.csv", "hallenbad.csv",
"kurzfilmtage.csv", "theater.csv"]
for path in FILES:
counts = visitors(path)
peak = max(counts, key=counts.get)
last = list(counts)[-1]
print(path, "peak", peak, counts[peak], "latest", last, counts[last])It prints four lines: hochseilgarten.csv peak 2009 48040 latest 2025 7962, industriemuseum.csv peak 2010 60336 latest 2021 7842, hallenbad.csv peak 2009 181285 latest 2025 162926, kurzfilmtage.csv peak 2016 20000 latest 2025 13809, and then stops with KeyError: 'Jahr'.
Four files work; the theatre breaks the program. The traceback's last line, KeyError: 'Jahr', says the dictionary for a row has no key called Jahr. Open theater.csv and the reason is in the first line: the theatre counts seasons, not years, and its first column is called "Spielzeit Theater Oberhausen", with values such as 2016/2017.
There are two ways to fix it. The tempting one is to copy the function, call the copy theatre_visitors and change one word. The better one is to notice what all five files share: the period, whatever its name, is always the first column. So the function should ask the file for its first column name instead of assuming it.
import csv
def visitors(path):
counts = {}
with open(path, encoding="utf-8") as f:
reader = csv.DictReader(f, delimiter=";")
period = reader.fieldnames[0]
for row in reader:
counts[row[period]] = int(row["Besucher*innen insgesamt"])
return counts
FILES = ["hochseilgarten.csv", "industriemuseum.csv", "hallenbad.csv",
"kurzfilmtage.csv", "theater.csv"]
for path in FILES:
counts = visitors(path)
peak = max(counts, key=counts.get)
last = list(counts)[-1]
print(path, "peak", peak, counts[peak], "latest", last, counts[last])It prints the same four lines and then a fifth: theater.csv peak 2016/2017 65802 latest 2024/2025 44071.
| File | Peak period | Peak visitors | Latest period | Latest visitors |
|---|---|---|---|---|
| High-ropes course | 2009 | 48,040 | 2025 | 7,962 |
| LVR industrial museum | 2010 | 60,336 | 2021 | 7,842 |
| City swimming pool | 2009 | 181,285 | 2025 | 162,926 |
| Short film festival | 2016 | 20,000 | 2025 | 13,809 |
| Theatre | 2016/2017 | 65,802 | 2024/2025 | 44,071 |
Data: Stadt Oberhausen via Open.NRW, visitor statistics for the Hochseilgarten, the LVR-Industriemuseum, the städtisches Hallenbad, the Internationale Kurzfilmtage and the Theater Oberhausen, licence Datenlizenz Deutschland Namensnennung 2.0, downloaded 3 November 2026. Programs and table are ours. The files carry a footnote column with the city's own notes on particular years. We are not connected with the city or the venues.
The table also hides a trap for the careless reader. "Latest" for the museum is 2021, four years older than the others, because that file stops there. A sentence like "all five venues are below their peak" is true, but comparing the museum's latest figure with the swimming pool's would compare different years. A good program prints the period next to every number, which ours does, and a good programmer reads it.
Times and holidays
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
| Oberhausen | India, MEZ months | India, MESZ months |
|---|---|---|
| 16:10 | 20:40 | 19:40 |
| 18:00 | 22:30 | 21:30 |
| Saturday 11:00 | 15:30 | 14:30 |
| Sunday 12:15 | 16:45 | 15:45 |
MEZ is UTC+1 and MESZ is UTC+2, the two legal times of the Einheitenzeitgesetz. The present MEZ period started on 25 October 2026; MESZ returns on 28 March 2027. With India fixed at UTC+5:30, Indian clocks show 4 hours 30 minutes more than Oberhausen in MEZ and 3 hours 30 minutes more in MESZ. Batch times are agreed, never fixed in advance.
| Holiday | Dates | Days |
|---|---|---|
| Herbstferien | 17 to 31 October 2026 | 15 |
| Weihnachtsferien | 23 December 2026 to 6 January 2027 | 15 |
| Osterferien | 22 March to 3 April 2027 | 13 |
| Pfingstferien | 18 May 2027 | 1 |
| Sommerferien | 19 July to 31 August 2027 | 44 |
Holiday dates from the KMK overview Ferienregelung 2026/2027, Stand 9 October 2025, Nordrhein-Westfalen line.
Online classes carry on through the holidays unless you choose a break. Oberhausen had 213,646 inhabitants on 31 December 2024, according to Destatis, in a Land of 18,034,454. Learners from the neighbouring cities, Mülheim an der Ruhr (173,050), Bottrop (118,535), Duisburg (502,270) and Essen (574,682), are in North Rhine-Westphalia too, so they share Oberhausen's school calendar and can join the same batches.
Signs of progress
Five signs we look for. None of them is a grade, and each can be seen in the learner's own code.
| Sign | What it looks like |
|---|---|
| Predicts | Says what a program prints before running it |
| Reads errors | Goes to the line a traceback names, not to the top of the file |
| Reuses | Writes a function instead of a second copy |
| Generalises | Changes a function so it works for a case it failed on |
| Labels | Prints the period or unit next to every number |
The Oberhausen project tests three of these signs in one exercise. If your child can explain why Version 2 is better than a copied function, the course is working.
You receive short updates on which signs your child has shown.
Generalising is the habit that saves the most time at work. Every report you automate will one day meet a file that is slightly different.
Bring your own files and we will build the exercises around them.
Beyond the first course
Grouped by where a learner is heading. Every course is live, in English, with a regular mentor.
POB / START / 01
Turtle drawings, games and small AI, 9 to 12.
Open the syllabusPOB / START / 02
For children not yet typing comfortably, 6 to 12.
Open the syllabusPOB / START / 03
Help beside school Informatik, Klasse 5 to 10.
Open the syllabusPOB / TEEN / 01
Files, charts and first models, 14 to 18.
Open the syllabusPOB / TEEN / 02
Contest problems for teens who already code.
Open the syllabusPOB / TEEN / 03
Preparing for the Python Institute exams, from 13.
Open the syllabusPOB / PRO / 01
From zero to confident, at depth.
Open the syllabusPOB / PRO / 02
Excel, SQL, Python and dashboards.
Open the syllabusPOB / PRO / 03
Django and Flask, once the basics are in place.
Open the syllabusFormat
Two live classes, an hour each, with the same mentor, and one short task in between. That is all, and it is enough.
After school
Oberhausen afternoon slots for pupils.
Evening
Later slots for adults after work.
One to one
Times agreed with the mentor and moved when needed.
Shared while you type, so help is instant.
Python installed on your own computer.
The same person all course long.
Learners of a similar age and stage.
Real data, including German open data.
Short notes on what changed.
Student work
A few student projects, from small games to data tools. The student labs page has many more.

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
The fee is per month and includes eight live classes. It appears below in euro, worked out with the European Central Bank reference rate, but the payment is processed in US dollars; your bank does the currency conversion, so its figure may not match ours to the cent.
Free first class
Free
no card required
Group batch
€90
a month, eight live classes, charged in US dollars
One to one
€134
a month, eight live classes, charged in US dollars
What families say
From Google, written by parents and students themselves.
★★★★★
"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
Oberhausen asks
No. We teach in English only. The mentors are based in India and keep a calm pace, rephrase when needed and adapt to how each learner speaks; since Python is made of English keywords, the language of the class and of the code is the same.
Really live. A mentor is on the call for the whole hour and watches the learner's shared screen while they type. There are no recorded lessons standing in for the mentor.
A laptop or desktop computer, a headset or quiet room, and a steady internet connection. Python and the code editor are free and installed with the mentor in the first class.
Yes, in grades 5 and 6 every pupil at a general school has the compulsory subject Informatik. From grade 7 it is an elective that depends on the school type, and in the Oberstufe it can be a three-hour Grundkurs or, in the Qualifikationsphase, a five-hour Leistungskurs.
From about 10 in our Maths Through Coding course, from 9 in Python and AI for Kids, and at any age as a teenager or adult. Younger children usually start with Scratch.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. Pupils tend to take late afternoons and adults evenings.
An exercise we wrote on five visitor files published by the city of Oberhausen. One Python function reads four of them and fails on the theatre file, whose first column is a season rather than a year. Fixing the function, not copying it, is the lesson.
Yes. Our adult courses assume no experience. Many adults in the Ruhr area want Python to automate office tasks, and they usually write their first useful script within the first month.
Between fifteen and twenty learners at a similar stage and age. One-to-one is the alternative: two private classes a week with a mentor of your own.
The fee is shown in euro at the European Central Bank reference rate and paid in US dollars, converted by your bank, so the booked amount may differ a little. The trial class costs nothing and needs no card.
Keep reading
Other pages for Python and coding in North Rhine-Westphalia and Germany.
The Land, its schools and the Informatik Abitur.
Every Python course we teach in Germany.
The central exam, explained.
For learners after school.
Python for children aged 9 to 12.
What happens in our live classes.
Part of the guide: Coding classes in North Rhine-Westphalia
More guides: Coding classes in Lower Saxony · Coding classes in Land Bremen · Coding classes in Hesse · Coding classes in Bavaria · Coding classes in Saxony-Anhalt · Coding classes in Schleswig-Holstein · Coding classes in Baden-Württemberg · Coding classes in Saarland · Coding classes in Rhineland-Palatinate · Coding and maths in Berlin · Coding and maths in Hamburg · Coding classes in Saxony · Coding classes in Thuringia · Coding classes in Brandenburg · Coding classes in Mecklenburg-Vorpommern
Start here
Tell us the learner's age and what they have tried before. In the trial hour the mentor installs Python with them, writes a first program together and then recommends a course and a format.
To read more first, see how we teach or look through the full course list.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
Python classes run live online in English, with mentors based in India. Questions are answered fastest on WhatsApp, in English.
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