← IGCSE Computer Science Paper 1

Choosing a language level for a scenario

Pick high-level for portable programs on many machines; pick low-level for direct hardware control, like drivers. Then justify the choice by linking it to the task's needs.

Understanding Choosing a language level for a scenario in IGCSE Computer Science Paper 1

What it does: The answer names the level (high-level) and gives a reason (portable) tied to the scenario. Direct hardware access is the task's need, so the low-level choice is justified by it. Low-level code is machine dependent. It only runs on the processor type it was written for. Choosing is not enough. You must justify the choice by linking it to the needs of the task. A program that must run on many machines needs portability, which high-level languages provide.

Common mistakes: High-level is chosen for a portable program that does not need direct hardware control. The condition should be 'portable and not hw'. A device driver must control hardware directly, so needs_hardware should be True. Otherwise the low-level branch never runs.

Class: _____________________  ·  Name: _____________________  ·  Date: _________

Free printable worksheet with full answer key — or add this module to a class and your students practise it interactively.

This module's key terms are also in a printable crossword (Modules 419–429) and word search (Modules 419–439).

Take this worksheet further — free with Cloodit

Each concept is reinforced from every angle — learned, then applied, then tested.

Learning
Duo
A school builds a homework app that must run on Windows, macOS and Chromebooks. Which language level should it choose?
Low-level languageHigh-level language
Matches
Use assembly language for a portable app that must run on many different computers
↓
Low-level code is machine dependent, so it is not portable. A high-level language should be chosen.
Applying
Meanings
Term
choose language level
Meaning
Pick high-level for portable programs on many machines; pick low-level for direct hardware control, like drivers. Then justify the choice by linking it to the task's needs.
Practice
TASK: app must run on many machines
Testing
Gaps
level ← ""
Check Answer
Spots
3level = "low-level"
4if portable and hw:

Cloodit turns curriculum-aligned coding content into journeys students work through one biome at a time.

The 'Galaxy Phoenix' badge — Orbit Champion, one of Cloodit's 106 collectible badges
Students earn collectable badges

Over 100 of them, across seven natural biomes.

Study Buddy
Students build a real study resource

Turns their work into revision material ready for Flash Cards and Exam study.

Diamond Dash — one of Cloodit's live, competitive Sprint games
Students lock in with Sprints

Live, competitive practice for the start of the lesson or a teacher-led lesson finisher.

A Cloodit certificate of achievement, ready to personalise and print
Custom printable certificates

Honour your top performers, or encourage a student who's trying hard — ready to print in seconds.

Quick Questions

1. A school builds a homework app that must run on Windows, macOS and Chromebooks. Which language level should it choose?
A. Low-level language
B. High-level language ✓
High-level code is machine independent, so one program can run on many types of computer. Low-level code is tied to one processor type.
2. A programmer is writing a device driver that must control a printer's hardware directly. Which language level fits best?
A. Low-level language ✓
B. High-level language
Low-level languages give direct manipulation of hardware, such as memory and registers, which a driver needs.
3. Which justification is stronger for choosing a high-level language for a web app?
A. It is machine independent, so it can run on many different devices. ✓
B. It is a good choice because high-level is newer.
A good justification links the language level to a need of the task. Here the need is portability.
4. An embedded controller in a washing machine has very little memory and needs exact control of its hardware. Which language level is more suitable?
A. Low-level, for direct hardware control and efficient use of memory ✓
B. High-level, because it is machine independent
Embedded controllers are specific hardware. Direct control matters more than portability, so low-level suits.
5. Which statement about a program that must run on many different machines is correct?
A. Choose low-level, because machine code works on every processor.
B. Choose high-level, because the same source code can be translated for each machine. ✓
Low-level code is machine dependent. It only runs on the processor type it was written for.

Match the Pairs

Scenario: a web app for many different computers → Choose a high-level language, because it is machine independent and runs on many machines
Scenario: a device driver that controls a printer → Choose a low-level language, because it can directly manipulate the hardware
A justified answer links the language level to a need of the task → High-level, because the app must be portable and run on many machines
An embedded controller needing exact memory and hardware control suits a low-level language → Low-level, because the controller needs direct access to hardware
Use assembly language for a portable app that must run on many different computers → Low-level code is machine dependent, so it is not portable. A high-level language should be chosen.
Use a high-level language because it is good. (no link to the task) → The answer gives no justification. It must link the choice to the task's needs, such as direct hardware control.

Key Term

choose language level
Pick high-level for portable programs on many machines; pick low-level for direct hardware control, like drivers. Then justify the choice by linking it to the task's needs.

Fill in the Blanks

1. IF runsOnManyMachines THEN level ← "high-level" ENDIF
Hint: Type the language level that suits a program that must run on many different machines.
2. IF task = "device driver" THEN level ← "low-level" ENDIF
Hint: Type the language level used when a program needs close control of hardware.
3. needsPortability ← TRUE IF needsPortability = TRUE THEN level ← "high-level"
Hint: Type the variable name that was set on the first line and is being tested.
4. level ← "high-level" reason ← "it runs on many machines" OUTPUT level + " because " + reason
Hint: Type the pseudocode keyword that displays the justified answer to the user.
5. IF device = "embedded controller" THEN level ← "low-level" ENDIF
Hint: Type the comparison operator that checks whether the device is equal to the given type.

Spot the Error

Question 1
A portable = True
B hw = False
C level = "low-level"
D if portable and hw:
E level = "high-level"
Line D — High-level is chosen for a portable program that does not need direct hardware control. The condition should be 'portable and not hw'.
Question 2
A task = "device driver"
B needs_hardware = False
C if needs_hardware:
D print("low-level")
Line B — A device driver must control hardware directly, so needs_hardware should be True. Otherwise the low-level branch never runs.
Question 3
A task = "web app"
B machines = 500
C if machines < 1:
D print("high-level")
Line C — A program that runs on many machines needs a portable high-level language. The test should be machines > 1, not < 1.
Question 4
A task = "washing machine chip"
B memory_tiny = True
C if not memory_tiny:
D print("low-level")
Line C — An embedded controller with tiny memory needs efficient low-level code. The test should be 'if memory_tiny:' so the low-level branch runs.
Question 5
A level = "high-level"
B why = "runs on many machines"
C print(level, "as", reason)
Line C — The justification variable is called why, so reason is undefined and causes an error. It should be print(level, "as", why).

Student with a class code? Join your class →