BRF / KID / 01
Coding for Kids
From first blocks to apps.
Open the syllabusBremerhaven · Coding and AI · Every age from 6
On 1 December 2025 a single radio receiver in Bremerhaven logged more than 170,000 position reports from ships. How many ships was that? Getting that one answer right is a small lesson in coding and a big one in AI, and it is where this page starts. It then explains how our live classes in English work for every age, what schools in the Land Bremen teach in Informatik and what changes in 2027/28, and which AI tools each age may use.
Live online since 2020 · 10,000+ learners worldwide · counting before AI, at every age
At a glance
Modern Age Coders runs coding and AI classes for Bremerhaven live online, taught in English, from primary school age to adulthood. Six to twelve year olds move from Scratch to Python, teenagers handle real data and small machine-learning models, and adults bring Python and AI into their work. A single mentor adapts to each learner's speed and accent, whether in a shared group of fifteen to twenty or in private lessons.
Choose a start
One course per stage of life to begin with; the free class confirms it.

BRF / 01
Ages 8 to 12. Scratch games made with the mentor and a safe first look at AI, with no chatbot accounts.
Open the syllabus →
BRF / 02
Teenagers. Real files first, such as the ship signals below, then models that are checked on data they have not seen.
Open the syllabus →
BRF / 03
Adults. Python for large files, counts, summaries and charts that hold up when someone checks them.
Open the syllabus →A Bremerhaven data project
Far fewer than the number of messages suggests. The Bundesamt für Seeschifffahrt und Hydrographie (BSH) publishes what the AIS receiver at its Bremerhaven measuring station records, open data under the Datenlizenz Deutschland Namensnennung 2.0. Our learners use one day of it.
AIS, the Automatic Identification System, is a radio system on ships. Each ship regularly sends a short message with its identity, status and speed, and from time to time a longer one with its type and voyage. The BSH describes the records as navigation data and ship identity logged by the receiver at the Bremerhaven station.
We downloaded the log for 1 December 2025 on 3 November 2026: 185,120 lines, from midnight to 23:59:59.
Two small files of our own. ais_positions_2025-12-01.csv has one row per position message: a ship number, its status, its speed in knots and the time. ais_ship_types_2025-12-01.csv has one row each time a ship announced its type.
We show no ship names, numbers or positions on this page. The question is about counting, and counting needs none of them.
import csv
messages = 0
ships = set()
with open("ais_positions_2025-12-01.csv", encoding="utf-8") as f:
for row in csv.DictReader(f):
messages += 1
ships.add(row["ship_id"])
print("Position messages:", messages)
print("Different ships:", len(ships))
print("Messages per ship, on average:", round(messages / len(ships)))It prints: Position messages: 172306, Different ships: 170 and Messages per ship, on average: 1014.
A newcomer reading the file would say "172,306 ships". The set says 170. A set keeps each value once, however often it is added, so it turns a stream of messages into a list of distinct ships. On average each ship sent about a thousand position reports that day, because ships that move report often.
Next question: what kinds of ship were they? The type comes in the longer messages, so Version 2 builds a dictionary from ship number to type, then compares it with the set of ships from Version 1. Set subtraction shows which ships never said what they are.
from collections import Counter
kind = {}
with open("ais_ship_types_2025-12-01.csv", encoding="utf-8") as f:
for row in csv.DictReader(f):
kind[row["ship_id"]] = row["ship_type"]
by_messages = Counter(kind[s] for s in kind)
print("Ships that sent their type:", len(kind))
print("Seen moving or moored but never said their type:", len(ships - set(kind)))
print("Top kinds:", by_messages.most_common(4))Run after Version 1, it prints: Ships that sent their type: 136, Seen moving or moored but never said their type: 34 and Top kinds: [('Cargo ship', 43), ('Tug', 23), ('Other ship', 18), ('Cargo shipA', 7)].
Thirty-four ships sent positions but no type during the day, so any chart of "ship types in Bremerhaven" built from this file is missing a fifth of the ships. Then there is that odd label, "Cargo shipA". The file also contains Cargo shipB, C and D: the letter is an extra category attached to the type. For a simple count of cargo ships they belong together, which Version 3 does.
tidy = Counter()
for s, k in kind.items():
if k.startswith("Cargo ship"):
k = "Cargo ship"
tidy[k] += 1
print("Top kinds after tidying:", tidy.most_common(3))Added after the first two versions, the output is Top kinds after tidying: [('Cargo ship', 56), ('Tug', 23), ('Other ship', 18)].
| Status in the message | Messages |
|---|---|
| under way | 142,895 |
| moored | 19,746 |
| restr.manv (restricted manoeuvrability) | 8,319 |
| anchored | 1,060 |
| unknown | 265 |
| other labels | 21 |
Data: Bundesamt für Seeschifffahrt und Hydrographie, AIS-Daten zur Schiffsabgasmessung an der Messstation Bremerhaven 2025 12, day file for 1 December 2025, licence Datenlizenz Deutschland Namensnennung 2.0, "Quelle: Bundesamt für Seeschifffahrt und Hydrographie", downloaded 3 November 2026. All counts are ours. Message counts are not ship counts: one moving ship can fill thousands of rows.
Coding and AI together
Because a model trained on the wrong unit learns the wrong thing. That is as true for a ten year old's project as for a large AI system.
A model that learned from messages instead of ships would think one busy tug is a thousand vessels. Deciding what one row means is the first step of every data and AI project we teach.
Thirty-four ships in the file never said their type. A model trained only on ships with a type quietly ignores them. Learners write that limit down before they draw any chart.
Cargo shipA and Cargo ship look different to a computer and the same to a person. Tidying labels, and saying exactly how, is part of building a fair model.
Each chat tool sets its own lower age limit in its terms: 13 plus parental consent up to 18 for ChatGPT, 16 in Germany for Gemini, and 18 for Claude.
So nobody under those ages is asked to sign up for anything in our classes; instead they write small programs that learn a rule from data, which teaches more.
In 2026 the Kultusministerkonferenz added AI-related competences to the framework that grew out of its 2016 digital strategy, putting AI on the list of things schools should address.
Our classes work alongside school and never replace any subject. Nothing we teach is graded or counts towards school reports.
Schools in the Land Bremen
Not yet as a subject for everyone. Bremerhaven belongs to the Land Bremen, which plans to change that from the 2027/28 school year.
| Question | What the Monitor records |
|---|---|
| Compulsory for all pupils today? | No; Bremen is one of six Länder without it |
| Sek I at Oberschule and Gymnasium | No curricular offers with an Informatik focus |
| Planned change | Compulsory Informatik at all schools from 2027/28, two to four weekly hours in total |
| Oberstufe | About one pupil in twelve takes Informatik |
Source: Gesellschaft für Informatik, Informatik-Monitor 2026/27, Bremen page and national overview, read on 2 November 2026. Its words on the plan: "Zum Schuljahr 2027/28 wird Bremen Informatik als Pflichtfach an allen Schulen im Gesamtumfang von zwei bis vier Wochenstunden einführen."
For a Bremerhaven family this is a year of transition. Pupils in Sekundarstufe I today have no curricular Informatik at Oberschule or Gymnasium, according to the Monitor, while those starting in 2027/28 will meet a compulsory subject. Children who begin coding now arrive ready for it; teenagers who would otherwise miss it can learn the same ideas in a weekly class. We teach alongside school and promise no grades.
Times
A Bremerhaven afternoon or early evening is evening in India, where the mentors teach. School holidays need not stop classes.
| Bremerhaven | India until 28 March 2027 | India after 28 March 2027 |
|---|---|---|
| 15:40 | 20:10 | 19:10 |
| 17:50 | 22:20 | 21:20 |
| Saturday 10:15 | 14:45 | 13:45 |
| Sunday 12:00 | 16:30 | 15:30 |
German clock time (Einheitenzeitgesetz) is UTC+1 from late October and UTC+2 from late March; the 2026 change back came on 25 October and the 2027 change forward is on 28 March. With India on UTC+5:30 all year, the difference is four and a half hours now and three and a half in summer. The rows illustrate, they do not fix a batch.
| Break | Starts | Ends |
|---|---|---|
| Autumn | Mon 12 Oct 2026 | Sat 24 Oct 2026 |
| Christmas | Wed 23 Dec 2026 | Sat 9 Jan 2027 |
| Winter | Mon 1 Feb 2027 | Tue 2 Feb 2027 |
| Easter | Mon 22 Mar 2027 | Sat 3 Apr 2027 |
| Summer | Thu 8 Jul 2027 | Wed 18 Aug 2027 |
Dates from the KMK holiday table for 2026/2027 (as of 9 October 2025), Bremen line, valid for Bremerhaven too; the line also has two single free days in May 2027, the 7th and the 18th.
Progress
Our stages, the same for every age. Children take years, adults take months.
| Stage | Children, roughly | Teens and adults, roughly |
|---|---|---|
| Precise instructions | Age 6 to 8 | Week 1 |
| Loops and decisions | Age 8 to 10 | Weeks 2 to 4 |
| Counting what is real (sets) | Age 10 to 12 | Month 2 |
| Joining two files | Age 11 to 12 | Month 2 to 3 |
| A first model, tested fairly | Teenagers | Months 3 to 5 |
| Explaining limits in writing | Teenagers | From month 4 |
Before counting, ask what one row stands for. A message? A ship? A day?
When two files are joined, count what did not match. Those rows are part of the story.
Ask your child what the difference between 172,306 and 170 is. The answer shows they understand data.
Monthly notes report what was built and understood.
More courses
By age band. Live lessons in English, each with a regular mentor.
BRF / KID / 01
From first blocks to apps.
Open the syllabusBRF / KID / 02
Typed Python from about 9.
Open the syllabusBRF / KID / 03
Coding in a world they know.
Open the syllabusBRF / TEEN / 01
The whole language, with projects.
Open the syllabusBRF / TEEN / 02
Ready for the new Bremen subject.
Open the syllabusBRF / TEEN / 03
Distinct counts and joins in a database.
Open the syllabusBRF / ADULT / 01
A full course for beginners.
Open the syllabusBRF / ADULT / 02
Python that does the routine work.
Open the syllabusBRF / ADULT / 03
Structured data, queried properly.
Open the syllabusHow it works
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
Afternoons
Pupils after school.
Early evenings
Adults after work.
Weekends
Saturday or Sunday, any age.
The same mentor every week.
Every lesson is live.
German open data from early on.
Children, teens and adults apart.
Every project names what it cannot know.
15 to 20, or one to one.
Student work
Work by our students in other countries. Many more projects are on the student labs page.

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
Each month's fee covers eight live classes. Amounts shown here are in euro, derived from the European Central Bank reference rate; payment is collected in US dollars and your bank turns it into euro, so the booked amount can vary slightly.
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
Google reviews from learners and parents, unaltered.
★★★★★
"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
Bremerhaven asks
No. Every class is live and in English only, with mentors in India who adapt to the learner's pace and accent. We do not teach in German.
Six upwards, with no top limit. Primary pupils, teenagers and adults each learn in their own groups, from Scratch at the start to data, AI and work automation later.
Not yet. The Gesellschaft für Informatik counts Bremen among six Länder without Informatik that is compulsory for all, and reports that the Land Bremen will introduce it at all schools from 2027/28, with two to four weekly hours in total.
We do not use it with children. The tool itself is closed to under-13s and needs parental consent until 18; in class, younger learners program the ideas behind AI themselves instead.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. Bremerhaven afternoons are evenings in India.
A Python project we wrote on one day of AIS records from the BSH receiver at its Bremerhaven measuring station. The file holds 172,306 position messages but only 170 different ships, and learners discover why counting rows is not counting ships.
Yes. The BSH publishes it under the Datenlizenz Deutschland Namensnennung 2.0, which allows reuse with the source named. We show no ship names, numbers or positions on the page.
Absolutely. Adult beginners write their very first program in lesson one and reach data work and AI services step by step.
A group is fifteen to twenty people close in age; otherwise you book private lessons with one mentor.
By the month. You see euro on this page, worked out from the ECB reference rate, and the card charge is made in US dollars, which your bank exchanges. Nothing is charged for the trial class.
Further pages
More for Bremerhaven learners.
The Germany overview.
Bremen and Bremerhaven together.
A model built on German data.
Every tool's minimum age.
Our students' projects.
Our live classes explained.
Part of the guide: Coding classes in Land Bremen
More guides: Coding classes in North Rhine-Westphalia · Coding classes in Lower Saxony · 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
The free class is a real lesson: one problem, one program and a conversation about goals. Afterwards the mentor recommends a course and either a group or private lessons.
If you would like to read first, see how we teach or every course we offer.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
Our mentors teach from India, live and in English. WhatsApp gets you the fastest reply.
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