Free AQA GCSE Computer Science (8520) Exam Questions and Answers
AQA GCSE Computer Science (8520) is AQA's GCSE Computer Science qualification, specification 8520, taken in England. The questions here come from AQA's published question papers from November 2021, with answers and marking guidance taken from AQA's own mark schemes. Written-answer questions let you work out your answer and then reveal what the mark scheme accepts; diagrams, graphs and source material appear with the questions that use them.
If you searched for AQA GCSE Computer Science (8520) dumps, an ExamTopics discussion or a free PDF, this is the question bank for it: practice questions with verified answers and explanations, a timed practice test and updates whenever AQA changes the exam.
Last updated: October 11, 2026
- Provider
- AQA
- Questions in our bank
- 1000+
- Free to read
- First 10, with answers
- Our test mode duration & pass mark
- 130 mins · 70%
- Verified answers
- Reviewed weekly
- Practice format
- Written answers & multiple choice
Recommended: Switch to Test Mode to start a practice test that simulates the real exam experience.
Question #1
Match the computer science process to each correct label. You should write a label A–F next to each process. You should not use the same label more than once. A Abstraction B Data validation C Decomposition D Efficiency E Random number generation F Variable assignment Process: 1. Breaking down a problem into sub-problems. 2. Removing unimportant details. 3. Ensuring the user enters data that is allowed, for example within a correct range.

Type your answer, then reveal.
Correct answer: Decomposition = C; Abstraction = A; Data validation = B
Explanation
One mark per correct label, up to 3. Breaking down a problem into sub-problems = C. Removing unimportant details = A. Ensuring the user enters allowed data, e.g. within a range = B. Reject any label used more than once.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #2
The algorithm shown in Figure 1 is designed to help an athlete with their training. It uses two subroutines getBPM and wait: • getBPM() returns the athlete's heart rate in beats per minute from an external input device • wait(n) pauses the execution of the algorithm for n seconds, so wait(60) would pause the algorithm for 60 seconds. Line numbers have been included but are not part of the algorithm. Figure 1 1 seconds ← 0 2 rest ← 50 3 REPEAT 4 bpm ← getBPM() 5 effort ← bpm – rest 6 IF effort ≤ 30 THEN 7 OUTPUT 'faster' 8 ELSE 9 IF effort ≤ 50 THEN 10 OUTPUT 'steady' 11 ELSE 12 OUTPUT 'slower' 13 ENDIF 14 ENDIF 15 wait(60) 16 seconds ← seconds + 60 17 UNTIL seconds > 200 State the most appropriate data type of the variable seconds in the algorithm shown in Figure 1.

Type your answer, then reveal.
Correct answer: Integer (int)
Explanation
One mark for integer/int. A programming-language-specific data type is accepted.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #3
The algorithm shown in Figure 1 is designed to help an athlete with their training. It uses two subroutines getBPM and wait: • getBPM() returns the athlete's heart rate in beats per minute from an external input device • wait(n) pauses the execution of the algorithm for n seconds, so wait(60) would pause the algorithm for 60 seconds. Line numbers have been included but are not part of the algorithm. Figure 1 1 seconds ← 0 2 rest ← 50 3 REPEAT 4 bpm ← getBPM() 5 effort ← bpm – rest 6 IF effort ≤ 30 THEN 7 OUTPUT 'faster' 8 ELSE 9 IF effort ≤ 50 THEN 10 OUTPUT 'steady' 11 ELSE 12 OUTPUT 'slower' 13 ENDIF 14 ENDIF 15 wait(60) 16 seconds ← seconds + 60 17 UNTIL seconds > 200 Explain why rest could have been defined as a constant in the algorithm shown in Figure 1.

Type your answer, then reveal.
Correct answer: Its value doesn't change/vary after being initialised.
Explanation
One mark: the value does not change or vary after being initialised.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #4
The algorithm shown in Figure 1 is designed to help an athlete with their training. It uses two subroutines getBPM and wait: • getBPM() returns the athlete's heart rate in beats per minute from an external input device • wait(n) pauses the execution of the algorithm for n seconds, so wait(60) would pause the algorithm for 60 seconds. Line numbers have been included but are not part of the algorithm. Figure 1 1 seconds ← 0 2 rest ← 50 3 REPEAT 4 bpm ← getBPM() 5 effort ← bpm – rest 6 IF effort ≤ 30 THEN 7 OUTPUT 'faster' 8 ELSE 9 IF effort ≤ 50 THEN 10 OUTPUT 'steady' 11 ELSE 12 OUTPUT 'slower' 13 ENDIF 14 ENDIF 15 wait(60) 16 seconds ← seconds + 60 17 UNTIL seconds > 200 State the line number where iteration is first used in the algorithm shown in Figure 1.

