Cambridge IGCSE Computer Science (9-1) 0984 — 2025 Oct/Nov Paper 2 · Variant 2

0984/22/O/N/25 · 75 marks · ≈84 min

The question paper and its mark scheme, free to read here and free to download. This is Cambridge’s own paper, exactly as it was sat.

← All Computer Science (9-1) papersWhat was in this paper?

Question paper16 pages

Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 1 of 16
Page 1 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 2 of 16
Page 2 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 3 of 16
Page 3 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 4 of 16
Page 4 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 5 of 16
Page 5 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 6 of 16
Page 6 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 7 of 16
Page 7 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 8 of 16
Page 8 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 9 of 16
Page 9 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 10 of 16
Page 10 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 11 of 16
Page 11 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 12 of 16
Page 12 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 13 of 16
Page 13 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 14 of 16
Page 14 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 15 of 16
Page 15 of 16
Cambridge IGCSE Computer Science (9-1) 0984 2025 Oct/Nov Paper 2 · Variant 2 question paper, page 16 of 16
Page 16 of 16

Mark scheme21 pages

Answers below. Sit the paper first if you are practising.

Mark scheme, page 1 of 21
Page 1 of 21
Mark scheme, page 2 of 21
Page 2 of 21
Mark scheme, page 3 of 21
Page 3 of 21
Mark scheme, page 4 of 21
Page 4 of 21
Mark scheme, page 5 of 21
Page 5 of 21
Mark scheme, page 6 of 21
Page 6 of 21
Mark scheme, page 7 of 21
Page 7 of 21
Mark scheme, page 8 of 21
Page 8 of 21
Mark scheme, page 9 of 21
Page 9 of 21
Mark scheme, page 10 of 21
Page 10 of 21
Mark scheme, page 11 of 21
Page 11 of 21
Mark scheme, page 12 of 21
Page 12 of 21
Mark scheme, page 13 of 21
Page 13 of 21
Mark scheme, page 14 of 21
Page 14 of 21
Mark scheme, page 15 of 21
Page 15 of 21
Mark scheme, page 16 of 21
Page 16 of 21
Mark scheme, page 17 of 21
Page 17 of 21
Mark scheme, page 18 of 21
Page 18 of 21
Mark scheme, page 19 of 21
Page 19 of 21
Mark scheme, page 20 of 21
Page 20 of 21
Mark scheme, page 21 of 21
Page 21 of 21

Paper as text

Question paper, page 1

