FL
📖 Topic 11 Programming scenarios · Page 11.1–11.2

11.1–11.2 Read Lab

Before you write any code, read the scenario. Pick out the inputs, processes and outputs, note every named data structure, and list every requirement. Once that plan is complete, the coding can begin.

🧪 Exam Mode ON — recall from memory, then reveal
§1 · Topic Overview

Why the scenario question matters

Paper 2 ends with a 15-mark programming scenario question — about a fifth of the paper. You are given a real-world problem in words and asked to write a complete program for it. With 75 marks in 1 hour 45 minutes, plan on spending about 20–25 minutes on it.

You can answer in pseudocode or in program code (Python, Java or Visual Basic). The activities on this site read pseudocode.

A Cambridge examiner report (2024) noted that candidates whose answers closely matched the requirements in the scenario, and covered every point, achieved the highest marks. Careful reading is how you get there.

📖 The blueprint idea

"Analyse the scenario before you code." This Read Lab is the drawing office: you read the problem and draw up the plan. The Build Lab practises the code patterns. The Ship Lab puts it all together into a complete answer.

§2 · Learning Objectives

By the end of this lab you will be able to:

  • Read a scenario and list every named data structure, using the names given
  • Tell a 1D array, a 2D array and a single variable apart from the wording
  • List every requirement under "Write a program that…"
  • Sort each requirement into Input, Process or Output (an IPO table)
  • Spot the expected extras that aren't bullet-listed: validation of inputs, messages, comments
  • Spot words that signal totals, counts, averages, highest and lowest
  • Check your plan against the requirement list before writing any code
§3 · Key Terminology

Nine terms for reading a scenario

Programming scenario — a real-world problem described in words, answered with a complete program
Requirement — one thing the program must do, usually listed under "Write a program that…"
Input — data the program takes in, usually typed by the user
Process — something the program does with data: calculate, count, total, compare, check, store
Output — results the program displays, each with a message explaining it
Data structure — a named way of storing data in the scenario: usually 1D or 2D arrays, plus variables
Validation — checking an input meets set rules before it is used, and asking again if it doesn't. Validate every input your program takes.
Totals, counts and extremes — summarising many values into one: total, count, average, highest, lowest
IPO table — three columns (Inputs · Processes · Outputs) listing everything the program does. The plan you make before coding.
§4 · Core Theory · the reading method

§4.1 · Read the scenario twice

First read for the big picture: what does the program do overall? Second read for detail: what does each sentence ask for? The second read catches the things that are easy to miss — a 2D array, a limit such as "a maximum of 1000", or the guidance at the end.

§4.2 · Note every named data structure

Scenarios name the arrays and variables you must use — for example TeamName[], TeamPoints[], ClassSize. Note whether each is a 1D array, a 2D array or a single variable. Use these names exactly in your answer — don't rename them.

§4.3 · List every requirement

Under "Write a program that…" the scenario lists what the program must do. Count them. Each one needs code in your answer.

§4.4 · Fill the IPO table

Three columns: Inputs (what the program takes in), Processes (what it calculates, counts, checks or finds), Outputs (what it displays). Add the expected extras too: validation for each input, a message with every input and output, and comments to explain each part.

Not every scenario has an input. If the guidance says the arrays are already filled with data, the program starts by processing that data.

§4.5 · Read the guidance at the end

Most scenarios finish with a short block of guidance, such as "You do not need to declare the arrays" or "All inputs and outputs must contain suitable messages". It tells you what to include — and what you can leave out.

§4.6 · Check the plan

Go through the requirement list and find the row of your IPO table that covers each one. If a requirement has no row, add one. If a row matches no requirement, ask whether you need it.

§5 · Worked Examples

WE1 · Sports league · Paper 2 style

Scenario extract: The 1D array TeamName[] stores the team names. The 2D array TeamPoints[] stores the points each team was awarded in each match: 3 for an away win, 2 for a home win, 1 for a draw and 0 for a loss. The arrays are already filled with data.

