IGCSE Computer Science 0478 Paper 23, Oct/Nov 2025

Question paper and mark scheme75 marks9 questions

Solve it on ExamPal

Practise

Untimed. Write on the paper and check as you go.

Start

Exam

Timed, with a clock you set, like sitting the real paper.

Start

Opens full screen.

Opening the question paper

Read as textThe questions and the mark scheme as plain text. Easier to read on a phone.

Question paper

0478/23 · Oct/Nov 2025

Download PDF
1

Give three ways of creating a maintainable program. 1 ....................................................................................................................................................... 2 ....................................................................................................................................................... 3 .......................................................................................................................................................

[3]
2

Four descriptions of programming techniques and five programming techniques are given. Draw one line from each description to the relevant technique. Not all techniques will be used. Description adding up a set of numbers displaying the result of a calculation executing a set of instructions based on a condition executing the same set of instructions multiple times Programming technique output selection totalling iteration counting

[4]
4
a

Tickets for a theme park are booked online. An adult ticket costs $12.99 and a child ticket costs $7.99. A booking fee of $1.99 is added to the total cost of each booking. Write an algorithm in pseudocode to: • input the number of adult tickets for a booking • input the number of child tickets for a booking • calculate and output the total cost of the booking using an appropriate message.

[4]
b

Each booking must have at least one adult ticket. Explain how the algorithm could be changed to repeatedly ask for the number of adult tickets if the number input is less than 1. Any code used must be fully explained.

[4]
c(i)

The theme park has rules for a person to be able to go on a ride. A person can go on a ride (X = 1) only if they: • are 1.4 metres tall or over • are 12 years old or over • do not have a medical condition. Input | Description | Binary value A | under 1.4 metres | 0 | 1.4 metres or over | 1 B | under 12 years old | 0 | 12 years old or over | 1 C | does not have a medical condition | 0 | has a medical condition | 1 Write the logic expression for this problem. X =

[2]
c(ii)

Complete the truth table for this problem. A | B | C | Working space | X 0 | 0 | 0 | | 0 | 0 | 1 | | 0 | 1 | 0 | | 0 | 1 | 1 | | 1 | 0 | 0 | | 1 | 0 | 1 | | 1 | 1 | 0 | | 1 | 1 | 1 | |

[4]
5

A program has been written in pseudocode to input five numbers between 1 and 900 inclusive and store the highest number and the lowest number entered. 01 Lowest ← 900 02 Highest ← 1 03 FOR Count ← 1 TO 5 04 INPUT Number 05 IF Number < Lowest 06 THEN 07 Lowest ← Number 08 ELSE 09 IF Number > Highest 10 THEN 11 Highest ← Number 12 ENDIF 13 ENDIF 14 NEXT Count

a

Complete the trace table for the algorithm using the following numbers: 563, 21, 376, 99, 400

[4]
b

The algorithm does not work correctly. State the reason why the algorithm does not work as expected and explain how the algorithm could be corrected. Any code used must be fully explained. Reason ..................................................................................................................................... ................................................................................................................................................... Correction ................................................................................................................................. ...................................................................................................................................................

[2]
6

The flowchart represents an algorithm.

Figure 1 of 6 for question 6
Figure 2 of 6 for question 6
Figure 3 of 6 for question 6
Figure 4 of 6 for question 6
Figure 5 of 6 for question 6
Figure 6 of 6 for question 6
a

The algorithm uses the one-dimensional (1D) array ClassList that contains the following data: ClassList 1 | 2 | 3 | 4 | 5 Henil | Sven | Ella | Asia | Ridwan Complete the table by writing the output from the flowchart when each of the given names are input. Name | OUTPUT Ridwan | Yan | Ella |

[2]
b

Identify the standard method of solution used by the flowchart.

[1]
c

Write the algorithm in pseudocode.

[6]
7

An algorithm has been written in pseudocode to: • input a whole number between 1 and 255 inclusive • convert the input to an 8-bit binary number • store each bit of the binary number in an array. For example, if the denary number 127 was input, the binary number 01111111 would be stored in the array. 01 DECLARE BinaryArray : ARRAY[1:8] OF INTEGER 02 DECLARE DenaryNumber : CHAR 03 OUTPUT "Please enter a whole number between 1 and 255 inclusive " 04 INPUT DenaryNumber 05 FOR Count ← 7 TO 1 STEP -1 06 BinaryArray[Count] ← MOD(DenaryNumber,3) 07 DenaryNumber ← DIV(DenaryNumber,2) 08 NEXT Count