Type your answer, then reveal.
Correct answer: Line 3
Explanation
One mark for 3, three, or third line.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #5
The algorithm shown in Figure 1 is designed to help an athlete with their training. It uses two subroutines getBPM and wait: • getBPM() returns the athlete's heart rate in beats per minute from an external input device • wait(n) pauses the execution of the algorithm for n seconds, so wait(60) would pause the algorithm for 60 seconds. Line numbers have been included but are not part of the algorithm. Figure 1 1 seconds ← 0 2 rest ← 50 3 REPEAT 4 bpm ← getBPM() 5 effort ← bpm – rest 6 IF effort ≤ 30 THEN 7 OUTPUT 'faster' 8 ELSE 9 IF effort ≤ 50 THEN 10 OUTPUT 'steady' 11 ELSE 12 OUTPUT 'slower' 13 ENDIF 14 ENDIF 15 wait(60) 16 seconds ← seconds + 60 17 UNTIL seconds > 200 Complete the trace table for the algorithm shown in Figure 1. Some values have already been entered in the trace table: • the first value of seconds • the values returned by the subroutine getBPM that are assigned to the variable bpm. You may not need to use all rows of the trace table.

Type your answer, then reveal.
Correct answer: seconds: 0, 60, 120, 180, 240. bpm: 70, 80, 100, 120. effort: 20, 30, 50, 70. OUTPUT: faster, faster, steady, slower.
Explanation
4 marks. 1 mark: seconds takes the values 60, 120, 180 in order. 1 mark: final value of seconds is 240. 1 mark: first effort is 20 and first OUTPUT is 'faster'. 1 mark: last three effort values (30, 50, 70) all correct with the correct output for each. Maximum 3 marks if there are any errors. Ignore quote marks and minor spelling errors in OUTPUT. Ignore values on different lines if the order is correct and no other values have been entered. Correct table rows (seconds, bpm, effort, OUTPUT): 0, 70, 20, faster; 60, 80, 30, faster; 120, 100, 50, steady; 180, 120, 70, slower; 240.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #6
A developer is writing a program to convert a sequence of integers that represent playing cards to Unicode text. The developer has identified that they need to create the subroutines shown in Figure 2 to complete the program. Figure 2 getSuit(n): Returns: the string 'hearts' if n is 0; the string 'diamonds' if n is 1; the string 'spades' if n is 2; the string 'clubs' if n is 3. getRank(n): Returns the number value of the card as a string, for example: if n is 1 then 'ace' is returned; if n is 2 then 'two' is returned; if n is 10 then 'ten' is returned; if n is 11 then 'jack' is returned. convert(cards): Returns the complete string representation of the array cards. For example: if cards is [3, 1], the string returned would be 'three of diamonds '; if cards is [1, 0, 5, 2, 7, 0], the string returned would be 'ace of hearts five of spades seven of hearts '. Explain how the developer has used the structured approach to programming.

Type your answer, then reveal.
Correct answer: The developer has decomposed the problem into sub-problems, implemented the sub-problems as subroutines, and used interfaces (parameters and return values).
Explanation
Maximum 2 marks from: decomposed/broken the problem down into sub-problems; implemented sub-problems as subroutines; used interfaces (including parameters and return values).
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #7
A developer is writing a program to convert a sequence of integers that represent playing cards to Unicode text. The developer has identified that they need to create the subroutines shown in Figure 2 to complete the program. Figure 2 getSuit(n): Returns: the string 'hearts' if n is 0; the string 'diamonds' if n is 1; the string 'spades' if n is 2; the string 'clubs' if n is 3. getRank(n): Returns the number value of the card as a string, for example: if n is 1 then 'ace' is returned; if n is 2 then 'two' is returned; if n is 10 then 'ten' is returned; if n is 11 then 'jack' is returned. convert(cards): Returns the complete string representation of the array cards. For example: if cards is [3, 1], the string returned would be 'three of diamonds '; if cards is [1, 0, 5, 2, 7, 0], the string returned would be 'ace of hearts five of spades seven of hearts '. State two benefits to the developer of using the three separate subroutines described in Figure 2 instead of writing the program without using subroutines.

Type your answer, then reveal.
Correct answer: Any two: subroutines are easier to test and mistakes are easier to find; subroutines can be reused; subroutines can be changed without affecting the rest of the program; they make better self-documenting code.
Explanation
Maximum 2 marks from: easier to test/find mistakes; can be reused; can be changed without affecting the rest of the program; better self-documenting code.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #8
A developer is writing a program to convert a sequence of integers that represent playing cards to Unicode text. The developer has identified that they need to create the subroutines shown in Figure 2 to complete the program. Figure 2 getSuit(n): Returns: the string 'hearts' if n is 0; the string 'diamonds' if n is 1; the string 'spades' if n is 2; the string 'clubs' if n is 3. getRank(n): Returns the number value of the card as a string, for example: if n is 1 then 'ace' is returned; if n is 2 then 'two' is returned; if n is 10 then 'ten' is returned; if n is 11 then 'jack' is returned. convert(cards): Returns the complete string representation of the array cards. For example: if cards is [3, 1], the string returned would be 'three of diamonds '; if cards is [1, 0, 5, 2, 7, 0], the string returned would be 'ace of hearts five of spades seven of hearts '. Figure 3 shows the subroutine convert described in Figure 2. Some parts of the subroutine have been replaced with the labels L1 to L5. Figure 3 SUBROUTINE convert(cards) result ← '' max ← LEN(cards) index ← 0 WHILE index < L1 rank ← L2(cards[index]) suit ← getSuit(cards[L3 + 1]) c ← rank + ' of ' + suit + ' ' result ← result + L4 index ← index + 2 ENDWHILE RETURN L5 ENDSUBROUTINE State the pseudo-code that should be written in place of the labels in the subroutine written in Figure 3. L1 L2 L3 L4 L5