This document has 16 pages. Any blank pages are indicated. [Turn over Cambridge IGCSE™(9–1) * 2 0 8 2 3 3 4 7 4 4 * COMPUTER SCIENCE 0984/22 Paper 2 Algorithms, Programming and Logic October/November 2025 1 hour 45 minutes You must answer on the question paper. No additional materials are needed. INSTRUCTIONS ● Answer all questions. ● Use a black or dark blue pen. You may use an HB pencil for any diagrams or graphs. ● Write your name, centre number and candidate number in the boxes at the top of the page. ● Write your answer to each question in the space provided. ● Do not use an erasable pen or correction fluid. ● Do not write on any bar codes. ● Calculators must not be used in this paper. INFORMATION ● The total mark for this paper is 75. ● The number of marks for each question or part question is shown in brackets [ ]. ● No marks will be awarded for using brand names of software packages or hardware. DC (WW) 353939 © UCLES 2025 , , * 0000800000001 * ¬OŠ. 4mHuOªEŠ_y5€W ¬¤f{U¢p™Vs‘ŽCšœ‚ ¥5e•u5e•u e U uuU DFD

Question paper, page 2

2 0984/22/O/N/25 © UCLES 2025 1 Tick (✓) one box to complete this sentence. The result of the arithmetic operation 4 ^ 2 is A 2 B 8 C 16 D 42 [1] 2 This pseudocode algorithm is intended to input a first name from a user and search for it in a two‑dimensional (2D) array. If the name is found, the algorithm outputs all the remaining details for that name. The algorithm will continue to allow other names to be entered for searching, until the user input stops it. 01 DECLARE Contacts : ARRAY[1:500, 1:4] OF REAL 02 DECLARE Row : INTEGER 03 DECLARE Column : INTEGER 04 DECLARE Continue : BOOLEAN 05 DECLARE Stop : BOOLEAN 06 DECLARE FirstName : STRING 07 Continue TRUE 08 Stop FALSE 09 WHILE Continue 10 Row 1 11 OUTPUT "Enter a first name " 12 OUTPUT FirstName 13 REPEAT 14 IF Contacts[Row, 1] = FirstName 15 THEN 16 FOR Column 1 TO 4 17 OUTPUT Contacts[Row, 1] 18 NEXT Column 19 Stop TRUE 20 ELSE 21 Row Row + 1 22 ENDIF 23 NEXT Stop OR Row > 500 24 OUTPUT "Search for another name? (Y or N)" 25 INPUT Answer 26 IF Answer = 'N' OR Answer = 'n' 27 THEN 28 Continue TRUE 29 ENDIF 30 ENDWHILE (a) Identify the line numbers of five errors in the pseudocode and suggest a correction for each error. Error 1 line number … Correction … … * 0000800000002 * , , ĬÍĊ®Ġ´íÈõÏĪÅĊÞû·þ× ĬĤèüØĦüïÝþùóéĨóâĔĂ ĥĥµĕµÕĥõÅÅõÅąĕĥµÕÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 3

3 0984/22/O/N/25 © UCLES 2025 [Turn over Error 2 line number … Correction … … Error 3 line number … Correction … … Error 4 line number … Correction … … Error 5 line number … Correction … … [5] (b) A procedure NewData allows data for new contacts to be entered and stored in the 2D array Contacts[]. A parameter, Number, is used to pass values from the main algorithm to the procedure for the number of new contacts. Next, four pieces of contact data for each new contact are entered and stored at the start of the array. (i) Complete the pseudocode for PROCEDURE NewData PROCEDURE NewData(…) FOR Row 1 TO … FOR Column 1 TO 4 INPUT … … … ENDPROCEDURE [4] (ii) Write the pseudocode to input the number of new contacts and to use procedure NewData. A variable declaration is not required. … … … … [2] * 0000800000003 * , , ĬÏĊ®Ġ´íÈõÏĪÅĊÞù·þ× ĬĤçûÐĤøÿÜüĈ¶íĐçâĤĂ ĥĥÅÕõµąĕÕµåÅąõąõÅÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 4

4 0984/22/O/N/25 © UCLES 2025 (c) A first name is used as the search key in the algorithm on page 2. If the name is found, all the data for that name is output and the algorithm stops searching. (i) Explain why the given algorithm may not always give the expected results. … … … … [2] (ii) Explain how you could improve the algorithm so that the search is more likely to find the required results. … … … … [2] 3 A program is written that will only accept values between –99.99 and +99.99, inclusive. The program is to be tested. The table, when completed, shows appropriate test data that matches the type of test data and purpose of the test data. Complete the table by inserting the missing information. Test data Type of test data Purpose of test data 0 … … boundary … … to make sure that the program rejects data that is outside acceptable limits [6] * 0000800000004 * , , ĬÍĊ®Ġ´íÈõÏĪÅĊàû·Ā× ĬĤçúÐĪĆĊßöÿ­Ï´ą²ĜĂ ĥÕĕÕµµąµµĕÕÅÅõåõÕÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 5

5 0984/22/O/N/25 © UCLES 2025 [Turn over 4 (a) A length check is a type of validation check. State the purpose of a length check. … … [1] (b) An email address can be validated by checking that it contains an @ symbol. Write the pseudocode for an algorithm that will allow an email address to be input and check whether or not it contains an @ symbol. Output a suitable message with the result. Use the string function SUBSTRING(EmailAddress, Start, 1) in your solution to return a string of length 1 character, starting at position Start, where EmailAddress is the identifier representing your input. You do not need to declare any variables for this algorithm, but variables must be initialised as necessary. Assume there will not be more than one @ symbol in the email address input. … … … … … … … … … … … … … … … … [6] * 0000800000005 * , , ĬÏĊ®Ġ´íÈõÏĪÅĊàù·Ā× ĬĤèùØĠĊúÚĄòüċÌѲĬĂ ĥÕĥĕõÕĥÕåĥąÅÅĕŵÅÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 6

6 0984/22/O/N/25 © UCLES 2025 5 This flowchart represents an algorithm. START STOP IS LENGTH(Code) = 4 ? IS Store = FALSE ? IS Count > 6 ? IS CodeStore[Count] = Code ? IS CodeStore[Count] = "" ? INPUT Code OUTPUT "Code used before" OUTPUT "CodeStore full" OUTPUT "Length must be 4" Store FALSE Store TRUE CodeStore[Count] Code Count Count + 1 Count 1 No No No No Yes No Yes Yes Yes Yes * 0000800000006 * , , ĬÑĊ®Ġ´íÈõÏĪÅĊÝù¶þ× ĬĤçùÛĦĢôÒćăāī´´ĚĜĂ ĥąÅĕõõĥõĥąåÅąĕĥõĕÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 7

7 0984/22/O/N/25 © UCLES 2025 [Turn over (a) The first data row of the trace table shows the values currently stored in CodeStore[] Complete the trace table for the algorithm, using the input data: 7686, Face, Speed, 432U, Yp79 CodeStore[] Code Store Count [1] [2] [3] [4] [5] [6] OUTPUT aBcd 1532 Face 63q8 [6] * 0000800000007 * , , ĬÓĊ®Ġ´íÈõÏĪÅĊÝû¶þ× ĬĤèúÓĤĞĄçñîȯÌĨĚĬĂ ĥąµÕµĕąĕõõõÅąõąµąÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 8

8 0984/22/O/N/25 © UCLES 2025 (b) Describe the processes in the algorithm on page 6. … … … … … … [3] (c) The algorithm on page 6 requires the array CodeStore[] to be declared as a one‑dimensional (1D) string array with six elements that are initially set to the null string "". Write the pseudocode required to declare and initialise the array CodeStore[] You do need to declare any variables used. … … … … … … … … [4] * 0000800000008 * ,  , ĬÑĊ®Ġ´íÈõÏĪÅĊßù¶Ā× ĬĤèûÓĪĐąÔïõ¿čĨÆĊĔĂ ĥµĥÕõĕąµĕÕąÅÅõåµĕÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 9

9 0984/22/O/N/25 © UCLES 2025 [Turn over 6 Consider the logic expression: X = (J XOR NOT K) NAND NOT L (a) Draw a logic circuit for the logic expression. Each logic gate must have a maximum of two inputs. Do not simplify the logic expression. J K X L [4] (b) Complete the truth table for the given logic expression. J K L 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] * 0000800000009 * ,  , ĬÓĊ®Ġ´íÈõÏĪÅĊßû¶Ā× ĬĤçüÛĠĔõåĉČĊÉĐĒĊĤĂ ĥµĕĕµõĥÕąåÕÅÅĕÅõąÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 10

10 0984/22/O/N/25 © UCLES 2025 7 A database table WATERFOWL stores some details of a range of birds found in the UK that live on or near water. The length and wingspan dimensions are in centimetres and the typical lifespan is in years. Species Family Length Wingspan CoastalHabitat Lifespan Barnacle goose Goose 63.5 130.0 FALSE 14 Bewick’s swan Swan 120.2 190.5 TRUE 8 Brent goose Goose 58.0 94.3 TRUE 11 Canada goose Goose 78.5 160.0 FALSE 6 Eider Duck 58.0 94.5 TRUE 8 Goldeneye Duck 44.5 72.1 TRUE 6 Goosander Duck 63.3 90.0 TRUE 7 Long‑tailed duck Duck 44.0 76.6 TRUE 5 Mallard Duck 59.7 90.8 FALSE 3 Mute swan Swan 150.0 220.2 FALSE 10 Pink‑footed goose Goose 69.6 150.0 TRUE 8 Pintail Duck 60.0 88.6 TRUE 3 Smew Duck 41.5 62.1 FALSE 7 White‑fronted goose Goose 71.5 140.0 FALSE 6 Whooper swan Swan 150.0 230.0 TRUE 9 (a) State the purpose of a primary key in a database table. … … [1] (b) Complete the table for each of the given data types, to identify one field from the table WATERFOWL that is most likely to use it. Each field must be different. Data type Field Boolean Integer Real Text [2] * 0000800000010 * , , ĬÑĊ®Ġ´íÈõÏĪÅĊÞù¸þ× ĬĤåûÚĬĘēÎøîĥñĦâ²ĬĂ ĥĥąĕõĕåµµĥąąÅÕåµåÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 11

11 0984/22/O/N/25 © UCLES 2025 [Turn over (c) Give the output that would be produced by the structured query language (SQL) statement: SELECT Species, Length, Wingspan FROM WATERFOWL WHERE Family = "Swan" ORDER BY Lifespan; … … … … … … [3] (d) Complete the SQL statement to list only the species, family and lifespan of all waterfowl whose typical lifespan is at least 10 years, sorted in order of species. SELECT … … … … [4] * 0000800000011 * , , ĬÓĊ®Ġ´íÈõÏĪÅĊÞû¸þ× ĬĤæüÒĞĜģëĂăäåĎö²ĜĂ ĥĥõÕµõÅÕåĕÕąÅµÅõµÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 12

12 0984/22/O/N/25 © UCLES 2025 8 A program is required to test the fairness of the random number generator. The one‑dimensional (1D) array RandomNumber[] is used to store 100 000 random integers. The two‑dimensional (2D) array CountedNumber[] is used to store the integers 1 to 10, inclusive, and the frequency of each integer (the number of times each integer was generated). Write a program that meets the following requirements: • Generate 100 000 random integers between 1 and 10, inclusive. • Store each integer in the appropriate array. • Calculate the frequency of each of the integers 1 to 10 and store these values in the appropriate array. • Sort the contents of the counted number array in descending order of frequency. • Calculate the chance of generating each of the integers 1 to 10, rounded to four decimal places. Use the formula: chance = frequency / 100000 • Output each of the integers 1 to 10 in the order they are stored in the counted number array, along with the chance of generating them. The following is an example of an algorithm that sorts a 2D array in an ascending order: F TRUE WHILE F DO F FALSE FOR I 1 TO 9 IF A[I, 2] > A[I + 1, 2] THEN T1 A[I, 1] T2 A[I, 2] A[I, 1] A[I + 1, 1] A[I, 2] A[I + 1, 2] A[I + 1, 1] T1 A[I + 1, 2] T2 F TRUE ENDIF NEXT I ENDWHILE You must use pseudocode or program code and add comments to explain how your code works. All arrays, variables or constants used must be declared for this algorithm. All inputs and outputs must contain suitable messages. … … … … … … * 0000800000012 * , , ĬÑĊ®Ġ´íÈõÏĪÅĊàù¸Ā× ĬĤæùÒĨĪĦÐĀČë㲨âĤĂ ĥÕåÕõõÅõÅµåąąµĥõåÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 13

13 0984/22/O/N/25 © UCLES 2025 [Turn over … … … … … … … … … … … … … … … … … … … … … … … … … … … … * 0000800000013 * , , ĬÓĊ®Ġ´íÈõÏĪÅĊàû¸Ā× ĬĤåúÚĢĦĖéúõĞÓÊĄâĔĂ ĥÕÕĕµĕåĕÕÅõąąÕąµµÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 14

14 0984/22/O/N/25 © UCLES 2025 … … … … … … … … … … … … … … … … … … … … … … … … … … … … [15] * 0000800000014 * , , ĬÍĊ®Ġ´íÈõÏĪÅĊßüµĂ× ĬĤæüÛĠęĞÛðòÁïēĈĒĜĂ ĥõÕÕõõĥµµÕõÅÅĕåõĥÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 15

15 0984/22/O/N/25 © UCLES 2025 BLANK PAGE * 0000800000015 * , , ĬÏĊ®Ġ´íÈõÏĪÅĊßúµĂ× ĬĤåûÓĪĕĎÞĊÿĈëīÔĒĬĂ ĥõåĕµĕąÕåååÅÅõŵõÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Question paper, page 16

16 0984/22/O/N/25 © UCLES 2025 Permission to reproduce items where third‑party owned material protected by copyright is included has been sought and cleared where possible. Every reasonable effort has been made by the publisher (UCLES) to trace copyright holders, but if any items requiring clearance have unwittingly been included, the publisher will be pleased to make amends at the earliest possible opportunity. To avoid the issue of disclosure of answer‑related information to candidates, all copyright acknowledgements are reproduced online in the Cambridge Assessment International Education Copyright Acknowledgements Booklet. This is produced for each series of examinations and is freely available to download at www.cambridgeinternational.org after the live examination series. Cambridge Assessment International Education is part of Cambridge Assessment. Cambridge Assessment is the brand name of the University of Cambridge Local Examinations Syndicate (UCLES), which is a department of the University of Cambridge. BLANK PAGE * 0000800000016 * , , ĬÍĊ®Ġ´íÈõÏĪÅĊÝüµĄ× ĬĤåúÓĤħěÙĈĈÿĉÇòĂĔĂ ĥÅõĕõĕąõÅąÕÅąõĥµĥÕ DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DO NOT WRITE IN THIS MARGIN DFD

Mark scheme, page 1

This document consists of 21 printed pages. © Cambridge University Press & Assessment 2025 [Turn over Cambridge IGCSE™ (9–1) COMPUTER SCIENCE 0984/22 Paper 2 Algorithms, Programming and Logic October/November 2025 MARK SCHEME Maximum Mark: 75 Published This mark scheme is published as an aid to teachers and candidates, to indicate the requirements of the examination. It shows the basis on which Examiners were instructed to award marks. It does not indicate the details of the discussions that took place at an Examiners’ meeting before marking began, which would have considered the acceptability of alternative answers. Mark schemes should be read in conjunction with the question paper and the Principal Examiner Report for Teachers. Cambridge International will not enter into discussions about these mark schemes. Cambridge International is publishing the mark schemes for the October/November 2025 series for most Cambridge IGCSE, Cambridge International A and AS Level components, and some Cambridge O Level components.

Mark scheme, page 2

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 2 of 21 Generic Marking Principles These general marking principles must be applied by all examiners when marking candidate answers. They should be applied alon gside the specific content of the mark scheme or generic level descriptions for a question. Each question paper and mark scheme will also comply with these marking principles. GENERIC MARKING PRINCIPLE 1: Marks must be awarded in line with: • the specific content of the mark scheme or the generic level descriptors for the question • the specific skills defined in the mark scheme or in the generic level descriptors for the question • the standard of response required by a candidate as exemplified by the standardisation scripts. GENERIC MARKING PRINCIPLE 2: Marks awarded are always whole marks (not half marks, or other fractions). GENERIC MARKING PRINCIPLE 3: Marks must be awarded positively: • marks are awarded for correct/valid answers, as defined in the mark scheme. However, credit is given for valid answers which go beyond the scope of the syllabus and mark scheme, referring to your Team Leader as appropriate • marks are awarded when candidates clearly demonstrate what they know and can do • marks are not deducted for errors • marks are not deducted for omissions • answers should only be judged on the quality of spelling, punctuation and grammar when these features are specifically assessed by the question as indicated by the mark scheme. The meaning, however, should be unambiguous. GENERIC MARKING PRINCIPLE 4: Rules must be applied consistently, e.g. in situations where candidates have not followed instructions or in the application of generic level descriptors.

Mark scheme, page 3

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 3 of 21 GENERIC MARKING PRINCIPLE 5: Marks should be awarded using the full range of marks defined in the mark scheme for the question (however; the use of the full mark range may be limited according to the quality of the candidate responses seen). GENERIC MARKING PRINCIPLE 6: Marks awarded are based solely on the requirements as defined in the mark scheme. Marks should not be awarded with grade thre sholds or grade descriptors in mind.

Mark scheme, page 4

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 4 of 21 Annotations guidance for centres Examiners use a system of annotations as a shorthand for communicating their marking decisions to one another. Examiners are trained during the standardisation process on how and when to use annotations. The purpose of annotations is to inform the standard isation and monitoring processes and guide the supervising examiners when they are checking the work of examiners within their team. The meaning of annotations and how they are used is specific to each component and is understood by all examiners who mark the component. We publish annotations in our mark schemes to help centres understand the annotations they may see on copies of scripts. Note that there may not be a direct correlation between the number of annotations on a script and the mark awarded. Similarly, the use of an annotation may not be an indication of the quality of the response. The annotations listed below were available to examiners marking this component in this series. Annotations Annotation Meaning Correct point Incorrect point Follow through Repetition Ignore Benefit of doubt given Content of response too vague Not answered question Omission Section not relevant

Mark scheme, page 5

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 5 of 21 Annotation Meaning Section incorrect Highlighter Highlights part of the answer or shows structure of complex answers Page or response seen by examiner AO2 mark AO3 mark Not enough Required item one Required item two Required item three Correct awarding one mark Correct awarding two marks Correct awarding three marks Correct awarding four marks Correct awarding five marks Correct awarding six marks Correct awarding seven marks Correct awarding eight marks Correct awarding nine marks

Mark scheme, page 6

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 6 of 21 Mark scheme abbreviations / separates alternative words / phrases within a marking point // separates alternative answers within a marking point underline actual word given must be used by candidate (grammatical variants accepted) max indicates the maximum number of marks that can be awarded ( ) the word / phrase in brackets is not required, but sets the context Note: No marks are awarded for using brand names of software packages or hardware.

Mark scheme, page 7

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 7 of 21 Question Answer Marks 1 C 1 Question Answer Marks 2(a) One mark per mark point, max five • Line 01 / DECLARE Contacts : ARRAY[1:500, 1:4] OF REAL should be DECLARE Contacts : ARRAY[1:500, 1:4] OF STRING • Line 12 / OUTPUT FirstName should be INPUT FirstName • Line 17 / OUTPUT Contacts[Row, 1] should be OUTPUT Contacts[Row, Column] • Line 23 / NEXT Stop OR Row > 500 should be UNTIL Stop OR Row > 500 • Line 25 / 26 / Answer variable not declared should be DECLARE Answer : CHAR before line 25 • Line 28 / Continue  TRUE should be Continue  FALSE 5

Mark scheme, page 8

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 8 of 21 Question Answer Marks 2(b)(i) One mark per mark point, max four MP1 Appropriate parameter in PROCEDURE line MP2 Correct index outer loop termination value; must use Number as stated in question MP3 Correct array reference in INPUT MP4 Correct termination of both loops. Example: PROCEDURE NewData(Number : INTEGER) FOR Row  1 TO Number FOR Column  1 TO 4 INPUT Contacts[Row, Column] NEXT Column NEXT Row ENDPROCEDURE 4 2(b)(ii) One mark per mark point, max two MP1 Correct input statement MP2 Correct call statement for NewData Example: INPUT MyNumber CALL NewData(MyNumber) 2 2(c)(i) One mark per mark point, max two MP1 There may be more than one person with the given first name // The name may not exist/found in the array MP2 The search will stop at the first occurrence and output the data for the wrong person MP3 If the name is not present there could be no output / the loop will continue. 2

Mark scheme, page 9

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 9 of 21 Question Answer Marks 2(c)(ii) One mark per mark point, max two MP1 Introduce additional search criteria into the algorithm to make the search more specific to each person in the array MP2 … such as the last name to go with the first name // … such as some form of ID number / date of birth / contact number / post code MP3 The algorithm should be able to search the whole array to find all available matches MP4 … by removing the stop variable MP5 Use selection to confirm the name has not been found in the whole array MP6 If the name is not present, output an appropriate message. 2 Question Answer Marks 3 One mark for each correct box (underlined), max six Test data Type of test data Purpose of test data 0 normal to make sure that the program accepts data that is in range 100 // –100 boundary to make sure that the program rejects data that is on the wrong side of the boundary 300 abnormal to make sure that the program rejects data that is outside acceptable limits 6

Mark scheme, page 10

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 10 of 21 Question Answer Marks 4(a) To check that the data entered has the required number of characters. 1 4(b) One mark per mark point, max six MP1 Initialisation of variables – start location for checking and flag, if used MP2 Input of email address into appropriate variable MP3 Working condition-controlled loop present MP4 Correct use of SUBSTRING MP5 Use of condition for checking value extracted from SUBSTRING / '@' MP6 Appropriate action if '@' found – loop termination MP7 Appropriate action if '@' NOT found – check the next character and loop termination if no more characters MP8 Output that only shows when the email address is valid or invalid. Both cases required. Example: // Variable declarations are not required INPUT EmailAddress Start  1 Valid  FALSE REPEAT IF SUBSTRING(EmailAddress, Start, 1) = '@' THEN Valid  TRUE ELSE Start  Start + 1 ENDIF UNTIL Start > LENGTH(EmailAddress) OR Valid IF Valid THEN OUTPUT EmailAddress, " is valid" ELSE OUTPUT EmailAddress, " is NOT valid" ENDIF 6

Mark scheme, page 11

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 11 of 21 Question Answer Marks 5(a) One mark per mark point, max six MP1 Correct Code column MP2 Correct Store column MP3 Correct Count column MP4 First four CodeStore columns left unchanged MP5 Correct CodeStore[5] and CodeStore[6] columns MP6 Correct OUTPUT column CodeStore[] Code Store Count [1] [2] [3] [4] [5] [6] OUTPUT aBcd 1532 Face 63q8 7686 FALSE 1 2 3 4 TRUE 5 7686 6 Face FALSE 1 2 6

Mark scheme, page 12

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 12 of 21 Question Answer Marks 5(a) CodeStore[] Code Store Count [1] [2] [3] [4] [5] [6] OUTPUT 3 Code used before Speed Length must be 4 432U FALSE 1 2 3 4 5 TRUE 6 432U 7 CodeStore full

Mark scheme, page 13

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 13 of 21 Question Answer Marks 5(b) One mark per mark point, max three MP1 Checks that the length of the code input is 4 characters. MP2 Checks the code against the array contents to see if it has been used before (in the last 6 codes) MP3 If the code passes the tests, it is stored in the array MP4 Stores the code in the lowest available index MP5 Checks that the code store isn’t full before storing a new code // Outputs a code store is full message if appropriate // Algorithm continues until the code store is full. 3 5(c) One mark per mark point, max four MP1 Declaration of array using correct name and data type. MP2 Declaration of loop counter MP3 Use of appropriate loop for six iterations (allow any type of loop) MP4 Assignment of all array elements to null string (using loop counter as array index). Example: DECLARE CodeStore : ARRAY[1:6] OF STRING DECLARE Index : INTEGER FOR Index  1 TO 6 CodeStore[Index]  "" NEXT Index 4

Mark scheme, page 14

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 14 of 21 Question Answer Marks 6(a) One mark for each correct gate, with the correct input(s) as shown. J K L 4 X

Mark scheme, page 15

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 15 of 21 Question Answer Marks 6(b) Four marks for eight correct outputs Three marks for six or seven correct outputs Two marks for four or five correct outputs One mark for two or three correct outputs J K L X 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 4

Mark scheme, page 16

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 16 of 21 Question Answer Marks 7(a) It is used to uniquely identify records 1 7(b) Two marks for all four fields correctly identified One mark for two or three fields correctly identified Data type Field Boolean CoastalHabitat Integer Lifespan Real Length // Wingspan Text Species // Family 2 7(c) One mark per mark point, max three MP1 Correct data – spelt correctly MP2 Correct layout – three columns, with no additional punctuation MP3 Correct order (vertical and horizontal) Correct output: Bewick’s swan 120.2 190.5 Whooper swan 150.0 230.0 Mute swan 150.0 220.2 3 7(d) One mark per correct line, max four SELECT Species, Family, Lifespan FROM WATERFOWL WHERE Lifespan >= 10 ORDER BY Species; 4

Mark scheme, page 17

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 17 of 21 Question Answer Marks 8 Use the tables for AO2 and AO3 below to award a mark in a suitable band using a best fit approach, then add up the total. Marks are available for: • AO2 (maximum 9 marks) • AO3 (maximum 6 marks) Data Structures required with names as given in the scenario: Arrays or lists RandomNumber[], CountedNumber[] Requirements (techniques) R1 arrays and variables declared, then 100 000 random integers between 1 and 10, inclusive, generated and stored in an array, (array and variable declarations, iteration, random number generation, rounding and storage). R2 frequency of each random integer counted and results stored in array, then results sorted into descending order (initialisation, selection, counting, sort, nested iteration, storage). R3 calculation of the chance of each random integer occurring rounded to 4 d.p. and results output (iteration, rounding and output). Example 15-mark answer in pseudocode // array and variable declaration DECLARE RandomNumber : ARRAY[1:100000] OF INTEGER DECLARE CountedNumber : ARRAY[1:10, 1:2] OF INTEGER DECLARE Index1 : INTEGER DECLARE Index2 : INTEGER DECLARE Swap : BOOLEAN DECLARE Temp1 : INTEGER DECLARE Temp2 : INTEGER // generate 100000 random integers between 1 and 10, inclusive, // and store them in an array FOR Index1  1 TO 100000 RandomNumber[Index1]  ROUND(RANDOM() * 9, 0) + 1 NEXT Index1 15

Mark scheme, page 18

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 18 of 21 Question Answer Marks 8 // initialising the CountedNumber array FOR Index1  1 TO 10 CountedNumber[Index1, 1]  Index1 CountedNumber[Index1, 2]  0 NEXT Index1 // counting the frequency of each of the random integers // and storing the frequencies in an array FOR Index1  1 TO 10 FOR Index2  1 TO 100000 IF RandomNumber[Index2] = CountedNumber[Index1, 1] THEN CountedNumber[Index1, 2]  CountedNumber[Index1, 2] + 1 ENDIF NEXT Index2 NEXT Index1 // performing sort on frequencies, so the possible random numbers // are stored in descending order of frequency Swap  TRUE WHILE Swap DO // sort is terminated when no swaps take place during a pass Swap  FALSE FOR Index1  1 TO 9 IF CountedNumber[Index1, 2] < CountedNumber[Index1 + 1, 2] THEN Temp1  CountedNumber[Index1, 1] Temp2  CountedNumber[Index1, 2] CountedNumber[Index1, 1]  CountedNumber[Index1 + 1, 1] CountedNumber[Index1, 2]  CountedNumber[Index1 + 1, 2] CountedNumber[Index1 + 1, 1]  Temp1 CountedNumber[Index1 + 1, 2]  Temp2 Swap  TRUE ENDIF NEXT Index1 ENDWHILE

Mark scheme, page 19

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 19 of 21 Question Answer Marks 8 // outputting the results, with chances for each random number // calculated to 4 d.p. // results in descending order of frequency FOR Index1  1 TO 10 OUTPUT "The chance of ", CountedNumber[Index1, 1], " occurring is: " OUTPUT ROUND(CountedNumber[Index1, 2]/100000, 4) NEXT Index1 Alternative answer for first 20 lines after declarations, where RandomNumber[] is populated and frequency counted in the same loop. // initialising the CountedNumber array FOR Index1  1 TO 10 CountedNumber[Index1, 1]  Index1 CountedNumber[Index1, 2]  0 NEXT Index1 // generate random integers in an array, // counting and storing the frequencies in an array FOR Index1  1 TO 100000 Temp1  ROUND(RANDOM() * 9, 0) + 1 RandomNumber[Index1]  Temp1 CountedNumber[Temp1, 2]  CountedNumber[Temp1, 2] + 1 NEXT Index1 // performing sort on frequencies, so the possible random numbers

Mark scheme, page 20

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 20 of 21 Marking Instructions in italics AO2: Apply knowledge and understanding of the principles and concepts of computer science to a given context, including the analysis and design of computational or programming problems 0 1–3 4–6 7–9 No creditable response. At least one programming technique has been used. Any use of selection, iteration, counting, totalling, input and output. Some programming techniques used are appropriate to the problem. More than one technique seen applied to the scenario, check the list of techniques needed. The range of programming techniques used is appropriate to the problem. All criteria stated for the scenario have been covered by the use of appropriate programming techniques, check the list of techniques needed. Some data has been stored but not appropriately. Any use of variables or arrays or other language dependent data structures e.g. Python lists. Some of the data structures chosen are appropriate and store some of the data required. More than one data structure used to store data required by the scenario. The data structures chosen are appropriate and store all the data required. The data structures used store all the data required by the scenario.

Mark scheme, page 21

0984/22 Cambridge IGCSE (9–1) – Mark Scheme PUBLISHED October/November 2025 © Cambridge University Press & Assessment 2025 Page 21 of 21 Marking Instructions in italics AO3: Provide solutions to problems by: evaluating computer systems making reasoned judgements presenting conclusions 0 1–2 3–4 5–6 No creditable response. Program seen without relevant comments. Program seen with some relevant comment(s). The program has been fully commented Some identifier names used are appropriate. Some of the data structures used have meaningful names. The majority of identifiers used are appropriately named. Most of the data structures used have meaningful names. Suitable identifiers with names meaningful to their purpose have been used throughout. All of the data structures used have meaningful names. The solution is illogical. The solution contains parts that may be illogical. The program is in a logical order. The solution is inaccurate in many places. Solution contains few lines of code with errors that attempt to perform a task given in the scenario. The solution contains parts that are inaccurate. Solution contains lines of code with some errors that logically perform tasks given in the scenario. Ignore minor syntax errors. The solution is accurate. Solution logically performs all the tasks given in the scenario. Ignore minor syntax errors. The solution attempts at least one of the requirements. Solution contains lines of code that attempt at least one task given in the scenario. The solution attempts to meet most of the requirements. Solution contains lines of code that attempt most tasks given in the scenario. The solution meets all the requirements given in the question. Solution performs all the tasks given in the scenario.

What you needed in this session

Cambridge’s own grade thresholds for 2025 Oct/Nov, Paper 2 · Variant 2. A higher threshold means an easier paper — the bar moves with how the cohort did.

954/75
848/75
743/75
636/75
529/75
423/75
317/75
212/75
17/75