a

Identify the line numbers of the three errors in the pseudocode and suggest a correction for each error. Error 1 line number ................................... Correction ................................................................................................................................. ................................................................................................................................................... Error 2 line number ................................... Correction ................................................................................................................................. ................................................................................................................................................... Error 3 line number ................................... Correction ................................................................................................................................. ...................................................................................................................................................

[3]
b

Identify one programming technique used in the algorithm.

[1]
c(i)

The algorithm can accept a number between 1 and 255 inclusive as input. Two validation checks that could be applied to DenaryNumber are a presence check and a type check. Identify one other validation check that could be applied to DenaryNumber

[1]
c(ii)

Write the pseudocode to implement the validation check you identified in (c)(i). You do not need to rewrite the whole algorithm.

[3]
8

A school has set up a database table EquipmentLoan to record details of school equipment loaned to students. EquipmentID | Description | Name | DateLoaned | Returned Cam01 | Digital camera | James | 23/04/2025 | No Cam04 | Digital camera | Amir | 12/03/2025 | Yes Gra02 | Graphics tablet | Nikita | 27/04/2025 | No Tab01 | Tablet | Holly | 18/03/2025 | Yes Ext01 | External Hard drive | Hussein | 27/04/2025 | Yes Cam02 | Digital camera | Emily | 10/04/2025 | Yes Tri01 | Tripod | Emily | 10/04/2025 | Yes

a(i)

Give the name of the field that is most appropriate to be the primary key.

[1]
a(ii)

State the reason for choosing this field for the primary key.

[1]
b

Complete the structured query language (SQL) statement to list equipment not returned. The list must contain only the descriptions and student names. SELECT ..................................................................................................................................... FROM ......................................................................................................................................... WHERE ..................................................................................................................................... ;

[3]
9

The variables Name, Age and Found are used in a computer program. Name holds the name of a person. Age holds the age of a person as a whole number. Found holds a flag that can be set to TRUE or FALSE

a

Write pseudocode statements to declare the variables Name, Age and Found

[3]
b(i)

The procedure StoreData(Name) stores the name of a person in the file People.txt Write pseudocode statements to: • define the procedure with the parameter • store the name of the person in the file.

[5]
b(ii)

Write the pseudocode that uses the procedure StoreData() to store the name ‘Suella’ in the file People.txt

[2]
10

A number game has two players. Random whole numbers are generated for each player. The numbers are compared and players are given points based on the result of the comparison. The two-dimensional (2D) array NumberGenerated[] stores each number generated for each player. The first dimension stores the player number and the second dimension stores the random whole numbers generated. The game is played as follows: • 100 random whole numbers between 1 and 6 inclusive are generated for player 1 and stored in the array. • 100 random whole numbers between 1 and 6 inclusive are generated for player 2 and stored in the array. • The first number generated for each player is compared and the player with the higher number is awarded 2 points. If the two numbers are the same, both players are awarded 1 point each. • The comparisons repeat for all 100 numbers generated. • The player with the higher total number of points is output as the winner. • If the players have the same total number of points, a new random whole number is generated for each player and compared. This is repeated until one player has a higher number than the other player. 2 points are added to that player’s total number of points, making this player the winner. Write a program that meets the following requirements: • input and validate the names of the two players • generate 100 random whole numbers between 1 and 6 inclusive for each player and store them in the array NumberGenerated[] • calculate and store the total number of points for each player • output the name and total number of points for each player in descending order of total number of points. You must use pseudocode or program code and add comments to explain how your code works. You do not need to declare any arrays or variables; assume that this has already been done. All outputs must contain suitable messages.

[15]

Mark scheme

0478/23 · Oct/Nov 2025

Download PDF

1 · 3 marks

  • 1 mark

    use of meaningful identifiers

  • 1 mark

    commenting

  • 1 mark

    use of procedures/functions

