JAV / SCHOOL / 01
AP Computer Science A
Java for the AP exam, for pupils on that route.
Open the syllabusGermany · Java · Teenagers and adults
In Nordrhein-Westfalen, the most populous Land with 18,034,454 inhabitants at the end of 2024 according to Destatis, the 2027 Informatik Abitur names Java as its programming language and lists the exact classes a candidate must be able to use, from Stack and Queue to BinarySearchTree. It is also written on paper, with no computer. This page sets out what that means for a pupil, what a Java course covers for teenagers and adults, and a Java project in which the same sixteen names make a tree of height 16 or of height 5, depending only on the order they go in.
Live classes since 2020 · 10,000+ students worldwide · Java written and traced by hand as well as run
In short
Java classes for learners in Germany at Modern Age Coders are taught live online in English: first programs, then objects and classes, data structures such as stacks, queues, lists and trees, and databases with SQL, for Oberstufe Informatik or for work. One regular mentor keeps to each learner's pace and accent. Pupils and adults can learn in a class of fifteen to twenty or alone with the mentor.
Where to start
A Java course for teenagers, one built around Oberstufe Informatik and the Abitur, and one for adults who need Java at work.

JAV / 01
Teenagers of 13 and over: a first class file, then objects, inheritance, collections and a project, explained without hurry.
Open the syllabus →
JAV / 02
Built for the three Oberstufe years: Java, data structures, SQL and automata, with plenty of practice on paper.
Open the syllabus →
JAV / 03
Core Java, then the tools used in real teams, up to building a web service with Spring Boot.
Open the syllabus →Java at school
Java, together with SQL for databases. The NRW Ministry of Schools publishes the requirements for each year's central Abitur, and its document for the 2027 Informatik exam is short and precise.
| Point | Grundkurs | Leistungskurs |
|---|---|---|
| Programming language | Java, and SQL for databases | Java, and SQL for databases |
| Tasks sent to the school | Four | Four |
| Tasks the teacher chooses | Two | Three |
| Choice for the pupil | None | None |
| Working time | 225 minutes | 270 minutes |
| Computer | Not used | Not used |
| Aids | Spelling dictionary; scientific calculator or CAS | Spelling dictionary; scientific calculator or CAS |
Source: Ministerium für Schule und Bildung NRW, Zentralabitur 2027, Informatik, Vorgaben (informatik_2027_gg.pdf), via standardsicherung.schulministerium.nrw.de, read on 3 November 2026. The English summary is ours.
Java written by hand, on paper, under time pressure, by someone who cannot run it to see whether it works. A pupil has to read code and know what it does, trace it line by line, and write correct Java without an editor pointing out a missing semicolon.
The Informatik-Monitor 2026/27 reports that NRW schools may offer the subject in the last two years with three weekly hours at basic level or five at raised level.
Each Land sets its own Abitur rules, and the Informatik-Monitor reports hours rather than languages, so we only state what we have read in an official source. Bayern, for example, sets its written Informatik Abitur centrally and, says the Monitor, much of it is programming on paper with no work at a computer.
If your Land is not NRW, ask the school which language its Oberstufe course uses. Our Abitur course covers both Java and Python.
We teach alongside school and are not connected with the NRW ministry. We award no grades: the school course and the Abitur are what count. What we add is time with Java: tracing code on paper, writing it by hand and then checking it on a computer, which is the fastest way we know to make paper programming feel natural.
Data structures
The 2027 requirements name them, Grundkurs and Leistungskurs separately. In our classes pupils first build simple versions of their own, so that the versions used at school hold no surprises.
| Area | Grundkurs | Leistungskurs adds |
|---|---|---|
| Linear structures | Arrays up to two dimensions; Stack, Queue, List | Nothing further |
| Trees | BinaryTree, BinarySearchTree | Nothing further |
| Graphs | Not required | Graph, Vertex, Edge |
| Databases | DatabaseConnector, QueryResult, with SQL | The same |
| Networks | Single computers and networks | Connection, Client, Server |
| Automata | Deterministic and non-deterministic finite automata | Pushdown automata; scanner, parser and interpreter for a regular language |
Source: Zentralabitur 2027, Informatik, Vorgaben, NRW Ministry of Schools, section III, read on 3 November 2026. The grouping into rows is ours. We do not reproduce the ministry's class documentation or its past exam tasks; they are available free from the ministry.
A binary search tree appears in both courses, and it is where many pupils first find that a data structure can be correct and still behave badly. The project below shows why.
A Java project
A binary search tree puts each new name to the left or right of the names already in it, by alphabetical order. Put the 16 Länder in and ask how tall the tree has become. The answer depends entirely on the order in which they arrive.
Write a small tree class of your own: a node with a name and two children, an insert method and a height method. Then build the tree twice from the same 16 names: once in the order of the Länder's official codes, Schleswig-Holstein first, Thüringen last, and once in alphabetical order.
Save the file as LaenderTree.java. With Java 21 it runs directly with java LaenderTree.java, no separate compiling step needed.
The height of the tree is the number of steps a search may need in the worst case. A short, bushy tree finds any name in a few steps; a tall, thin one is no better than a list.
It is exactly the kind of question an examiner can ask about a tree drawn on paper: insert these keys in this order, draw the result, and say what it means for searching.
import java.util.Arrays;
public class LaenderTree {
static class Node {
String name;
Node left, right;
Node(String name) { this.name = name; }
}
static Node insert(Node node, String name) {
if (node == null) return new Node(name);
if (name.compareTo(node.name) < 0) node.left = insert(node.left, name);
else node.right = insert(node.right, name);
return node;
}
static int height(Node node) {
if (node == null) return 0;
return 1 + Math.max(height(node.left), height(node.right));
}
static int build(String[] names) {
Node root = null;
for (String name : names) root = insert(root, name);
return height(root);
}
public static void main(String[] args) {
// the 16 Länder in the order of their official codes, 01 to 16
String[] byCode = {"Schleswig-Holstein", "Hamburg", "Niedersachsen", "Bremen",
"Nordrhein-Westfalen", "Hessen", "Rheinland-Pfalz", "Baden-Württemberg",
"Bayern", "Saarland", "Berlin", "Brandenburg", "Mecklenburg-Vorpommern",
"Sachsen", "Sachsen-Anhalt", "Thüringen"};
String[] alphabetical = byCode.clone();
Arrays.sort(alphabetical);
System.out.println("Inserted by code: height " + build(byCode));
System.out.println("Inserted alphabetically: height " + build(alphabetical));
}
}It prints Inserted by code: height 8 and Inserted alphabetically: height 16.
Sixteen names in alphabetical order give a tree of height 16. Every name is greater than the one before it, so each goes to the right of the last, and the tree is a single line: searching it for Thüringen means passing every other Land on the way. In code order the tree is half as tall, but only by luck: nothing in the official codes was designed to make a good tree.
// Version 2: insert the middle name first, then the middle of each half
static Node balanced(Node root, String[] sorted, int lo, int hi) {
if (lo > hi) return root;
int mid = (lo + hi) / 2;
root = insert(root, sorted[mid]);
root = balanced(root, sorted, lo, mid - 1);
return balanced(root, sorted, mid + 1, hi);
}
static int steps(Node node, String name) {
int count = 1;
while (!node.name.equals(name)) {
node = name.compareTo(node.name) < 0 ? node.left : node.right;
count++;
}
return count;
}
// and at the end of main:
Node fromSorted = null;
for (String name : alphabetical) fromSorted = insert(fromSorted, name);
Node middleFirst = balanced(null, alphabetical, 0, alphabetical.length - 1);
System.out.println("Inserted middle first: height " + height(middleFirst));
System.out.println("Steps to find Thüringen: " + steps(fromSorted, "Thüringen")
+ " in the alphabetical tree, " + steps(middleFirst, "Thüringen") + " in the balanced one");With these methods added to the class and these lines at the end of main, it also prints Inserted middle first: height 5 and Steps to find Thüringen: 16 in the alphabetical tree, 5 in the balanced one.
Inserting the middle name of the sorted list first, then the middle of each half, gives a tree of height 5, the smallest possible for 16 names, since a tree of height 4 can hold at most 15. A search for Thüringen now takes 5 steps instead of 16. Real libraries such as Java's own TreeMap keep themselves balanced automatically; writing an unbalanced one first is how a learner understands why they need to.
The names are the 16 Länder in the order of the Statistisches Bundesamt's regional codes, 01 to 16. The Java code, its output on OpenJDK 21 and the exercises are our own, and they are not the ministry's BinarySearchTree class.
Java for work
If your work or the work you want involves large, long-lived software, very often yes. Java is strict, which makes it slower to start with than Python and easier to keep in order later.
Types declared up front, classes for everything, and a compiler that refuses mistakes before the program runs. Adults who find that annoying in the first week usually come to value it by the second month.
Core Java first: types, control flow, classes, interfaces, collections, exceptions and testing. Then the tools of real projects, a build tool, a database through SQL, and finally a small web service with Spring Boot.
Any job, salary or employer. We teach Java properly, review your code honestly and help you build projects you can show. Adults planning a career change should talk it through with a mentor in the free first class.
Like every mainstream language, Java is built on English words: its SE 21 specification lists 51 reserved keywords, among them class, public, static and return. Our mentors teach in English only, so the words you hear in class are the words you type.
Class times
After school, in the early evening, and at weekends. Your mentor is in India, ahead of German time in every season.
| Germany | India now (to 28 March 2027) | India in summer 2027 |
|---|---|---|
| 14:45 | 19:15 | 18:15 |
| 18:30 | 23:00 | 22:00 |
| Saturday 13:30 | 18:00 | 17:00 |
| Sunday 11:30 | 16:00 | 15:00 |
Germany runs on MEZ, UTC+1, in winter and MESZ, UTC+2, in summer, as the Einheitenzeitgesetz provides; the current winter period started on 25 October 2026 and ends on 28 March 2027. India stays on UTC+5:30 all year, so a German 14:45 is 19:15 there now and 18:15 once summer time returns.
These are illustrations, not fixed groups. Choose the time of your free first class in German time; one-to-one learners agree regular times with their mentor and can move them before Klausuren or busy weeks at work.
Milestones
Our markers for Java learners, for school or work. They are ours, not the Abitur's.
| Level | Usually reached | The learner can |
|---|---|---|
| 1. First programs | Month 1 | Write, compile and run a class with a main method |
| 2. Objects | Months 2 to 3 | Design classes with fields, constructors and methods |
| 3. Linear structures | Months 4 to 5 | Build and use a stack, a queue and a list |
| 4. Trees and SQL | Months 6 to 8 | Insert into and search a binary search tree; query a database |
| 5. On paper and in projects | Months 9 and up | Trace and write Java by hand, or build a larger program |
Trace your code on paper before you run it. The exam will not let you run it.
Learn what each data structure is for, not just how to call its methods.
Read the compiler's complaint carefully: it is usually right, and it names the line.
Write a small test for every method you are not sure of.
More for Java learners
Live and in English, with one mentor throughout, in a class or one to one.
JAV / SCHOOL / 01
Java for the AP exam, for pupils on that route.
Open the syllabusJAV / SCHOOL / 02
For IB pupils at schools in Germany.
Open the syllabusJAV / SCHOOL / 03
Programming and theory for the 0478 exam.
Open the syllabusJAV / BASE / 01
Algorithms and data structures, step by step.
Open the syllabusJAV / BASE / 02
Queries and databases, as the Abitur expects.
Open the syllabusJAV / BASE / 03
A second language that makes Java easier.
Open the syllabusJAV / WORK / 01
Trees, graphs and their costs, in depth.
Open the syllabusJAV / WORK / 02
The database side of most Java systems.
Open the syllabusJAV / WORK / 03
Version control for every project.
Open the syllabusHow classes run
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays.
After school
From about 14:30 German time, for Oberstufe pupils.
Evenings
For adults, around 18:00 German time.
One to one
Times agreed with the mentor, weekends included.
Code traced by hand, then run to check.
Learners build a stack or tree before using a library.
Explained again, differently, when needed.
The same teacher across the whole course.
Follows the Oberstufe topics when a pupil asks.
Fifteen to twenty learners, or one.
Student work
Here is a sample of what our students worldwide have built; there is more 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
Eight live Java classes make up one month and one fee. The amount is displayed in euro at the European Central Bank reference rate; payment is taken in US dollars and your bank converts it, so the euro figure on your statement may come out slightly different.
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
Reviews from our Google profile, written by students and parents and left unchanged.
★★★★★
"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
Learners in Germany ask
No. Java classes are live and in English only, with a mentor who matches your pace and accent. Java's 51 reserved keywords are English words, so the language of the class is the language of the code.
Yes. The NRW Ministry of Schools names Java, together with SQL, as the language for the 2027 written Informatik Abitur, and lists classes such as Stack, Queue, List, BinaryTree and BinarySearchTree.
Not in NRW. The 2027 requirements say that no computer is used for the written tasks. The working time is 225 minutes in the Grundkurs and 270 minutes in the Leistungskurs.
Very likely, since the ideas of objects, data structures and algorithms carry across languages. Check with the school which language its course uses; our Abitur course covers Java and Python.
Python is gentler for most beginners. A pupil whose school uses Java, or an adult who needs it at work, can start with Java directly; the free first class helps decide.
We follow the school topics when a pupil asks, and practise tracing and writing Java on paper. We teach alongside school and award no grades; the school course is the one that counts.
Yes. Pupils first write simple versions of Stack, Queue, List and the trees themselves, then use the versions their school works with. We do not reproduce the ministry's materials or exam tasks.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. Oberstufe pupils usually come after school and adults in the early evening.
The fee is shown in euro at the European Central Bank reference rate and paid in US dollars, which your bank converts. The first class is free.
Either. A group has fifteen to twenty learners at a similar level; one-to-one classes follow one learner's plan.
Elsewhere on this site
More for learners in Germany.
The full set of our Germany pages.
School Informatik support, in German.
The other Abitur subject many Informatik pupils take.
From Java and Python to real models.
Where Java fits among other languages.
What a live class looks like.
Start here
The mentor asks whether Java is for school or for work, sets a short task at your level, and suggests the course and times that fit, in English and at your speed.
To read more first, see how we teach or browse the course catalogue.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
Classes are live online in English, with mentors based in India. For questions, WhatsApp us 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