II / FND / 01
Java for teens
For Grade 11 classes taught in Java.
Open the syllabusOntario · Grade 11 · University or college preparation
Every Ontario student who wants computer studies in Grade 11 meets the same fork in the course calendar: ICS3U, the university preparation course, or ICS3C, the college preparation course. The names sound alike and both teach programming, so families often pick on a guess. This page sets the two side by side on twelve points taken from the curriculum itself, shows one task of each kind in Python and Java, and gives a short way to decide. We support students in either course with live classes, and we do not grant Ontario credits: the credit always comes from the school.
Live online since 2020 · 10,000+ students · Help for either Grade 11 course
Which one?
ICS3U, Introduction to Computer Science, prepares Ontario Grade 11 students for university and leads to ICS4U. ICS3C, Introduction to Computer Programming, prepares them for college and apprenticeship and leads to ICS4C. Neither needs a prerequisite. Modern Age Coders teaches either course live online, one to one or in a group, through Ontario Computer Science Companion: ICS3U and ICS4U.
Help in either course
The companion course is built around the university track and also suits ICS3C students who want a firmer base. The other two match what each track leans on.

II / 01
Paced to the school outline for ICS3U, and useful for an ICS3C student thinking about the university route later.
Open the syllabus →
II / 02
Input, checking, loops and functions with real programs, the practical core both Grade 11 courses share.
Open the syllabus →
II / 03
Databases, which the curriculum names among the practical skills college preparation courses aim at.
Open the syllabus →From the curriculum
Both courses live in the same 2008 Computer Studies document and share a structure of four strands, so the differences sit in the detail of the expectations. The middle columns below are quoted from the document; the last column is our reading of what each difference means in class.
| Criterion | ICS3U says | ICS3C says | What it means (ours) |
|---|---|---|---|
| 1. What the course is for | University preparation courses help students “explore the theoretical underpinnings of computer science” | College preparation courses introduce “programs that focus on the practical skills businesses currently demand” | Why it works, against how to make it work |
| 2. The description | “Students will develop creative solutions for various types of problems as their understanding of the computing environment grows.” | “Students will write and test computer programs, using various problem-solving strategies.” | Both write real programs; U speaks of creative solutions, C of writing and testing |
| 3. Data | Students “declare, initialize, modify, and access one-dimensional arrays” | Students “use different data types in expressions in simple computer programs” | Arrays are central in U; C stays with single values and strings |
| 4. Subprograms | A strand A overall expectation of its own: “demonstrate the ability to use subprograms within computer programs” | In strand B: “write subprograms (e.g., functions, procedures) that perform one well-defined task” | Both write functions; U treats them as a core programming skill |
| 5. Problem-solving strategies | Listed with “stepwise refinement” first | Listed as “divide and conquer, working backwards, process analysis” and others | C adds process analysis, the habit of a business analyst |
| 6. Working with others | Strand B opens with solving problems “independently and as part of a team” | Strand B opens with “use a variety of problem-solving strategies to solve different types of problems”, and names no team | Teamwork is written into the U course’s problem solving |
| 7. Sample algorithms | Examples include how to “delete a datum from the middle of an array” | “validate entered data, count, accumulate, use random numbers” | U manipulates stored data; C makes input reliable |
| 8. Math in programs | “calculation of hypotenuse, determination of primes, calculation of area and circumference” | “calculation of gross pay; fuel consumption on a car trip; average of students' marks” | U leans on school geometry and number; C on everyday arithmetic |
| 9. When things go wrong | “detect, intercept, and handle exceptions” | “detect, intercept, and handle run-time errors” | The same skill, with U using the formal word exception |
| 10. Hardware | “relate the specifications of computer components to user requirements” | “demonstrate an understanding of the functions of different types of computer components” | U matches a machine to a need; C explains what each part does |
| 11. The fourth strand | Topics in Computer Science, with research areas such as “parallel processing, distributed computing” | Computers and Society: “describe and apply procedures for safe computing to safeguard computer users and their data” | U looks at research; C at safe, practical computer use |
| 12. The Grade 12 course it opens | ICS4U, Computer Science | ICS4C, Computer Programming | Each Grade 11 course is the prerequisite for its own Grade 12 course |
Much of the course is shared. Both ask for user input, processing and screen output; both use sequence, selection and repetition; both ask students to correct syntax, logic and run-time errors and to test their programs against a test plan. Both apply the same seven-phase software development life cycle to a project.
So an ICS3C class is not a lighter copy of ICS3U. It is a programming course with its own focus, and a student who does well in it has learned to write, test and fix real programs.
The gap is clearest in rows 3 and 7. ICS3U students spend weeks on arrays: storing a list of values, searching it, inserting into it and deleting from it. ICS3C students spend that time on making a program robust: checking what a user typed, counting and totalling, and handling a run-time error without crashing.
Row 1 explains why. The curriculum says college preparation courses aim at challenges “such as creating custom programs, tailoring existing program packages, and using database management systems and scripting languages”. That is a practical brief, and a good one for the right student.
Source: The Ontario Curriculum, Grades 10 to 12: Computer Studies (2008), the program overview, the course table and the ICS3U, ICS3C, ICS4U and ICS4C course pages, read 22 October 2026. The current Ontario curriculum website lists both Grade 11 courses with the issue year 2008. We have no connection with the Ontario Ministry of Education.
Two sample tasks, ours
Expectations are easier to compare as programs. We wrote one task in the spirit of each course, using examples the curriculum itself lists: fuel consumption on a car trip for ICS3C, and adding data to a sorted array for ICS3U. Neither is from any school’s course; all four programs were run.
Task C, the ICS3C kind. Ask for the distance of a trip in kilometres and the fuel used in litres, refuse anything that is not a sensible number, then print the fuel use in litres per 100 km and a one-word rating. The hard part is not the formula. It is the program’s behaviour when the user types four hundred, or a negative number.
# Fuel use for a car trip, with checked input (ours, an ICS3C-style task)
def read_number(prompt, low, high):
"""Keep asking until the user types a number from low to high."""
while True:
text = input(prompt)
try:
value = float(text)
except ValueError:
print("That is not a number. Try again.")
continue
if low < value <= high:
return value
print("Please type a number above", low, "and up to", high)
def litres_per_100_km(litres, km):
return litres / km * 100
km = read_number("Distance driven in km: ", 0, 5000)
litres = read_number("Fuel used in litres: ", 0, 500)
rate = litres_per_100_km(litres, km)
print("Fuel use:", round(rate, 1), "L/100 km")
if rate < 6:
print("Rating: efficient")
elif rate <= 10:
print("Rating: typical")
else:
print("Rating: thirsty")Run with the inputs four hundred, -20, 412 and 31.5, it rejects the first two, then prints Fuel use: 7.6 L/100 km and Rating: typical. The try and except block is the run-time error handling the ICS3C expectations ask for.
// Fuel use for a car trip, with checked input (ours, an ICS3C-style task)
import java.util.Scanner;
public class Fuel {
static Scanner in = new Scanner(System.in);
// Keep asking until the user types a number above low and up to high.
static double readNumber(String prompt, double low, double high) {
while (true) {
System.out.print(prompt);
String text = in.nextLine().trim();
try {
double value = Double.parseDouble(text);
if (value > low && value <= high) {
return value;
}
System.out.println("Please type a number above " + low + " and up to " + high);
} catch (NumberFormatException e) {
System.out.println("That is not a number. Try again.");
}
}
}
public static void main(String[] args) {
double km = readNumber("Distance driven in km: ", 0, 5000);
double litres = readNumber("Fuel used in litres: ", 0, 500);
double rate = litres / km * 100;
System.out.printf("Fuel use: %.1f L/100 km%n", rate);
}
}Same inputs, same result line. One small difference worth noticing: Java prints the limits as 0.0 and 5000.0 because they are doubles, where the Python version prints 0 and 5000.
Task U, the ICS3U kind. A list of marks is already sorted from low to high. Add a new mark so the list stays sorted, without calling a built-in sort or insert. The hard part is the shifting: every value larger than the new one moves one place to the right, starting from the end, and the new value drops into the gap.
# Add a value to a sorted list without sort() or insert() (ours, an ICS3U-style task)
def insert_sorted(values, new):
"""values is sorted from low to high. Return a new list with
new placed so the order is kept."""
result = values + [None] # one extra slot at the end
i = len(values) - 1
while i >= 0 and result[i] > new:
result[i + 1] = result[i] # shift bigger values one place right
i -= 1
result[i + 1] = new # the gap is where new belongs
return result
marks = [52, 61, 70, 84, 93]
print(insert_sorted(marks, 77))
print(insert_sorted(marks, 40))
print(insert_sorted(marks, 99))
print(insert_sorted([], 5))Prints [52, 61, 70, 77, 84, 93], then [40, 52, 61, 70, 84, 93], then [52, 61, 70, 84, 93, 99], then [5]. The last three lines test the edges: a new smallest value, a new largest value and an empty list.
// Add a value to a sorted array, keeping the order (ours, an ICS3U-style task)
import java.util.Arrays;
public class InsertSorted {
// count says how many slots of values are in use; the array has room for one more.
public static int insertSorted(int[] values, int count, int newValue) {
int i = count - 1;
while (i >= 0 && values[i] > newValue) {
values[i + 1] = values[i]; // shift bigger values one place right
i--;
}
values[i + 1] = newValue; // the gap is where newValue belongs
return count + 1; // one more slot is now in use
}
public static void main(String[] args) {
int[] marks = new int[6];
int[] start = {52, 61, 70, 84, 93};
for (int k = 0; k < start.length; k++) {
marks[k] = start[k];
}
int count = insertSorted(marks, 5, 77);
System.out.println(Arrays.toString(Arrays.copyOf(marks, count)));
}
}Prints [52, 61, 70, 77, 84, 93]. A Java array cannot grow, so the program keeps a count of the slots in use: a pattern ICS3U Java classes meet often.
| Task C (ICS3C kind) | Task U (ICS3U kind) | |
|---|---|---|
| Main skill | Checking input and handling errors | Moving data inside an array |
| Where students slip | Forgetting the user can type anything | Shifting from the front and overwriting values |
| Edge cases to test | Text, zero, a negative, a huge value | Smallest, largest, empty list |
| Typical bug | A crash on bad input | An index one past the end |
| Closest real job | A form or a till that must not crash | Keeping a leaderboard in order |
Students who enjoy Task U, where the challenge is in the logic of the data, tend to enjoy the direction ICS3U and then ICS4U take: searching, sorting, recursion and analysing algorithms.
Students who enjoy Task C, where the challenge is making a program behave well for a real person, often enjoy the direction ICS3C and ICS4C take: object-oriented programs with graphical interfaces, data validation and projects that look like workplace software.
Before any code, we ask students to write three lines: what goes in, what the program does with it, and what comes out. Both curriculum courses name this input-process-output model, and it is the step that turns a vague task into a plan.
Then they list the test cases before running anything. For Task C the list starts with text where a number should be. For Task U it starts with an empty list. Writing those down first is the habit we care about most in either course.
A way to decide
The curriculum’s own advice is short: “Students choose between course types on the basis of their interests, achievement, and postsecondary goals.” These steps, which are ours, turn that sentence into questions a family can answer at the kitchen table. The school’s guidance counsellor has the final word on any one student’s timetable.
| If the student... | Lean toward |
|---|---|
| plans a university degree in computer science, engineering or math | ICS3U |
| wants ICS4U in Grade 12 | ICS3U |
| plans a college diploma in programming or IT, or an apprenticeship | ICS3C |
| enjoys puzzles about data and order, like Task U | ICS3U |
| enjoys making a program behave well for its user, like Task C | ICS3C |
| has not decided between college and university | A talk with the counsellor first: ICS3U opens only ICS4U and ICS3C opens only ICS4C, so this choice sets the Grade 12 option |
The course table lists no prerequisite for ICS3U, which means a student with no coding background can enrol in it. The first unit is the same kind of programming in both courses, and the step up in ICS3U comes later, with arrays and subprograms.
What helps most is starting early. A student who has written a few small programs over the summer meets the array unit with confidence instead of panic. That is often where an outside teacher is most useful.
Students often take whichever course their friends picked. Computer studies is optional, and the Grade 11 choice shapes the Grade 12 choice through its prerequisite, so it is worth a ten-minute conversation about the destination first.
It is also worth remembering that a college preparation course is a real course with a real purpose. Students who take ICS3C because it fits their plans are not settling; they are choosing the course designed for where they are going.
Grade 12 and after
Each Grade 11 course opens its own Grade 12 course, and the two Grade 12 courses differ even more than the Grade 11 pair. Here they are, from the same 2008 document.
| After ICS3U: ICS4U | After ICS3C: ICS4C | |
|---|---|---|
| Full title | Computer Science, Grade 12, University Preparation | Computer Programming, Grade 12, College Preparation |
| Headline skill | Students “design a simple and efficient recursive algorithm” and “analyse algorithms for their effectiveness in solving a problem” | Students “design graphical user interfaces” and build object-oriented software |
| Sample work named | Searching, sorting, recursion, two-dimensional arrays | Rounding for “currency calculations, amortization, recipe volume changes”; validating “postal codes, telephone numbers, SINs” |
| Uses built-in tools | Students write their own searches and sorts | Students also use library routines, with the example “Arrays.sort(intArray)” |
| Half credit allowed | No: the document excludes “the Grade 12 university preparation course” | Yes, like the other courses in the document |
On 22 October 2026, the University of Waterloo’s Computer Science page named ICS3U by its title as the recommended course for Ontario applicants: “Grade 11 U Introduction to Computer Science”. It is the U course, not the C course, that the page names.
The University of Toronto’s Computer Science listings ask Ontario applicants for an OSSD with “six subjects at the 4U/M level”. ICS4C is a college preparation course, so on our reading it is not one of the 4U/M courses that line counts, while ICS4U is. Check each university’s page in the year your teen applies.
For college, the 2008 document is clear about the purpose: the C courses are designed for entrance “to most college programs” and for apprenticeship and other training. Individual college programs set their own admission requirements, so a family should read the requirements of the programs they are considering.
If plans change after Grade 11, the prerequisite rule matters: a student who took ICS3C and later wants ICS4U needs ICS3U first, because that is the prerequisite the course table lists.
How we help in each course
In both cases the plan comes from the outline the school handed out, in whichever language the school uses. The focus is different because the courses are different.
We spend the most time on arrays and subprograms: tracing a loop over an array by hand, rebuilding the standard array algorithms without notes, and passing values in and out of functions correctly. We also prepare the project plan before the project starts.
For students heading toward ICS4U, we often add a first look at searching and sorting near the end of Grade 11, so that Grade 12 begins as a second visit.
We spend the most time on making programs reliable: reading input safely, building test plans that include silly input, and finding the cause of a run-time error from its message. We also build small, practical programs the student cares about.
For students who may switch to the university route, we cover the array work that ICS3U adds, so the option stays realistic.
One regular teacher who learns the course outline, the language and the student’s habits, rather than a new face each week.
Students explain their plan in words before they type. We do not hand over answers, and we do not let an AI tool write the assignment.
Classes follow the school’s unit order, and the student’s teacher remains the person who marks and grants the credit.
Ready for Grade 11?
Our own checklist, used in a first class with students about to choose.
| Sign | What it looks like |
|---|---|
| 1. Follows a recipe | Can follow numbered steps exactly and spot when one is missing |
| 2. Thinks in cases | Asks what should happen if the input is empty, zero or nonsense |
| 3. Reads before running | Predicts what a five-line program prints before pressing Run |
| 4. Explains in words | Can say what a program does without reading it line by line |
None of these signs needs any coding experience. They are habits of careful thinking, and both courses build on them.
A student strong on signs 3 and 4 is usually ready for the pace of ICS3U, whatever their background.
Try Task C and Task U above on paper before reading the code. Notice which one you enjoyed more.
Then talk to your counsellor with that answer and your rough plan after high school.
Our catalogue
Each is a live course with one regular teacher, for a group or for a single student.
II / FND / 01
For Grade 11 classes taught in Java.
Open the syllabusII / FND / 02
Arrays, searching and sorting, step by step.
Open the syllabusII / FND / 03
Saving every version of a project safely.
Open the syllabusII / BLD / 01
Interfaces people can click and use.
Open the syllabusII / BLD / 02
From an idea to an app on a phone.
Open the syllabusII / BLD / 03
Safe computing, taken further.
Open the syllabusII / STR / 01
The Waterloo programming contest, prepared properly.
Open the syllabusII / STR / 02
Real data, cleaned and charted in Python.
Open the syllabusII / STR / 03
How models learn, built from the ground up.
Open the syllabusWhen and how
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
After school, at a time agreed in your Ontario time zone.
Weekends
Morning sessions for steady weekly practice.
1-on-1
Booked around the next test or project date.
Either Grade 11 course, from its own outline.
Whichever the class is taught in.
Input, process, output, then tests.
Explained clearly, never done for you.
The same person every week.
Fifteen to twenty students, or one.
Student work
A few projects from students who learned to program with us. The student labs page shows 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 first class is free. After that a monthly fee covers eight live classes a month; the figure below appears in your local currency, and there is no long contract, so you can stop at the end of a month.
Free first class
Free
no card required
Group batch
$100 USD
a month, eight live classes
One to one
$150 USD
a month, eight live classes
What families say
Google reviews from families, printed as they wrote them.
★★★★★
"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 families ask
ICS3U, Introduction to Computer Science, is the Grade 11 university preparation course and leads to ICS4U. ICS3C, Introduction to Computer Programming, is the Grade 11 college preparation course and leads to ICS4C. ICS3U puts more weight on arrays and the theory behind programs; ICS3C puts more weight on practical, reliable programs.
ICS3C is Introduction to Computer Programming, Grade 11, College Preparation, described in Ontario's 2008 Computer Studies curriculum. Students write and test programs, learn program design, run a project with a software development life cycle, and study computer components, safe computing and careers.
No. The 2008 curriculum lists no prerequisite for ICS3C or for ICS3U, and the current Ontario curriculum website shows none either.
Not directly. The prerequisite for ICS4U is ICS3U. ICS3C is the prerequisite for ICS4C, the Grade 12 college preparation course. A student who wants ICS4U after ICS3C should talk to the school counsellor about taking ICS3U first.
It is different rather than simply easier. ICS3C spends less time on arrays and more on input checking, counting, totalling and handling run-time errors. Both courses ask students to write, test and debug real programs.
On 22 October 2026, the University of Waterloo named Grade 11 U Introduction to Computer Science, which is ICS3U, as its recommended course for Computer Science. University computer science programs mostly require Grade 12 math and English; check each program's own page in the year you apply.
The 2008 curriculum says college preparation courses are designed to help students meet the requirements for entrance to most college programs or for admission to apprenticeship or other training programs. Each college program sets its own admission requirements, so check the programs you are considering.
Yes. We help students in either course, in the language their school uses, working from their own course outline and assignments.
No. Our classes are teaching and practice beside the school course, and we do not grant Ontario credits. The credit comes from the school or credit provider that teaches and evaluates the course.
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 set the time in your own Ontario time zone.
The first class is free. After that families pay a monthly fee and can stop at the end of any month. The fees section shows the current figure for a batch and for one to one.
Related reading
Pages that pick up where this one stops.
The university track course in depth, with practice questions.
Live classes for learners of every age in the province.
The Grade 11 and 12 math that sits beside computer studies.
A contest open to students in either course through their school.
The planning habit both courses reward.
For families whose school offers a choice of language.
All our pages for Canadian families.
Start here
Tell us which course your teen is taking or considering, the language the school uses and what they hope to do after high school. The first class works on a real task at their level.
Reading first is fine. The companion course syllabus lists the Grade 11 weeks, and our teaching method is set out in full.
WhatsApp us · +91 91233 66161 · connect@modernagecoders.com
All classes are live video lessons with teachers working from India, so there is nowhere to travel to. From Ontario, a WhatsApp message gets the quickest 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