2 · 4 marks

  • 1 mark

    adding a set of numbers -> totalling

  • 1 mark

    displaying the result of a calculation -> output

  • 1 mark

    executing a set of instructions based on a condition -> selection

  • 1 mark

    executing the same set of instructions multiple times -> iteration

4a · 4 marks

  • 1 mark

    input of adult and child places

  • 1 mark

    calculation of total of adults and child places

  • 1 mark

    … with booking fee added

  • 1 mark

    output of the total using an appropriate message

4b · 4 marks

  • 1 mark

    By adding a while loop//repeat until loop

  • 1 mark

    … with correct condition

  • 1 mark

    With a suitable message

  • 1 mark

    input of adult inside the loop

4c(i) · 2 marks

  • 1 mark

    A AND B

  • 1 mark

    AND NOT C

4c(ii) · 4 marks

  • 4 marks

    Outputs: 0, 0, 0, 0, 0, 0, 1, 0 (all 8 correct)

5a · 4 marks

  • 1 mark

    Count column correct

  • 1 mark

    Number column correct

  • 1 mark

    Lowest column correct

  • 1 mark

    Highest column correct

5b · 2 marks

  • 1 mark

    the highest score is incorrect / algorithm cannot evaluate highest value if lowest evaluated

  • 1 mark

    replace ELSE on line 08 with ENDIF and remove ENDIF on line 13 / remove nested IF and have single IF statements for Highest/Lowest

6a · 2 marks

  • 2 marks

    3 correct rows

6b · 1 mark

  • 1 mark

    (Linear) search

6c · 6 marks

  • 1 mark

    initialising Count and Position

  • 1 mark

    inputting Name outside of loop

  • 1 mark

    use of a suitable loop and condition

  • 1 mark

    comparison of Name to array position

  • 1 mark

    correct incrementation of Count by 1

  • 1 mark

    output of correct position

7a · 3 marks

  • 1 mark

    Line 02 – should be DECLARE DenaryNumber : INTEGER

  • 1 mark

    Line 05 – should be FOR Count  8 TO 1 STEP -1

  • 1 mark

    Line 06 – should be BinaryArray[Count]  MOD(DenaryNumber,2)

7b · 1 mark

  • 1 mark

    Input

  • 1 mark

    Output

  • 1 mark

    Iteration

7c(i) · 1 mark

  • 1 mark

    Range check

7c(ii) · 3 marks

  • 1 mark

    Use of a suitable loop

  • 1 mark

    ..,suitable condition

  • 1 mark

    Correct input of DenaryNumber

8a(i) · 1 mark

  • 1 mark

    EquipmentID

8a(ii) · 1 mark

  • 1 mark

    Unique field

  • 1 mark

    No repeating data

8b · 3 marks

  • 1 mark

    SELECT Description, Name

  • 1 mark

    FROM EquipmentLoan

  • 1 mark

    WHERE Returned = "No";

9a · 3 marks

  • 1 mark

    DECLARE Name : STRING

  • 1 mark

    DECLARE Age : INTEGER

  • 1 mark

    DECLARE Found : BOOLEAN

9b(i) · 5 marks

  • 1 mark

    using PROCEDURE StoreData and ENDPROCEDURE

  • 1 mark

    defining the parameter correctly

  • 1 mark

    correctly opening the file for write

  • 1 mark

    correctly storing the name

  • 1 mark

    correctly closing the file

9b(ii) · 2 marks

  • 1 mark

    use of call

  • 1 mark

    correct procedure call with ‘Suella’

10 · 15 marks

  • 9 marks

    AO2 (maximum 9 marks)

  • 6 marks

    AO3 (maximum 6 marks)

Questions

  1. 1
    Question 13 marks
    Mark scheme ›
  2. 2
    Question 24 marks
    Mark scheme ›
  3. 4
    Question 414 marks
    Mark scheme ›
  4. 5
    Question 56 marks
    Mark scheme ›
  5. 6
    Question 69 marks
    Mark scheme ›
  6. 7
    Question 78 marks
    Mark scheme ›
  7. 8
    Question 85 marks
    Mark scheme ›
  8. 9
    Question 910 marks
    Mark scheme ›
  9. 10
    Question 1015 marks
    Mark scheme ›

More 0478 papers

Other papers from Oct/Nov 2025

Solve it on ExamPalStart