Type your answer, then reveal.
Correct answer: L1 max; L2 getRank; L3 index; L4 c; L5 result
Explanation
One mark for each correct label: L1 max, L2 getRank, L3 index, L4 c, L5 result.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #9
A developer is writing a program to convert a sequence of integers that represent playing cards to Unicode text. The developer has identified that they need to create the subroutines shown in Figure 2 to complete the program. Figure 2 getSuit(n): Returns: the string 'hearts' if n is 0; the string 'diamonds' if n is 1; the string 'spades' if n is 2; the string 'clubs' if n is 3. getRank(n): Returns the number value of the card as a string, for example: if n is 1 then 'ace' is returned; if n is 2 then 'two' is returned; if n is 10 then 'ten' is returned; if n is 11 then 'jack' is returned. convert(cards): Returns the complete string representation of the array cards. For example: if cards is [3, 1], the string returned would be 'three of diamonds '; if cards is [1, 0, 5, 2, 7, 0], the string returned would be 'ace of hearts five of spades seven of hearts '. Shade one lozenge that states why Unicode is now commonly used in preference to ASCII.

Correct answer: B
Explanation
One mark for B. Reject if more than one lozenge is shaded.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Question #10
A student has written the following statements about representing images. Two are correct and two are incorrect: Statement 1 "Bitmap images are made up of pixels." Statement 2 "A 2 pixel by 4 pixel bitmap image contains 16 pixels." Statement 3 "A pixel is a single point in a graphical image." Statement 4 "Black and white images have a minimum colour depth of two." Write the correct versions of the two incorrect statements that the student has made. First corrected statement Second corrected statement
Type your answer, then reveal.
Correct answer: Statement 2 corrected: a 2 pixel by 4 pixel bitmap image contains 8 pixels (or an n by m image contains 16 pixels where n×m = 16). Statement 4 corrected: black and white images have a minimum colour depth of 1 (or three/four-colour images have a minimum colour depth of 2).
Explanation
One mark for each correction. Statement 2: a 2 by 4 pixel image contains 8 pixels, or an n by m image with n×m = 16 contains 16 pixels. Statement 4: black and white images have a minimum colour depth of one, or three/four-colour images have a minimum colour depth of two. An explanation of the error that makes clear what should have been written is accepted.
Continue with AQA GCSE Computer Science (8520)
Unlock the full question bank
You have read the first 10 questions. A subscription opens every question in AQA GCSE Computer Science (8520), the full timed practice test, and your progress and weak-topic reporting.
Single exam
$19.99for 30 days
Full question bank and practice test for one exam, for 30 days.
Single exam
$49.99for 1 year
One exam for a full year. Nothing renews and nothing to cancel.
Full access
$39.99/mo
Every exam in the catalogue, month to month.
Full access
$199.99/yr
Every exam in the catalogue for a year.
Already subscribed? Sign in to pick up where you left off.
Discussion
Explain your reasoning, not just the letterOther AQA certifications
- AQA GCSE Combined Science: Trilogy (8464) (opens in a new tab)
- AQA GCSE Mathematics (8300) (opens in a new tab)
- AQA GCSE Combined Science: Synergy (8465) (opens in a new tab)
- AQA GCSE Chemistry (8462) (opens in a new tab)
- AQA GCSE Physics (8463) (opens in a new tab)
- AQA GCSE Biology (8461) (opens in a new tab)
- AQA GCSE Religious Studies A (8062) (opens in a new tab)
- AQA GCSE Spanish (8698) (opens in a new tab)
- AQA GCSE Geography (8035) (opens in a new tab)
- AQA GCSE German (8668) (opens in a new tab)
- AQA GCSE French (8658) (opens in a new tab)
- AQA GCSE Psychology (8182) (opens in a new tab)
Reviews
Write a review★★★★★
Exam Practice is worth every penny. The mock exams are realistic, and the feedback helped me focus on key areas.
Amit SharmaVerified buyer
★★★★★
I highly recommend Exam Practice. The feedback after each test helped me improve significantly, and I passed my exams easily.
Oscar NyströmVerified buyer
★★★★★
This platform is a lifesaver. The practice questions and explanations are so detailed. It’s the best study tool I’ve ever used.
Hannah SmithVerified buyer



