Ontario · Grades 11 and 12 · Final exam review

ICS3U and ICS4U exam review: two mock exams and how to mark them

Revision pays off most when it is done against a real paper, marked honestly. So we wrote two: a 50-mark ICS3U mock and a 40-mark ICS4U mock, each with every answer and a marking guide that shows where the marks go. Neither is any school’s exam, and neither predicts what yours will contain; your teacher’s outline does that. Both are built on the achievement chart in the Ontario curriculum, so the practice covers all four categories a teacher assesses. We get students ready for the school’s exam, but we do not grant Ontario credits; the exam and the credit belong to the school.

Live online since 2020 · 10,000+ students · Exam practice in Python or Java

What this page gives you

ICS3U and ICS4U exam review for Ontario Grade 11 and 12 computer science: an original 50-mark ICS3U mock exam and a 40-mark ICS4U mock, with answers and a marking guide sorted by the four achievement chart categories. Modern Age Coders runs live online exam practice, for a group or one student, through Ontario Computer Science Companion: ICS3U and ICS4U.

Exam preparation with a teacher

Three courses for the run-up to a final

The companion course builds exam practice into its last weeks. The other two strengthen the two areas these mocks test most.

How the mark is built

How ICS3U and ICS4U are marked, from the curriculum

Before practising, it helps to know what a teacher is looking for. The 2008 Computer Studies curriculum sets the rules every Ontario school follows, and two parts of it matter most at exam time: how the final grade splits, and the four categories on the achievement chart.

The final grade

Most of the grade, 70 per cent of it, is earned before the final, from work evaluated during the course. The curriculum adds that this part “should reflect the student’s most consistent level of achievement throughout the course, although special consideration should be given to more recent evidence of achievement.”

The remaining 30 per cent comes from a final evaluation near the end of the course, which the document allows to be an examination, a performance, an essay or another method that suits the course. In computer science that is often a written exam, a coding task, a project or a combination; your teacher decides.

The credit line

The achievement chart ends with a plain rule: “A student whose achievement is below 50% at the end of a course will not obtain a credit for the course.” Each level on the chart has a percentage band: 50 to 59 for level 1, 60 to 69 for level 2, 70 to 79 for level 3 and 80 to 100 for level 4.

Level 3 is called the “provincial standard”, and the document is reassuring about it: “Parents of students achieving at level 3 can be confident that their children will be prepared for work in subsequent courses.”

The four achievement chart categories, defined in the 2008 Computer Studies curriculum, and what each looks like on an exam (definitions quoted; the last column is ours)
CategoryThe curriculum’s definitionOn a computer science exam (ours)
Knowledge and Understanding“Subject-specific content acquired in each course (knowledge), and the comprehension of its meaning and significance (understanding)”Vocabulary, error types, what a line of code does, number systems
Thinking“The use of critical and creative thinking skills and/or processes”Tracing, finding and fixing a bug, choosing test cases; the chart names “detecting and correcting flaws”
Communication“The conveying of meaning through various forms.”Explaining a concept in sentences, pseudocode, clear names and comments
Application“The use of knowledge and skills to make connections within and between various contexts.”Writing working code for a task you have not seen in exactly that form

What the levels mean

The chart describes each level with one qualifier, used the same way in every category: “limited for level 1, some for level 2, considerable for level 3, and a high degree or thorough for level 4”. A level 4 trace is not a longer trace; it is one done with a high degree of effectiveness.

The document also corrects a common belief: level 4 “does not mean that the student has achieved expectations beyond those specified for a particular course”. Top marks come from doing the course’s own work very well, not from extra topics.

Why our mocks use all four

The curriculum tells teachers to assess “in a balanced manner with respect to the four categories”. Students tend to revise only Application, which means writing code, and then lose marks on a written explanation or a trace.

So every question in our two mocks is tagged with one category, and the marking guides total the marks by category. A student can see at a glance whether the weak spot is knowing, thinking, explaining or doing.