Step 1 · Data structures. TeamName[] (1D, team names), TeamPoints[] (2D, points per team per match), LeagueSize (variable, number of teams), MatchNo (variable, number of matches).
Step 2 · Requirements. (1) total points for each team; (2) count away wins, home wins, draws and losses for each team; (3) output each team's name, total and four counts; (4) output the name(s) of the team(s) with the highest and the lowest total.
Step 3 · IPO table.
Inputs: none — the data is already stored.
Processes: total per team (loop over the matches); count each result type (selection on 3, 2, 1, 0); find the highest and lowest totals.
Outputs: one line per team; the name(s) with the highest total; the name(s) with the lowest total — all with messages.

WE2 · Screen time · Paper 2 style

Scenario extract: The 2D array ScreenTime[] is used to store the number of minutes each student spends in front of a screen on each day of a week. StudentName[] stores the names. ClassSize stores the number of students.

Step 1 · Data structures. StudentName[] (1D), ScreenTime[] (2D, student × 7 days), ClassSize (variable).
Step 2 · Requirements. (1) input each student's minutes for each day; (2) total each student's week; (3) count the days over 300 minutes for each student; (4) calculate the class average; (5) find the student(s) with the lowest total.
Step 3 · IPO table.
Inputs: minutes for each student for each day (with validation).
Processes: weekly total per student; count of days over 300; class average (total ÷ ClassSize); lowest total.
Outputs: name, weekly total and days over 300 for each student; the class average; the name(s) with the lowest total — all with messages.
§6 · Common Misconceptions

Five key traps (Review has all 10)

Trap · Skipping the second read

After one read the scenario looks simple. The second read catches the 2D array, the limits and the guidance at the end.

Fix: read twice — once for the big picture, once for detail.

Trap · Treating the requirement list as optional

Each listed requirement needs to be covered. A requirement with no code is marks left behind.

Fix: count the requirements, and tick each one off your IPO table.

Trap · Forgetting the expected extras

Validation of inputs, messages with inputs and outputs, and comments are expected even when they aren't in the bullet list.

Fix: add a validation row for each input, and plan a message for every input and output.

Trap · Missing "2D" in the wording

Reading fast, you treat "the 2D array TeamPoints[]" as a 1D list. Your loops don't nest and the data isn't used the way the scenario describes.

Fix: on the second read, note 1D or 2D next to every array name.

Trap · Outputting one name when several could tie

"Output the name(s) of the student(s) with the lowest total" — two students could share the lowest total. Outputting only the first one misses the other.

Fix: when ties are possible, plan two steps: find the lowest value, then output every name that matches it.
§7 · Exam Focus

What a good answer shows

In our own words — the kinds of thing the mark scheme looks for in a scenario answer.

The data structures named in the scenario, used with those names and in the way described
More than one technique used for the scenario — for example selection, iteration, counting, totalling, input and output
Every requirement in the scenario covered
Suitable messages with inputs and outputs
Comments explaining the purpose of each part of the program
§8 · Quick Knowledge Check

Tap each card to reveal (0/8 revealed)

Q1 · How many times should you read a scenario before writing code?
✅ Twice — once for the big picture, once for detail.
Q2 · The scenario says "the 2D array Scores[] holds the points". What does that tell you about your loops?
✅ You will need nested loops — one for each dimension — to go through every element.
Q3 · What are the three columns of an IPO table?
✅ Inputs · Processes · Outputs.
Q4 · The program inputs an age, but the requirements don't say "validate". Should you validate it?
✅ Yes. Validating every input your program takes is expected.
Q5 · A requirement says "output the name(s) of the student(s) with the lowest total". One name or many?
✅ Every matching name — more than one student could share the lowest total.
Q6 · The scenario names an array StudentName[]. Can you call it Names[] in your answer?
✅ No. Use the names given in the scenario.
Q7 · Which words point to totals, counts or extremes?
✅ "total", "count", "how many", "average", "highest", "lowest", "most", "least".
Q8 · What is in the short block of guidance at the end of a scenario?
✅ Things like "the arrays are already declared" or "all inputs and outputs need messages" — what to include and what you can leave out.
§9 · Ready for Activities?

🎯 You can read a scenario like a programmer.

Head to Activities and try the Scenario Reader — eight Paper 2 style scenarios to plan.

📊 Where you are

