AQA GCSE Computer Science (8525) · Examiner Report Analysis
Top 20 AQA Exam Trapdoors & Misconceptions
Every year, AQA examiners report the exact same recurring misconceptions where capable students drop 15+ marks. Here is the insider breakdown of where marks are lost — and how to ensure you keep them.
The range() Stop-Value Exclusion
⚠️ The Trap / Common Mistake
Assuming range(1, 10) produces the numbers 1 through 10.
🔍 The Examiner’s Reality
In Python, range(start, stop) generates numbers up to but NOT including stop. range(1, 10) generates 1, 2, 3, 4, 5, 6, 7, 8, 9 (only 9 iterations).
✅ The Exam-Proof Fix
If you need 1 to 10 inclusive, write range(1, 11). If you write range(N), it runs N times from 0 to N-1.
Binary Left Shift Overflow vs Multiplication
⚠️ The Trap / Common Mistake
Writing that a logical binary left shift 'always multiplies the number by 2'.
🔍 The Examiner’s Reality
A binary shift left of 1 place multiplies by 2 ONLY if no 1s are shifted out of the most significant bit (MSB). If a 1 falls off the left into overflow, arithmetic multiplication breaks.
✅ The Exam-Proof Fix
Examiners require you to mention: 'Multiplies by 2, provided no significant bits are lost to overflow.'
Two's Complement Asymmetric Range
⚠️ The Trap / Common Mistake
Thinking an 8-bit two's complement integer has a range of -127 to +127 or -128 to +128.
🔍 The Examiner’s Reality
Zero takes up one positive representation. An 8-bit two's complement integer has 256 states: -128 (10000000) to +127 (01111111).
✅ The Exam-Proof Fix
The negative range is always 1 greater in magnitude than the positive range: -2^(n-1) to +2^(n-1) - 1.
Binary Search Precondition (Sorted List)
⚠️ The Trap / Common Mistake
Applying binary search to an unsorted list of items.
🔍 The Examiner’s Reality
Binary search repeatedly divides the search space based on whether the middle item is greater or smaller than the target. If the data is not ordered, the algorithm fails completely.
✅ The Exam-Proof Fix
Always state: 'Binary search requires the list to be in sorted/alphabetical order. If unsorted, a linear search must be used.'
Hexadecimal Place-Value Conversion
⚠️ The Trap / Common Mistake
Converting 0x2A to denary by doing (2 + 10 = 12).
🔍 The Examiner’s Reality
Hexadecimal is Base 16. Each digit represents a multiple of 16^n. The rightmost nibble is worth 1s, and the leftmost is worth 16s.
✅ The Exam-Proof Fix
Split into nibbles: (2 * 16) + (A * 1) = 32 + 10 = 42.
Integer Division (//) vs Real Division (/)
⚠️ The Trap / Common Mistake
Using / when integer floor arithmetic is required, leading to type mismatch float errors.
🔍 The Examiner’s Reality
In Python, 7 / 2 returns 3.5 (Float). 7 // 2 returns 3 (Integer floor division, discarding any fractional remainder).
✅ The Exam-Proof Fix
Use // when calculating whole items, array indices, or quotient values; use % to extract remainder.
Lossy vs Lossless Compression for Executables & Text
⚠️ The Trap / Common Mistake
Stating that lossy compression is suitable for shrinking source code or text documents.
🔍 The Examiner’s Reality
Lossy compression permanently discards data human senses won't notice (imperceptible sounds/colors). Discarding even 1 character from code or text causes corruption.
✅ The Exam-Proof Fix
Text, program code, and financial data MUST use lossless compression (e.g., RLE or Huffman). Lossy is only for photos, audio, and video.
Bitmap File Size: Forgetting to Convert Bits to Bytes
⚠️ The Trap / Common Mistake
Calculating (Width * Height * Colour Depth) and labeling the answer as 'Bytes'.
🔍 The Examiner’s Reality
Colour depth is stated in BITS per pixel. Multiplying width * height * depth gives the file size in BITS.
✅ The Exam-Proof Fix
Always divide total bits by 8 to convert into bytes. Only add metadata bytes AFTER converting.
Index Out of Bounds in Loops
⚠️ The Trap / Common Mistake
Writing for i in range(len(my_list) + 1) or indexing my_list[len(my_list)].
🔍 The Examiner’s Reality
Python indices start at 0. If a list has 5 items, valid indices are 0, 1, 2, 3, 4. Index 5 causes an IndexError crash.
✅ The Exam-Proof Fix
Loop with for i in range(len(my_list)) or loop directly over items: for item in my_list:.
Validation vs Verification Distinction
⚠️ The Trap / Common Mistake
Saying validation checks if user input is correct or accurate.
🔍 The Examiner’s Reality
A computer cannot validate if you entered your real age. Validation only checks if the input follows sensible rules (format, length, range, presence, type).
✅ The Exam-Proof Fix
Validation = checks if data is reasonable/allowed. Verification = checks if entered data matches original source (double entry, visual check).
Sound Sampling: Sample Rate vs Bit Depth
⚠️ The Trap / Common Mistake
Mixing up sample rate (Hertz) and sample resolution/bit depth.
🔍 The Examiner’s Reality
Sample rate is the frequency of samples taken per second (Hz). Bit depth is the number of bits allocated to represent the amplitude of each sample.
✅ The Exam-Proof Fix
Increasing sample rate captures higher audio frequencies; increasing bit depth captures a wider dynamic volume range with less quantization noise.
RAM vs ROM Characteristics
⚠️ The Trap / Common Mistake
Calling RAM permanent storage or thinking ROM stores user files.
🔍 The Examiner’s Reality
RAM is volatile primary memory (wiped when powered down) storing open apps and OS data. ROM is non-volatile read-only memory storing the BIOS/bootstrap loader.
✅ The Exam-Proof Fix
RAM = Fast, temporary, read/write, volatile. ROM = Permanent, read-only, non-volatile.
ASCII (7/8-bit) vs Unicode (16/32-bit)
⚠️ The Trap / Common Mistake
Stating ASCII can represent international alphabets like Chinese or Arabic.
🔍 The Examiner’s Reality
Standard ASCII uses 7 bits (128 characters), Extended uses 8 bits (256 characters) — enough only for English and basic punctuation.
✅ The Exam-Proof Fix
Unicode uses up to 32 bits (over 1 million character codes), enabling support for all global languages, historical scripts, and emojis.
SQL WHERE Clause vs SELECT Clause
⚠️ The Trap / Common Mistake
Putting filter criteria in the SELECT statement or listing columns in the WHERE statement.
🔍 The Examiner’s Reality
SELECT specifies the columns to display in the result table. WHERE specifies the condition rows must satisfy to be selected.
✅ The Exam-Proof Fix
Remember the order: SELECT [columns] FROM [table] WHERE [conditions] ORDER BY [sort column];
Boolean Logic Operator Precedence
⚠️ The Trap / Common Mistake
Evaluating boolean expressions strictly from left to right.
🔍 The Examiner’s Reality
Boolean algebra has an order of operations (BODMAS equivalent): NOT evaluated first, then AND, then OR.
✅ The Exam-Proof Fix
A OR B AND C is evaluated as A OR (B AND C). Use brackets in logic diagrams and code to guarantee intended order.
Parameter vs Argument Terminology
⚠️ The Trap / Common Mistake
Using 'argument' and 'parameter' interchangeably in written questions.
🔍 The Examiner’s Reality
A parameter is the variable declared inside the subroutine header: def calc(width, height):. An argument is the actual value passed during calling: calc(10, 20).
✅ The Exam-Proof Fix
Parameter = placeholder in function definition. Argument = actual value passed when calling.
Variable Scope: Modifying Globals in Functions
⚠️ The Trap / Common Mistake
Assuming assigning to a variable inside a function updates a global variable with the same name.
🔍 The Examiner’s Reality
Assigning to a variable inside a function creates a local variable that hides the global one, unless explicitly declared with the global keyword.
✅ The Exam-Proof Fix
Prefer passing variables into functions as parameters and returning modified results with return.
Run-Length Encoding (RLE) on Alternating Data
⚠️ The Trap / Common Mistake
Claiming RLE will always compress any image or text stream.
🔍 The Examiner’s Reality
RLE only compresses data that contains long consecutive runs of identical values (e.g. AAAAABBB). If data alternates (ABABABAB), RLE doubles the file size (1A1B1A1B1A1B).
✅ The Exam-Proof Fix
Examiners look for: 'RLE is only effective on data with long repeated runs; on high-frequency noise or alternating patterns, it can increase file size.'
Assignment (=) vs Comparison (==) in Trace Tables
⚠️ The Trap / Common Mistake
Writing x == 5 as a state change in a trace table or writing if x = 5 in code.
🔍 The Examiner’s Reality
Single = changes the value stored in memory. Double == checks equality and returns True or False without modifying memory.
✅ The Exam-Proof Fix
In code: = assigns, == tests. In trace tables: only write in a column when an assignment statement actually changes that variable's value.
Linear Search vs Binary Search Efficiency
⚠️ The Trap / Common Mistake
Saying binary search is always faster than linear search for every search query.
🔍 The Examiner’s Reality
If the target is the very first element in the list, linear search finds it in 1 check (Best Case: O(1)). Binary search checks the middle item first (O(log n)).
✅ The Exam-Proof Fix
Examiners award marks when you specify: 'On average and in worst-case scenarios with large sorted lists, binary search is significantly faster because it halves the search space each time.'
Want these printable sheets emailed to your inbox?
Get the full A4 print-ready PDF bundle delivered straight to your email: the Paper 2 Python & SQL Cheat Sheet, the Top 20 AQA Exam Trapdoors Guide, and the Official 8525 Revision Checklist.
Don’t let silly mistakes cost you a Grade 7, 8, or 9
UpperGrades lessons are built to catch these exact misconceptions in real time. Every lesson stops at interactive checkpoints to test your understanding before moving on.
30-day money-back guarantee · Covers all children in your household · Cancel anytime