Source: The Ontario Curriculum, Grades 10 to 12: Computer Studies (2008), sections on the achievement chart and on evaluation and reporting, read 22 October 2026. The percentage bands are paraphrased from the chart’s column headings. No ministry or school board has any part in these mocks.

The two papers at a glance

What the mocks test, mapped to the curriculum

Both mocks are ours. Each question below is tied to a specific expectation code in the 2008 curriculum, so a student who misses a question knows exactly which part of the course to revisit.

ICS3U mock: questions, expectations and marks (ours; expectation codes from the 2008 curriculum)
QTopicICS3U expectationCategoryMarks
1Name three errorsA4.1Knowledge and Understanding3
2A range that counts downA2.2Knowledge and Understanding2
3Integer division and remainderA1.4Knowledge and Understanding3
4Binary and hexadecimalA1.2Knowledge and Understanding2
5Parameter and return valueA3.2Knowledge and Understanding2
6Trace a nested loopA4.4Thinking4
7Find and fix a logic errorA4.1Thinking4
8Choose test casesB4.4Thinking4
9Write count_vowelsA3.2Application5
10Average and count above itA2.3Application8
11Write a linear searchA2.3Application5
12Compiler and interpreterC3.4Communication4
13Pseudocode before codeB2.4Communication4
ICS4U mock: questions, expectations and marks (ours; expectation codes from the 2008 curriculum)
QTopicICS4U expectationCategoryMarks
1Trace a recursive power methodA3.6Thinking4
2Count the comparisons in selection sortC2.3Knowledge and Understanding4
3Trace binary searchA3.2, C2.2Thinking4
4Write a Clock classA2.2, C1.2Application10
5Column totals in a gridA3.5Application6
6Three kinds of testingA4.2Communication6
7A negative exponentC2.4, A1.1Thinking6

Totals by category

ICS3U, 50 marks: Knowledge and Understanding 12, Thinking 12, Application 18, Communication 8. ICS4U, 40 marks: Knowledge and Understanding 4, Thinking 14, Application 16, Communication 6.

The ICS4U paper leans on Thinking because Grade 12 adds recursion and algorithm analysis, both of which are reasoning before they are code. Your school’s split may differ; ask the teacher how the final is weighted.

The rules for sitting them

Sit each one in one go, on paper, with no notes and no computer: 75 minutes for ICS3U and 60 for ICS4U. Write code by hand where a question asks for code. Mark it with the guide only after the time is up.

Both papers use Python for most code. Where a question gives Java, read it as Java; where it asks you to write code, use whichever language your class uses.

Mock exam one, ours

The ICS3U mock exam: 50 marks, 75 minutes

Written by our teachers for this page, at the level of a Grade 11 final. It is not taken from any school, board or past exam. Answer every question before opening the marking guide below it.