0Practice attempts
0Exam questions
0Skills mastered

🎯 Weakest skills

Topic 11 Path

📍 11.1–11.2 Read Lab (this page)
11.3 Build Lab
11.4 Ship Lab

Cambridge syllabus

Topic 11 is this site's practice for the 15-mark scenario question at the end of Paper 2. It isn't a separate syllabus topic: the question draws on syllabus Topic 7 (algorithm design and problem-solving) and Topic 8 (programming).

§1 · Getting started

Getting started · Context · Discussion

Getting started. Why do scenario questions feel harder than short questions? Because the answer is hidden inside everyday language. You translate first, then code.

Context. A typical scenario begins: "The 2D array ScreenTime[] is used to store the number of minutes each student spends in front of a screen on each day…" — data structures first, then a list of what the program must do, then guidance.

Discussion. Two students see the same scenario. One spends five minutes on an IPO table before coding; the other starts coding straight away. Who is more likely to cover every requirement, and why?

Tap to reveal
✅ Usually the student who planned. The IPO table makes every requirement visible, so nothing is forgotten, and there's time left for messages and comments. The student who started coding is more likely to miss a requirement or run out of time.
§2 · Contrast box

Two ways to plan

Method 1 · IPO table first

Best for: scenarios that take data, work on it and output results — most scenarios.
Watch out for: spending too long planning.

Method 2 · Walk through with sample data

Best for: menu-driven scenarios, where the program repeats and branches on the user's choice.
Watch out for: missing unusual cases.

This lab practises Method 1. The Ship Lab uses Method 2 for a menu-driven scenario.

§3 · IPO Quick-fill

Paste a scenario — get a first draft of the IPO table

A quick warm-up. It looks for verbs: input / enter / read → Input; calculate / count / total / find / check / validate → Process; output / print / display → Output. It's a starting point, not a marker — always check its draft.

§4 · Scenario wording

Six phrases and what they mean for your code

Phrase in the scenarioWhat it means for your code
"the 1D array X[] stores…"One loop goes through it. Use the name X.
"the 2D array Y[] stores…"Nested loops go through it — one per dimension.
"input and validate…"An input with a loop that asks again until the value is valid.
"output the name(s) … with the highest / lowest …"Find the highest or lowest value, then output every name that matches it.
"the position of each student's data is the same in both arrays"Use the same index in both arrays (parallel arrays).
"a maximum of N…"A limit your loop or validation must respect.
§5 · Trap cards

Six traps to know (Review has all 10)

Trap 1 · Skipping the second read

You feel confident and skip the second read — and miss a data structure or a requirement.

Good exam habit

Trap 2 · Forgetting the expected extras

The list doesn't say "validate" or "add comments", but validation of inputs, messages and comments are all expected.

Good exam habit

Trap 3 · Missing "2D" in the wording

You treat a 2D array as a 1D list. Your loops don't nest and the data isn't used as described.

Good exam habit

Trap 4 · Ignoring the array bounds

Arrays in pseudocode use the bounds they are declared with — often 1 to N, but sometimes 0 to N−1. If the scenario gives the size as ClassSize, your loop must match.

Good exam habit

Trap 5 · Missing the guidance at the end

The last few lines tell you things like "you do not need to declare the arrays". Miss them and you waste time — or leave out something that was asked for.

Cambridge examiner report (2024) — strong answers followed the guidance at the end of the scenario

Trap 6 · Renaming the given data structures

The scenario names MatchNo and ClassSize, but you invent N and Count. Use the names given.

Good exam habit
§6 · Predict, then reveal
Q1 · "The 2D array ScreenTime[] holds daily minutes for each student for a week." Which declaration fits?
✅ DECLARE ScreenTime : ARRAY[1:ClassSize, 1:7] OF INTEGER — two dimensions, using the given name. (Many scenarios say the arrays are already declared, so check the guidance first.)
Q2 · "Input daily minutes for each student." Which IPO columns does that need?
✅ Input (the minutes), plus a Process row for validating each entry.
Q3 · "Output the name(s) of the student(s) with the lowest weekly total." One name or all matching?
✅ All matching — more than one student can share the lowest total.
Q4 · Is IF Score < 0 OR Score > 100 THEN INPUT Score ENDIF enough validation?
✅ No — it only asks again once. Validation needs a loop (WHILE or REPEAT) that keeps asking until the value is valid.

