JTC / LANG / 01
Python for teens
For schools that teach Python instead.
Open the syllabusCanada · Java · Ages 13 to 18
Many Canadian teenagers learn their first serious language in Java, because their school chose it for Grade 11 or 12 computer science. Others pick it for robotics, for the Canadian Computing Competition, or because a university course will use it. This page covers where Java appears for Canadian teens, which Java Development Kit to install this year, a complete Java program on the City of Vancouver's public art registry, and exercises to extend it. The credit itself stays with the school: we do not grant Ontario credits, and no province recognises our classes as one.
Teaching live online since 2020 · 10,000+ students · Java taught alongside ICS3U and ICS4U, never for credit
In short
Java classes for teens in Canada teach 13 to 18 year olds to write and design Java programs, from loops to classes and objects, often beside a school ICS3U or ICS4U course taught in Java. No credit is attached. Modern Age Coders runs these classes live online, as a batch or one to one, through its Java for Teens course.
Java courses for teens
A full Java course from the first line, a companion paced to Ontario's school courses, and an exam-focused Java course for schools that offer AP.

JTC / 01
For 13 to 18 year olds starting from zero. Its four phases move from Java foundations and OOP to collections and games, data structures, then APIs and a capstone.
Open the syllabus →
JTC / 02
For Ontario students taking ICS3U or ICS4U in Java (or Python). Follows the school's unit order; start in any month. No credit is granted.
Open the syllabus →
JTC / 03
For high school students at schools that offer AP. Six months of Java from the basics, with full exam preparation.
Open the syllabus →Java at school
No province we checked makes Java compulsory, yet many Canadian teens end up writing it, because the curriculum leaves the language to the teacher, or because a course, contest or robot uses it. These are the documents that matter, read on 22 October 2026.
| Where | What the source says | What it means for Java |
|---|---|---|
| Ontario, all computer studies courses (2008) | "The computer programming language used and the order in which concepts are taught is left to the teacher's professional judgement." | Your school, not the province, chose Java for ICS3U or ICS4U |
| Ontario ICS3U, Grade 11 University | Students work "using industry-standard programming tools and applying the software development life-cycle model" | In a Java school: classes, methods and an editor such as an IDE from the start |
| Ontario ICS4U, Grade 12 University | "use modular design principles to create complex and fully documented programs"; prerequisite ICS3U | Java's classes and packages are built for exactly that |
| Ontario ICS4C, Grade 12 College | "learn object-oriented programming concepts, create object-oriented software solutions, and design graphical user interfaces" | Object-oriented design is named outright |
| Nova Scotia Virtual School, Computer Programming 12 | "CodeHS: NSVS Computer Programming 12 (Java)." | One of the few provincial courses that names Java |
| Canadian Computing Competition (CEMC) | "CCC participants may use C, C++, Python 2, Python 3, or Java." | Java is allowed, though CEMC warns a perfect score is not always possible in Python or Java |
| FIRST Tech Challenge (FIRST Robotics Canada) | Robots "can be coded using a variety of levels of Java-based programming" | A team robotics route into Java |
Ontario's document says some teachers "may decide to use an" objects-first approach, while others start with plain procedural code. In a Java class that choice shows on day one: an objects-first teacher talks about classes before loops, the other teaches loops inside one long main method.
Neither is wrong, but a student who moves schools, or who learns from videos made the other way, can feel lost. We find out which approach the school uses and teach so the two fit together.
Each Ontario computer studies course is worth one credit, and only a school can award it. Our Java classes sit beside the course: more practice, clearer explanations, and feedback on the student's own programs. We do not grant Ontario credits, and we never write graded assignments for a student.
Looking ahead to university, the Waterloo computer science page lists ICS3U (its wording: Grade 11 U Introduction to Computer Science) under recommended courses, with no language attached.
Sources: Ontario Curriculum, Computer Studies, Grades 10 to 12 (2008); Ontario curriculum course data; Nova Scotia Virtual School; CEMC, CCC; FIRST Robotics Canada; University of Waterloo. Each was read on 22 October 2026; none of these bodies is connected with Modern Age Coders.
Which Java to install
Java ships a new version twice a year, which confuses new students. Most of those versions are short-lived; a few are long-term support releases that schools and employers settle on. The dates below are from OpenJDK and Oracle's own pages.
| Release | General availability | Status |
|---|---|---|
| JDK 21 | 2023/09/19 | Long-term support (Oracle lists 8, 11, 17, 21 and 25 as LTS) |
| JDK 25 | 16 September 2025 | Long-term support; includes JEP 512, Compact Source Files and Instance Main Methods |
| JDK 26 | 2026/03/17 | Feature release, not LTS |
| JDK 27 | 2026/09/15 | Feature release, not LTS |
| JDK 28 | In development | Feature release |
| Java 29 | Planned for September 2027 | Oracle: "the next planned LTS release" |
Install the version your school uses, if it tells you. If it does not, choose JDK 25, the most recent long-term support release. Everything a Grade 11 or 12 course teaches works on it, and so does every program on this page.
OpenJDK says the project "ships a feature release every six months", so a newer number will always exist. That does not make a long-term release out of date.
JEP 512, final in JDK 25, aims to let "beginners write their first programs without needing to understand language features designed for large programs." In practice a first program can be as short as a void main() method, without the full public class and public static void main ceremony.
We still teach the classic form, because school textbooks, the CCC grader and older JDKs expect it. The program on this page uses it, and was compiled and run on JDK 22.
Sources: OpenJDK, JDK project; JDK 25; JEP 512; Oracle Java SE support roadmap. All read 22 October 2026.
A Java project on real data
The City of Vancouver keeps a registry of its public art, published under a licence that permits reuse by businesses as well as individuals. Each record says what the work is, whether it is still in place, its neighbourhood and the year it went up. We use a five-column export of it to teach the idea at the heart of ICS4U-level Java: a class that turns one line of text into an object that can answer questions. We wrote the program, and each figure quoted comes from running it on the city's export of 22 October 2026.
The task: load every record into an Artwork object, count the artworks still in place by the decade they were installed, and find the oldest one still standing. The export's columns are registryid, type, status, neighbourhood and yearofinstallation.
// PublicArt.java: our own program for this page (Modern Age Coders)
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class PublicArt {
static class Artwork {
int id;
String type;
String status;
String neighbourhood;
int year;
Artwork(String line) {
String[] f = line.split(",", -1); // -1 keeps empty fields
id = Integer.parseInt(f[0]);
type = f[1];
status = f[2];
neighbourhood = f[3];
year = Integer.parseInt(f[4]);
}
boolean stillThere() {
return status.equals("In place");
}
}
public static void main(String[] args) throws IOException {
List<String> lines = Files.readAllLines(Paths.get("vancouver-public-art-5col.csv"));
List<Artwork> art = new ArrayList<>();
for (int i = 1; i < lines.size(); i++) { // line 0 is the header
art.add(new Artwork(lines.get(i)));
}
Map<Integer, Integer> byDecade = new TreeMap<>();
int gone = 0;
for (Artwork a : art) {
if (a.stillThere()) {
int decade = a.year / 10 * 10;
byDecade.put(decade, byDecade.getOrDefault(decade, 0) + 1);
} else {
gone++;
}
}
Artwork oldest = art.stream()
.filter(Artwork::stillThere)
.min(Comparator.comparingInt(a -> a.year))
.get();
System.out.println("records: " + art.size() + ", not in place: " + gone);
System.out.println("in place, by decade installed: " + byDecade);
System.out.println("oldest in place: #" + oldest.id + ", " + oldest.type + ", " + oldest.year);
}
}records: 751, not in place: 273
in place, by decade installed: {1900=3, 1910=3, 1920=9, 1930=4, 1940=2, 1950=8, 1960=24, 1970=31, 1980=33, 1990=67, 2000=90, 2010=159, 2020=45}
oldest in place: #284, Totem pole, 1901Of 751 records, 478 are in place. The decade of the 2010s alone accounts for 159 of those.
| Choice | What the data showed | The Java idea behind it |
|---|---|---|
| The constructor parses the line | Every record has exactly five fields once empty ones are kept | An object is responsible for building itself; main never touches raw text |
| split(",", -1), not split(",") | 99 records have an empty neighbourhood | Without the -1 limit, Java drops trailing empty fields; with it, every field keeps its position |
| A method, stillThere() | Status has four values: In place 478, No longer in place 268, Deaccessioned 4, In progress 1 | The rule lives in one place; change it once and every count follows |
| A TreeMap for decades | Thirteen decades, 1900s to 2020s | A TreeMap keeps its keys sorted, so the output reads in order |
The program prints "not in place: 273". But only 268 records say "No longer in place". The other five are 4 marked Deaccessioned and 1 marked In progress, and a work in progress is not gone; it is not there yet.
An else branch catches everything the if did not, including categories the programmer never thought about. The fix is a second method, or a switch on the status, so each value is handled on purpose. That is exercise 3 below.
ICS4U asks for "modular design principles" and "fully documented programs". Here the modules are visible: a class that knows how to read a record, a method that knows one rule, and a main method that only asks questions.
A Grade 11 student writes the same program as one long main method first. Moving it into the Artwork class, and seeing how much shorter main becomes, is the lesson.
Data: City of Vancouver Open Data Portal, Public art. Contains information licensed under the Open Government Licence, Vancouver. Its terms permit use "including for commercial purposes". The Java and the tallies are ours; the City of Vancouver does not endorse this page.
Exercises
Our exercises, with the answers we got on the same export, so a student can check their code. Each one practises a different part of Java.
Exercise 2 is our favourite, because the program does not crash and the number looks reasonable. Only someone who looks at the actual neighbourhood values catches it. We ask students to print every distinct value of a column before they write a condition on it.
Beyond the school course
Java is a means, not a destination. Once the school course is under control, these are the directions our teen students take it, with our honest view of each.
| Direction | What it asks | Our view |
|---|---|---|
| The CCC, 17 February 2027 | Five problems in three hours; Java allowed | Fine for Junior; for Senior and the Canadian Computing Olympiad, which requires C++, many students switch |
| FIRST Tech Challenge | Team robots coded in Java-based programming | Ideal for a teen who wants code to move something physical |
| AP Computer Science A | A Java course and exam, at schools that offer AP | Useful where available; our AP course teaches it from Java basics |
| Data structures and algorithms | Lists, maps, trees and how fast they are | Where Java shines; our Java for Teens course spends two months here |
| Android apps | Java or Kotlin with Android tools | A natural next step; our app course for teens covers the mobile side |
Java's verbose style makes it tempting to let an assistant write the boilerplate. Each company sets its own floor. OpenAI's terms let 13 to 17 year olds in only with a parent or guardian agreeing; Anthropic shuts Claude to everyone below 18; GitHub offers Copilot Student at no charge to verified students, and its accounts start at 13.
Whatever the tool, our rule is the same: a student explains every line they submit, and rewrites any line they cannot. The CCC rules forbid generative AI during the contest, so practice has to happen without it too.
Our promise holds in Java as in every language we teach: a student learns to reason out a solution, rather than reproduce one someone else, or some model, produced. In Java that means designing the class on paper first: what it knows, what it can answer, what can go wrong.
A student who can sketch the Artwork class before writing it has learned object-oriented design. One who can only type it from an example has not, yet.
Across six time zones
Teens join from Victoria to St. John's, and the school year now crosses two clock changes in the East and none in the West. We book every class in the student's own zone and recheck it at each change.
| Students in | Behind UTC, winter 2026 to 2027 | Behind UTC, summer 2027 |
|---|---|---|
| Vancouver, Victoria, Whitehorse | 7 hours | 7 hours |
| Calgary, Edmonton, Regina, Saskatoon | 6 hours | 6 hours |
| Winnipeg | 5 hours | 5 hours |
| Toronto, Ottawa, Montreal | 5 hours | 4 hours |
| Halifax, Moncton, Charlottetown | 4 hours | 3 hours |
| St. John's | 3 and a half hours | 2 and a half hours |
During ICS3U or ICS4U exam weeks, families often move a class or add one. A one-to-one student can shift times with a message, and a batch student can ask us about a temporary change.
Four steps in Java
Our steps for placing a teenager in the first class.
| Step | What the student can do |
|---|---|
| 1. Compiles | Writes a small program in main, compiles it and reads the compiler errors |
| 2. Structures | Uses methods, loops and arrays or ArrayLists without help |
| 3. Models | Designs a class with fields, a constructor and methods, like Artwork |
| 4. Organises | Splits a program into several classes, uses interfaces or inheritance, and documents it |
ICS3U usually covers steps 1 and 2; ICS4U expects step 3 and reaches into step 4. A student who struggles in ICS4U is often missing step 2, not step 3.
Steps are about what the student can do alone, from a blank file.
Read the first compiler error only; fix it; compile again. Later errors are often caused by the first.
Before writing a class, write one sentence: this class knows ... and can answer ....
More for teens
Each is taught live with one regular teacher, in a batch or one to one, for students anywhere in Canada.
JTC / LANG / 01
For schools that teach Python instead.
Open the syllabusJTC / LANG / 02
The language the CCO requires.
Open the syllabusJTC / LANG / 03
Not Java: the language of the web.
Open the syllabusJTC / SOLVE / 01
Logic, data structures, algorithms.
Open the syllabusJTC / SOLVE / 02
For the 17 February 2027 contest.
Open the syllabusJTC / SOLVE / 03
Contest technique for confident coders.
Open the syllabusJTC / BUILD / 01
Mobile apps, front to back.
Open the syllabusJTC / BUILD / 02
APIs and databases.
Open the syllabusJTC / BUILD / 03
Version control from zero.
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.
Weekdays
Evenings, quoted in your local clock.
Weekends
Mornings or afternoons, away from homework nights.
1-on-1
Paced to your school unit and test dates.
We match the JDK and editor your school uses.
We teach in step with your teacher's approach.
Errors are read and fixed by the student.
Canadian open data, licensed for reuse.
We explain and practise; graded work stays yours.
A class of fifteen to twenty, or a private teacher.
Student work
Java and other courses lead to finished projects like these. See the student labs for 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
A monthly fee buys eight live classes. Families can stop at the end of any month, which suits a student who wants help only through one semester.
Free first class
Free
no card required
Group batch
$140 CAD
a month, eight live classes
One to one
$210 CAD
a month, eight live classes
What families say
Google reviews from our families and students, printed 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
Questions about Java
It depends on the school. Ontario's 2008 curriculum says the programming language used is left to the teacher's professional judgement, so some schools teach ICS3U in Java and others in Python. We teach in whichever language the school uses.
They do not. A credit for ICS3U or ICS4U can only come from the student's school. We do not grant Ontario credits, and our classes are support beside the course, not a replacement for it.
The one the school uses, if it says. Otherwise JDK 25, which reached general availability on 16 September 2025 and is a long-term support release. Oracle lists the next planned long-term release as Java 29 in September 2027.
Yes. Java for Teens assumes nothing: a 13 to 18 year old starts with a first compiled program and, over 40 to 48 weeks of twice-weekly classes, reaches data structures and a capstone.
It can; Java is one of five languages CEMC accepts for the CCC. CEMC adds a caution that some problems may not allow full marks in Java or Python, and the Olympiad after the CCC accepts only C++.
The Nova Scotia Virtual School lists its Computer Programming 12 course as CodeHS: NSVS Computer Programming 12 (Java). Other provinces mostly leave the language to schools.
We help the student plan, design and debug their own project, and explain the Java behind it. We do not write graded work; the project has to be the student's own.
Only inside each company's age rules. ChatGPT needs a parent or guardian to agree for anyone under 18, Claude is closed to under-18s, and Copilot Student is free once a student aged 13 or over is verified. Whatever the tool, our students explain every line they hand in.
Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. We quote every time in the zone your family lives in.
Programs with real structure, such as our PublicArt.java, which turns each record of Vancouver's public art registry into an object and counts what is still in place. Later, larger projects and data structures.
Elsewhere on this site
More for Canadian teens writing Java.
All our pages for Canadian families.
The Grade 11 course in detail.
Our Java teaching for teenagers.
Classes, objects and inheritance.
The error every student meets.
Setting up a school IDE.
Ideas once the basics are in.
The 2027 contest, in any allowed language.
Finding what a compiler cannot.
Start here
We open with a short Java program for the student to read and predict, then ask for one small change to it. The teacher learns which step the student is on and how their school teaches Java.
Curious first? How we teach walks through a live class, and our courses list each syllabus in full.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
All classes are live over video, taught by teachers based in India, so students anywhere in Canada join from home. Send a WhatsApp message for the quickest answer.
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