Section 1: Knowledge and Understanding (12 marks)

  1. (3 marks) Name the kind of error in each: (a) print("hello" with the closing bracket missing; (b) a program meant to average four numbers divides their total by 3; (c) a program reads nums[5] from a list of five numbers.
  2. (2 marks) What does the loop below print?
  3. (3 marks) What exact line does the Java statement below print?
  4. (2 marks) Convert the binary number 101101 to decimal, then convert your answer to hexadecimal.
  5. (2 marks) In one sentence each, define a parameter and a return value.
Question 2 · Pythonpython
for k in range(10, 0, -3):
    print(k, end=" ")
Question 3 · Javajava
System.out.println(17 / 5 + " " + 17 % 5 + " " + 17.0 / 5);

Section 2: Thinking (12 marks)

Question 6 (4 marks). Trace the program below and write exactly what it prints.

Question 6 · Pythonpython
rows = 4
for r in range(1, rows + 1):
    line = ""
    for c in range(r):
        line = line + str(c + 1)
    print(line)

Question 7 (4 marks). This Java code should print the average of the three marks, about 81.67, but prints 81.0. Explain why, name the kind of error, and fix it.

Question 7 · Javajava
int[] marks = {70, 85, 90};
int total = 0;
for (int m : marks) total += m;
double average = total / marks.length;
System.out.println(average);

Question 8 (4 marks). Choose four years to test the function below. For each, give the expected result and say what the test checks. Do not run it.

Question 8 · Pythonpython
def is_leap_year(year):
    if year % 400 == 0:
        return True
    if year % 100 == 0:
        return False
    return year % 4 == 0

Section 3: Application (18 marks)

Question 9 (5 marks). Write a function count_vowels(word) that returns how many of a, e, i, o, u appear in a word, in upper or lower case.

Question 10 (8 marks). Store these five temperatures in an array or list: -3, 4, 11, -8, 6. Print their average, then print how many are above the average. Do not use a built-in average function.

Question 11 (5 marks). Write linear_search(values, target) that returns the index of the first value equal to target, or -1 if there is none.

Section 4: Communication (8 marks)

Question 12 (4 marks). In three or four sentences, explain the difference between a compiler and an interpreter, and say which one your class language uses.

Question 13 (4 marks). Write the pseudocode you would plan before coding Question 10. Use numbered steps and clear names.

Marking guide, ours

ICS3U mock: answers and marking guide

Mark honestly, and give part marks only where the guide does. Every program was run in Python 3.13 or Java 22 to confirm the values.

ICS3U mock marking guide (ours)
QFull-mark answerWhere the marks go
1(a) syntax error; (b) logic error; (c) run-time errorOne mark each. Logic means it runs but gives a wrong answer; run-time means it stops while running
210 7 4 1One mark for starting at 10 and stepping by -3, one for stopping before 0
33 2 3.4One mark per part: int division, the remainder, then decimal division because 17.0 is a double
445 in decimal, 2D in hexadecimal32 + 8 + 4 + 1 = 45; 45 is 2 sixteens and 13, and 13 is D. One mark each
5A parameter is a value a function receives when it is called; a return value is the value it sends backOne mark each; an example earns the mark if the sentence is vague
6Four lines: 1, 12, 123, 1234One mark per correct line. The inner loop runs r times on row r
7total / marks.length divides two ints, so 245 / 3 is 81 before it becomes a double. Logic error. Fix: (double) total / marks.length, which prints 81.66666666666667One for the cause, one for naming a logic error, two for a working fix
82024 True (divisible by 4); 2023 False (not divisible by 4); 1900 False (divisible by 100 but not 400); 2000 True (divisible by 400)One mark per year with its reason. Missing 1900 or 2000 means the century rules were never tested
9See the code below. Saskatchewan gives 4 and rhythm gives 0Two for the loop, one for the vowel test, one for handling capitals, one for returning rather than printing
10Average 2.0, and 3 values above it (4, 11 and 6)Two for storing the values, two for the total, one for the average, two for the second loop, one for both outputs
11See the code below. [4, 9, 2, 9] with target 9 gives 1; target 7 gives -1Two for the loop, one for returning the index at the first match, two for returning -1 only after the loop ends
12A compiler translates the whole program before it runs; an interpreter translates and runs it line by line. Java is compiled to bytecode first; Python runs through an interpreterOne for each definition, one for a correct example, one for clear sentences
13Numbered steps: store the five values; set total to 0; add each value; average is total divided by the count; set above to 0; for each value, if it is greater than the average add 1; print bothTwo for the right steps in order, two for clarity a classmate could code from
Answer 9 · Python (ours)python
def count_vowels(word):
    count = 0
    for ch in word.lower():
        if ch in "aeiou":
            count += 1
    return count

print(count_vowels("Saskatchewan"))   # 4
print(count_vowels("rhythm"))         # 0
Answer 10 · Java (ours)java
double[] temps = {-3, 4, 11, -8, 6};
double sum = 0;
for (int i = 0; i < temps.length; i++) {
    sum += temps[i];
}
double avg = sum / temps.length;
int above = 0;
for (int i = 0; i < temps.length; i++) {
    if (temps[i] > avg) {
        above++;
    }
}
System.out.println(avg + " " + above);   // 2.0 3
Answer 11 · Python (ours)python
def linear_search(values, target):
    for i in range(len(values)):
        if values[i] == target:
            return i          # the first match wins
    return -1                 # checked everything: not there

print(linear_search([4, 9, 2, 9], 9))   # 1
print(linear_search([4, 9, 2, 9], 7))   # -1

A common mistake is an else: return -1 inside the loop. That returns after checking only the first value, so linear_search([4, 9, 2, 9], 9) would wrongly give -1.

Reading your score

Total your marks by section as well as overall. A student with 16 of 18 in Application but 4 of 12 in Thinking needs tracing practice, not more coding, even though the total looks fine.

Questions 7 and 8 are the ones most students drop marks on. Both reward slowing down: working out what a line really does, and choosing tests at the edges rather than in the middle.

If you scored low on one section

Knowledge and Understanding: make flash cards for error types, operators and number systems. Thinking: trace three short programs a day on paper. Application: rewrite questions 9 to 11 from a blank file, then change the task slightly and write them again.

Communication: explain one concept a day out loud in four sentences, then write it down. Pseudocode improves fastest when someone else tries to follow yours.

Mock exam two, ours

The ICS4U mock exam: 40 marks, 60 minutes

Written by our teachers for this page, at the level of a Grade 12 final. Like the first mock, it is ours alone and not drawn from any school’s exam. Questions 1 and 7 use the same recursive method below.

For Questions 1 and 7 · Pythonpython
def power(base, exp):
    if exp == 0:
        return 1
    half = power(base, exp // 2)
    if exp % 2 == 0:
        return half * half
    return half * half * base
  1. Question 1 (4 marks, Thinking). What does power(2, 10) return, and how many times is power called in total, counting the first call? Why is that fewer than ten?
  2. Question 2 (4 marks, Knowledge and Understanding). Selection sort is run on a list of six numbers. How many comparisons does it make if the list is already sorted, and how many if it is shuffled? Give the formula for n items, and name a sort that does far fewer comparisons on an already sorted list.
  3. Question 3 (4 marks, Thinking). Using the list below, write each middle index and value that binary search checks when searching for 58, and then for 10. Say what each search returns.
  4. Question 4 (10 marks, Application). Write a class Clock that stores hours (0 to 23) and minutes (0 to 59) as private data, refuses an invalid time when it is created, has a method tick() that moves forward one minute and wraps from 23:59 to 00:00, and prints itself as HH:MM.
  5. Question 5 (6 marks, Application). Write code that prints the total of each column of the grid below as a list.
  6. Question 6 (6 marks, Communication). Explain unit testing, integration testing and regression testing, with one example of each using your Clock class.
  7. Question 7 (6 marks, Thinking). What happens when power(2, -1) is called in Python? The same method written in Java with int division returns a number instead. What number, and why do the two languages differ? How would you fix the method?
For Question 3python
vals = [3, 8, 12, 15, 21, 26, 30, 34, 41, 47, 52, 58, 63, 70, 77]
# binary search with lo = 0, hi = 14, mid = (lo + hi) // 2
For Question 5python
grid = [[2, 7, 1, 8],
        [2, 8, 1, 8],
        [4, 5, 9, 0]]

Marking guide, ours

ICS4U mock: answers and marking guide

The same rules: mark only after the full 60 minutes, and give part marks only as the guide allows. All values were checked by running the code.

ICS4U mock marking guide (ours)
QFull-mark answerWhere the marks go
1It returns 1024, in 5 calls: exponents 10, 5, 2, 1 and 0. Each call halves the exponent, so the number of calls grows with the number of halvings, not with the exponent itselfOne for 1024, one for 5 calls, two for the halving explanation
215 comparisons in both cases. Selection sort always compares every remaining pair: n(n - 1) / 2. Insertion sort needs only n - 1, which is 5 here, on a sorted listOne for 15 sorted, one for 15 shuffled, one for the formula, one for naming insertion sort with its count
3For 58: index 7 (34), then index 11 (58), found, returns 11. For 10: index 7 (34), index 3 (15), index 1 (8), index 2 (12), then lo passes hi, returns -1Two for each search: one for the sequence of middles, one for the return value
4See the code below: private fields, a validating constructor, tick() with the wrap at 60 minutes and 24 hours, and a two-digit HH:MM string. From 23:58, two ticks give 23:59 then 00:00Two for private fields, two for validation, three for tick() including both wraps, two for the formatted string, one for a test of the midnight case
5[8, 20, 11, 16]Two for the nested loops, two for adding grid[r][c] into the right column, one for the list, one for the correct output
6Unit: test tick() alone, for example 9:05 ticked 60 times gives 10:05. Integration: test Clock inside the program that uses it, such as an alarm that checks the time. Regression: rerun all the old tests after any change to ClockTwo marks for each kind: one for the definition, one for a sensible example
7Python raises RecursionError: -1 // 2 is -1, so exp never reaches 0. Java int division rounds toward zero, so -1 / 2 is 0 and the base case is reached, but -1 % 2 is -1, so the odd branch returns 1 * 1 * 2, which is 2, a wrong answer. Fix: reject a negative exponent at the start, or return 1 / power(base, -exp) using a decimal typeTwo for the Python behaviour with its reason, two for the Java value with its reason, two for a working fix
Answer 4 · Java (ours)java
// A 24-hour clock that keeps its own time valid (ours, mock exam answer)
public class Clock {
    private int hours;     // 0 to 23
    private int minutes;   // 0 to 59

    public Clock(int hours, int minutes) {
        if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) {
            throw new IllegalArgumentException("not a valid time");
        }
        this.hours = hours;
        this.minutes = minutes;
    }

    // Move forward one minute, wrapping past 23:59 to 00:00.
    public void tick() {
        minutes++;
        if (minutes == 60) {
            minutes = 0;
            hours = (hours + 1) % 24;
        }
    }

    @Override
    public String toString() {
        return String.format("%02d:%02d", hours, minutes);
    }

    public static void main(String[] args) {
        Clock c = new Clock(23, 58);
        c.tick();
        System.out.println(c);      // 23:59
        c.tick();
        System.out.println(c);      // 00:00
        Clock d = new Clock(9, 5);
        for (int i = 0; i < 60; i++) {
            d.tick();
        }
        System.out.println(d);      // 10:05
    }
}
Answer 4 · Python (ours)python
class Clock:
    """A 24-hour clock that keeps its own time valid (ours)."""

    def __init__(self, hours, minutes):
        if not (0 <= hours <= 23 and 0 <= minutes <= 59):
            raise ValueError("not a valid time")
        self._hours = hours
        self._minutes = minutes

    def tick(self):
        """Move forward one minute, wrapping past 23:59 to 00:00."""
        self._minutes += 1
        if self._minutes == 60:
            self._minutes = 0
            self._hours = (self._hours + 1) % 24

    def __str__(self):
        return f"{self._hours:02d}:{self._minutes:02d}"


c = Clock(23, 58)
c.tick()
print(c)      # 23:59
c.tick()
print(c)      # 00:00

Both versions print 23:59 and then 00:00. The Java main also checks a full hour: 09:05 ticked 60 times prints 10:05.

What question 7 is really testing

Two languages, one method, two different failures. Python’s floor division sends -1 to -1 forever, which is the infinite recursion pitfall the ICS4U curriculum names. Java’s division reaches the base case and returns a confident wrong answer, which is worse, because nothing warns you.

The lesson: a recursive method needs a precondition, here that the exponent is not negative, and the method should check it rather than trust the caller.

Where Grade 12 students lose marks

On Question 4, most lost marks are the wrap: forgetting that hours must also wrap at 24, or printing 0:0 instead of 00:00. On Question 3, students often check the wrong middle after moving lo or hi by mid instead of mid plus or minus one.

On Question 2, many write that a sorted list makes selection sort faster. It does not; it still compares every pair. Knowing which algorithms care about their input is a classic Grade 12 analysis point.

For the first test of the year

ICS3U Unit 1 test: a quick check, ours

Schools choose their own unit order, so Unit 1 is not the same everywhere. In the classes our students attend, the first test usually covers variables, operators and simple output, so here is a short check on exactly those, with answers. Predict each printed line before you run anything.

Unit 1 check · Python (ours)python
print(15 // 4, 15 % 4, 15 / 4)

a = 5
b = 9
a = b
b = a
print(a, b)

print("ha" * 3)
print(3 > 2 and 2 > 3, 3 > 2 or 2 > 3)

c = 25
f = c * 9 / 5 + 32
print(f)

Five things are printed. Write all five on paper first.

  1. 3 3 3.75. // keeps the whole part, % gives the remainder, and / gives the exact decimal. 15 is 3 fours with 3 left over.
  2. 9 9. After a = b, the 5 is gone. Then b = a copies 9 back into b. Swapping needs a third variable, or Python’s a, b = b, a.
  3. hahaha. Multiplying text by a whole number repeats it.
  4. False True. and needs both sides true; or needs at least one.
  5. 77.0. 25 times 9 is 225, divided by 5 is 45.0, plus 32 is 77.0. The / makes it a decimal even though the answer is whole.

Scored four or five?

You are ready for a first unit test on these basics. Spend your remaining time on the habit that matters for the rest of the course: predicting the output of short programs before running them.

Then try Section 1 of the ICS3U mock above. Its questions start at about this level and climb.

Scored three or fewer?

Go back to each one you missed and change a single value, then predict again. The swap question in particular trips up students at every level, and it reappears later when sorting arrays.

A teacher who watches you trace one program out loud can usually find the misunderstanding in a few minutes. That is often the fastest fix.

Using the mocks well

How to turn a mock exam into marks: a six-step routine

A mock is only useful if it changes what you do next. This routine is ours, and it works for these two papers and for your own old tests.

  1. Sit it cold, timed and on paper. No notes, no computer, the full time. The point is to find out what you can do under exam conditions, not what you can look up.
  2. Mark it the same day with the guide. Give yourself only the part marks the guide allows. Be strict; a teacher will be.
  3. Total by category. Knowledge and Understanding, Thinking, Communication, Application. Your lowest category is your revision plan for the week.
  4. Write an error log. For every lost mark, write the question, what you wrote, what was right, and why you missed it in one line. Patterns appear by the third entry.
  5. Redo the missed questions from scratch two days later. Not from memory of the answer: from a blank page. If you get it right, it counts as learned.
  6. Sit the other mock, or one of your own old tests, a week later. Compare category totals. The weak category should have moved.
What to do with a mock score (ours; a mock score is a practice signal, not an achievement chart level)
Mock scoreWhat it suggestsNext step
80 per cent or moreStrong on this materialPractise timing and the written explanations; try harder variants
70 to 79 per centSolid, with gapsFix the lowest category first, then resit
60 to 69 per centUnevenDaily tracing and a full redo of missed questions
Under 60 per centImportant gapsRebuild one unit at a time, with help from a teacher

The bands above follow the achievement chart’s percentage columns on purpose, but a mock score is not a level. Your teacher evaluates your work against the course expectations, across the whole course, and only the school’s own evaluation counts toward the final grade.

Exam help, not the credit

What our exam preparation is, and what it is not

We prepare students for their school’s exam. We do not set it, see it in advance or mark it, and the credit is the school’s alone.

What a session looks like

A student brings their course outline, their old tests and the date of the final. We sit a mock together or set one as homework, mark it with them, and spend the session on the lowest category: often tracing for Grade 11 and recursion for Grade 12.

In the last week we switch to short timed sets and explanation practice, because the night before is not the time for new topics.

Where the credit comes from

Only the school, night school, summer school or credit provider that teaches and evaluates ICS3U or ICS4U can grant its credit. Modern Age Coders runs classes beside that course; we do not grant Ontario credits and we never contact a school about a student’s exam.

We will not write any part of a student’s graded work, and we will not help anyone cheat on an exam. Practice papers like the two above exist so that a student can earn the mark themselves.

Exam readiness

Four stages of exam readiness

Our own stages, from preparing Grade 11 and 12 students for computer science finals.

From knowing the course to ready for the final (ours)
StageWhat it looks like
1. RecognisesUnderstands the answer when shown it, but could not have written it
2. RecallsWrites standard algorithms from memory, slowly and with notes nearby
3. PerformsCompletes a full mock in the time, on paper, at a steady pace
4. ExplainsSays why each answer is right, in clear sentences, and catches their own errors

For parents

Most students overestimate their stage, because recognising an answer feels like knowing it. A timed mock is the honest test.

Ask to see the category totals, not just the score. They show what kind of help is needed.

For students

Stage 1 to stage 2 is about rewriting from a blank page. Stage 2 to 3 is about the clock. Stage 3 to 4 is about talking through your work.

Keep the error log. Rereading it the night before is better revision than a new topic.

Further study

Nine courses for after the exam, or before the next one

Each runs live with a regular teacher, for a batch or one student.

I

Grade 11 and 12 support

Grades 11 and 12

IIER / SUP / 02

Git and GitHub for teens

Tidy project history before the final project is due.

Open the syllabus

IIER / SUP / 03

C++ for teens

A third language once the course is done.

Open the syllabus
II

Contests

Grades 9 to 12

IIER / CON / 01

CCC Junior and Senior preparation

Timed problem solving, the next level after a final.

Open the syllabus

IIER / CON / 03

Hackathon preparation

A weekend build with a team.

Open the syllabus
III

Beyond the course

Teens

IIER / BYD / 01

AI and machine learning for teens

Models built and tested from scratch.

Open the syllabus

IIER / BYD / 02

Full stack web development

A complete web app, front to back.

Open the syllabus

IIER / BYD / 03

Data science for teens

Real data in Python, from question to chart.

Open the syllabus

Class times

Exam practice that fits the last weeks of a semester

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

Evening sessions for timed sets during exam season.

Weekends

Longer mornings for a full mock and its marking.

1-on-1

Booked close to the exam date for final review.

Timed mocks

Sat on paper, under real conditions.

Marked together

Category by category, honestly.

Error logs

Kept and reviewed every session.

Python or Java

The language of the class.

One teacher

Who knows the student’s weak spots.

Batch or one to one

Fifteen to twenty, or just one.

Student work

Student projects

Some of what students have built with us once exams were done. The student labs page has more.

NutriLife AI nutrition coach project screenshot

AI and ML

NutriLife

An AI nutrition coach that reads what you eat and works you toward a target.

by Bhavya · Open it

Misti AI chatbot for maths and coding screenshot

AI and ML

Misti

A chatbot that answers mathematics and programming questions, built and deployed by a student.

by Harshit · Open it

GuardianX AI internet safety assistant screenshot

AI and ML

GuardianX

An assistant that helps a young person recognise unsafe situations online.

by Vivaan · Open it

SkyCast weather forecast application screenshot

Web app

SkyCast

A weather forecasting site with live conditions for any location.

by Krish

Fees

Fees

Your first class costs nothing. Families then pay a monthly fee for eight live classes a month, displayed below in your currency, with no contract beyond the month, so you can stop once the exam is over.

Free first class

Free

no card required

  • A free first class
  • Bring an old test or the outline
  • No card needed
Book it

Group batch

$100 USD

a month, eight live classes

  • Fifteen to twenty per batch
  • One regular teacher
  • Batch time of your choice
  • Paid each month
Start here

One to one

$150 USD

a month, eight live classes

  • A private teacher
  • Sessions near the exam date
  • Planned from their own tests
Enquire

What families say

Rated 4.9 across 547 Google reviews

Families on Google, in their own words.

★★★★★

"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

Exam questions from families

ICS3U and ICS4U exams: common questions

How much is the ICS3U or ICS4U final exam worth?

Under the 2008 Ontario curriculum, 30 per cent of the final grade comes from a final evaluation near the end of the course, such as an examination, a performance or another suitable method, and 70 per cent from evaluations during the course. Each school decides what its final evaluation contains.

What is on the ICS3U final exam?

It depends on the school and the teacher. ICS3U covers data types, one-dimensional arrays, control structures, subprograms, debugging and testing, software development, computer systems and topics in computer science, so finals usually draw on those. Ask the teacher what the final evaluation includes.

What is on the ICS4U final exam?

Again it depends on the school. ICS4U adds modular and object-oriented design, searching and sorting, recursion, algorithm analysis, formal testing and a team project, so Grade 12 finals usually include tracing recursion, comparing algorithms and writing classes.

Are these real exam questions?

No. Both mock exams were written by our teachers for this page. They are not taken from any school, board or past exam, and they do not predict what any particular exam will contain.

How are ICS3U and ICS4U exams marked?

Teachers use the achievement chart in the 2008 curriculum, which has four categories: Knowledge and Understanding, Thinking, Communication and Application. Our marking guides tag every question with one category so a student can see which one needs work.

What mark do I need to pass ICS3U or ICS4U?

The 2008 curriculum says a student whose achievement is below 50 per cent at the end of a course will not obtain a credit for it. Level 3, 70 to 79 per cent, is called the provincial standard.

How should I study for the ICS3U final?

Sit a timed mock on paper, mark it strictly, total the marks by category, keep an error log, redo missed questions from a blank page two days later, and sit a second paper a week after. Trace short programs by hand every day.

What is usually on an ICS3U Unit 1 test?

Schools set their own unit order. In our experience a first unit often covers variables, data types, operators and simple input and output. The Unit 1 check on this page tests exactly those, with answers.

Do you give credits or official exam results?

No. We prepare students beside the school course and do not grant Ontario credits. Exams, marks and credits come only from the school or credit provider that teaches the course.

When can we book exam practice sessions?

Weekdays or weekends, flexible: choose your batch, or for a very personalised plan choose 1-on-1 at your convenience, weekend mornings or weekdays. Times are set in your own Ontario time zone.

What do exam practice classes cost?

The first class is free. After that families pay a monthly fee and can stop at the end of any month, including straight after the exam. The fees section shows the current figure.

Other guides

More for Grade 11 and 12 computer science

Course guides and study help for Ontario students.

ICS3U computer science help

The Grade 11 course explained, strand by strand.

How to read code

The core skill behind every tracing question.

How to debug code

Finding the cause of an error instead of guessing.

Recursion explained

Before the ICS4U mock, if recursion still feels strange.

Coding classes in Ontario

Live classes for every age in Ontario.

CCC preparation

For students who enjoyed the hardest questions here.

Canada

Every Canadian page on this site.

Start here

Book a free first class

Tell us the course, the language, the exam date and one topic that worries your teen. The first class is a short mock on that topic, marked together.

To read more first, see the companion course syllabus, which includes its exam weeks, or how we teach.

WhatsApp us · +91 91233 66161 · connect@modernagecoders.com

Lessons are live online with teachers who work from India, so exam practice fits around school without any travel. WhatsApp is the fastest way to reach us from Ontario.

Booking the free class asks for no card at all.

Want a class sooner? Book a priority demo

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

Keep exploring Modern Age Coders

Related courses and guides

Free resources

From the blog

Start here

Free classPriority demoCall us