💡 Learn tab in one line

Read like a planner: the scenario is a specification.

🎓 What next

Head to Activities — the Scenario Reader and four short drills.

🎮 Scenario Reader + 4 drills

The Scenario Reader gives you a full scenario to plan: name the data structures, then tag each sentence as Input, Process or Output. Four short drills practise each skill on its own.

Free mode (no requirement list, no hints) unlocks after you plan 3 scenarios successfully in Guided mode.

1 · 📖 Scenario Reader

2 · ⚡ IPO Sort

Choose Input, Process or Output for each phrase, then press Check.

3 · 🔍 Data Structure Spotter

Read the extract. Is the named structure a 1D array, a 2D array or a single variable?

4 · 📋 Requirement Extractor

Tap every item that is a requirement of this scenario — including the expected extras. Some items are not needed.

5 · ⚡ 60-second Sprint

Quick questions on IPO, 1D or 2D, and requirements. Sprint is for speed — it doesn't change your Mastery.

60Seconds
0Correct
0Streak

📇 Scenario deck

8 scenarios in the style of Paper 2. ✅ = planned successfully.

🎯 Skill coverage

💡 Drill guide

1 · Scenario Reader — plan a whole scenario: data structures, then Input / Process / Output for each sentence.

2 · IPO Sort — Input, Process or Output, one phrase at a time.

3 · Structure Spotter — 1D, 2D or variable.

4 · Requirement Extractor — pick out what's required, and what isn't.

5 · Sprint — 60 seconds of quick recall.

✎ Practice — 18 multiple-choice questions

Across four skills: IPO identification, data structure spotting, requirement extraction and expected extras. Skills you get wrong come back more often. Missed questions are saved to Mistakes.

🧪 Practice Exam Mode ON. No choices shown — recall the answer, then reveal and self-mark.

📊 Practice stats

0Attempts
–Accuracy

🎯 Weakest skills

📋 Exam-style questions — 12 questions

Paper 2 style questions on reading a scenario. Answer every part, then press Mark my answer — each part is checked automatically.

📋 Exam stats

0Attempts
–Average mark

ℹ️ About these questions

Written in the style of Cambridge Paper 2. The scenarios are made up for practice. Written answers are checked for key ideas, so use clear words.

🔄 Review — 10 traps + 6 memory triggers

Read these before your exam. Then look at Mistakes to see the ones you make.

10 traps to know

🧠 Memory triggers

Six one-liners to recite before your exam.

🎯 Your weakest skills

💔 Your logged mistakes

🏆 Mastery — revision checklist

Tick each item as you master it. In the skill grid, tap a status chip to set it yourself. When all 12 are ticked, the Module Mastered banner appears.

🏆 Module Mastered — 11.1–11.2 Read Lab complete!

Revision checklist

Skill grid

Mastered = 3+ attempts and at least 70% accuracy. Tap the status chip to override it.

➡️ Next up: Build Lab

Practise the code patterns that most scenario answers are built from: validation loops, totals, counts, highest and lowest, and nested loops.

📊 Overview

0Skills attempted
0Skills mastered

Topic 11 Path

📍 11.1–11.2 Read Lab (this page)
11.3 Build Lab
11.4 Ship Lab

💔 Mistakes

Your mistakes log

Every wrong Practice, Exam or Scenario Reader answer is saved here automatically.

📊 Progress

Progress dashboard

Your attempts, accuracy and mastery counts in the Read Lab.

Practice

0Attempts
–Accuracy

Exam

0Attempts
–Average

Focus recommendation

Weakest skills

🔖 Bookmarks

Bookmarked questions

Bookmark an exam question to save it here.

📝 My Notes

My notes

Jot notes as you learn. Everything here is saved on this device only.

Add a note

Notes on this page (saved on this device only)

Quick stats

0Notes saved
0Page notes
🗄️ Vault

Your knowledge vault

Sent mistakes and saved key facts, in one place.

Saved ✓