Paper 1, Computational thinking and programming skills: algorithms and programming. 2 hours, 90 marks, 50% of the GCSE.
Paper 2, Computing concepts: data representation, computer systems, networks, cyber security, databases and SQL, and ethical, legal and environmental impacts. 1 hour 45 minutes, 90 marks, 50%.
Both are written exams on paper. Answer every question: there are no choices and no tiers. Both papers are in the same June.
No calculator on either paper. The front cover of both says so.
There is no coursework. Your school confirms you had the chance to do programming tasks, but that earns no marks.
Time per mark: Paper 1 is 120 ÷ 90 ≈ 1.3 minutes a mark; Paper 2 is 105 ÷ 90 ≈ 1.2 minutes a mark.
Paper 1 gets harder as it goes. The last two or three questions are code-writing tasks worth 8 to 11 marks each. Save time for them.
Paper 2 usually starts with number questions. SQL comes near the end, and there are one or two Discuss questions of 6 or 9 marks.
Questions can be synoptic: Paper 1 might need binary or a file size inside an algorithm, because both papers assume the whole course.
Question type
Paper 1 (typical marks)
Paper 2 (typical marks)
Multiple choice (shade a lozenge)
8–11
4–10
State, give, identify, define
6–12
25–35
Describe, explain
3–8
15–35
Calculations with working
None as such
9–13
Trace tables
6–15
None
Writing or completing code
32–50 (Python or pseudo-code)
8–14 (SQL only)
Levels-marked Discuss
None
6 or 9 (one or two questions)
Same marks, different time: Paper 2 is 15 minutes shorter.
Worked examplePlan your time for Paper 1. You want 10 minutes at the end to check. About how long should you allow for an 8-mark code-writing question?
Time to share out: 120 − 10 = 110 minutes.Take the checking time off first.
Per mark: 110 ÷ 90 ≈ 1.2 minutes.Every question is shared at the same rate.
8 marks × 1.2 ≈ 10 minutes.
About 10 minutes. If you are well over that, write what you can and move on.
Exam tipEvery examiner report finds blank code questions. A blank scores nothing, but a first line and a loop often score a design mark. Never leave a code question empty.
Synoptic question
A question that needs knowledge from more than one part of the course.
3, 5 Programming skills
Your programming language, and using past papers
AQA sets Paper 1 in three versions: C#, Python 3 or VB.NET. Your school chooses one, and you write all your code in it. This site uses Python, the most common choice; your school may use C# or VB.NET, and the technique on this page is the same.
Answer in the language the question asks for. “Your answer must be written in Python” means pseudo-code can't get full marks. An answer in a different language is passed to a senior examiner and may not get all the marks.
Questions that print code to read use AQA's pseudo-code (←, OUTPUT, USERINPUT) or your language. When you are asked to answer “using pseudo-code”, any clear, consistent pseudo-code is fine.
“Develop an algorithm using either pseudo-code or a flowchart” means either is fine. A paragraph of English is neither.
Past papers: AQA's June 2022 to June 2025 papers, mark schemes and examiner reports, plus sample papers. Paper 1's content didn't change for exams from 2027, so every Paper 1 question is still fair practice.
Paper 2 lost some content for 2027. No longer examined: Von Neumann architecture, optical storage, star and bus topologies, Ethernet and Wi-Fi as named protocols, UDP and FTP. A few past-paper questions use them: skip those (table below).
Read the examiner reports. They say what answers got the marks, and what lost them.
Paper
Question
What to do
June 2022 Paper 2
14.4
Two options are FTP and UDP. The answer (SMTP) is still on the course, so it's fine practice.
June 2023 Paper 2
13.2
Option A mentions the Ethernet protocol. The right answers don't need it.
June 2023 Paper 2
13.3
Bus and star topologies: skip.
June 2025 Paper 2
16.1
FTP: skip.
Sample Paper 2 (2019, and the 2027 reissue)
03.6–03.8
FTP is one of the options. The other options are still on the course.
Sample Paper 2 (2019, and the 2027 reissue)
04
The opening sentence mentions Von Neumann architecture. Ignore it; the questions are still fine.
Exam tipDo at least one full paper of each kind under timed conditions, then mark it with the mark scheme. Timing is a skill: it only improves with practice.
Pseudo-code
A way of writing an algorithm that looks like code but isn't a real programming language. AQA prints its own style in exam questions.
4.2 Assessment objectives
Command words and short answers
The command word says what kind of answer gets the marks. Underline it, the number asked for (“two”), the context, and any instruction about form (“in Python”).
Multiple choice: completely fill in the lozenge. “Shade one” means one: shade two and you get nothing. “Shade two” means exactly two.
To change a lozenge, cross it out and shade the new one. To go back to a crossed-out answer, draw a ring round it.
Read every option before shading. Wrong options are usually near-misses: a wrong boundary, the wrong layer, the converse of the right statement.
Definitions are where many easy marks go. Examiners say students need to learn them “parrot fashion”. Keep a list and test yourself.
Marks tell you how much to write. 1 mark: one point. 2 marks: two points, or one point with its reason. Stop when you have done what the marks need.
Write in black ink. Use pencil only for drawing. Cross through any rough work you don't want marked.
Command word
What AQA means
What to write
State / Give / Identify / Name
Express in clear terms; produce an answer from recall
A word, a value or one short sentence. No explanation needed
Define
Specify meaning
AQA's definition, as close to word for word as you can
Describe
Set out characteristics
What it is, or what happens, step by step
Explain
Set out purposes or reasons
A point, then because or so and the reason
Compare
Identify similarities and/or differences
Both things in every point: “X …, but Y …”
Calculate / Convert
Work out the value / change data from one form to another
Working, then the answer with its unit
Complete
Finish a task by adding to given information
Fill the table, gap or diagram, using what is given
Draw
Produce a diagram
With a ruler for logic gates and flowcharts
Discuss
Present key points
Developed points on every strand, and a conclusion
Justify
Support a case with evidence
Your choice, plus the reason it is right here
Suggest
Present a possible case or solution
A sensible idea that fits the context
Develop / Extend
Take forward or build on given information
Add to the given algorithm or code, keeping its names
Worked exampleExplain why a sound file gets bigger when its sample resolution is increased. [2 marks]
Point: “Each sample is stored using more bits.”1 mark: what changes.
Reason: “so the total number of bits (sampling rate × resolution × seconds) goes up.”1 mark: the so links the point to the result.
Point + reason = 2 marks. “Because the quality is better” earns nothing: it doesn't explain the size.
Exam tipExaminers report students answering a nearby question: benefits when asked for characteristics, what malware is when asked how it works. Before you write, reread the stem.
Command word
The word in a question that tells you how to answer it, such as State, Explain or Discuss.
Lozenge
The oval you fill in to choose an answer in a multiple-choice question.
4.2 AO1, AO2
Explain, describe, compare: answers that score
Each mark is a separate idea. Two marks need two different points, or a point and its development. Saying the same thing twice in other words earns one.
“Describe two differences”: every difference names both things. The second difference must be a new idea, not the first one turned round.
Qualify every comparison. “Faster”, “cheaper”, “easier”, “more efficient” and “more secure” earn nothing on their own. Say what is faster and why.
Use precise words: “data” (not “information”) for the CPU, memory and databases; “number” (not “amount”); never “things” or “stuff”.
Use the context. If the question is about a garage or a school, every point should be about the garage or the school.
Don't offer alternatives. Examiners mark the first answer you give. If you change your mind, cross the first one out.
Worked exampleDescribe two differences between a FOR loop and a WHILE loop. [2 marks]
Weak: “1. A FOR loop repeats a set number of times. 2. A WHILE loop doesn't.”The second is the first turned round: 1 mark at most.
Difference 1: “A FOR loop repeats a set number of times, but a WHILE loop repeats until its condition is False.”Both loops named: 1 mark.
Difference 2: “A FOR loop's counter changes automatically each pass, but in a WHILE loop the code inside must change something so the condition can become False.”A new idea, both sides: 1 mark.
Two separate differences, each with both loops: 2 marks.
Worked exampleExplain one reason why photos on a website are compressed. [2 marks]
Weak: “It makes it faster.”What is faster? Why? 0 marks.
Better: “The compressed file has fewer bits,1 mark: what compression does.
so it takes less time to transmit and the page loads sooner.”1 mark: what is faster, and why.
Every comparative word now has its reason.
Exam tipA quick test for any comparison: could the examiner ask “faster at what?” or “cheaper than what?” If so, add the answer.
Qualified comparison
A comparison that says what is better and why, such as “takes less time to load because the file has fewer bits”.
3.3
Calculations without a calculator
Most calculations are on Paper 2: binary and hexadecimal conversions, units, image and sound file sizes, and Huffman bit counts.
Show your working. Write the method, then the numbers, then the answer with its unit. Examiners say most marks for wrong answers come from working.
Units go up in 1000s: 1 kB = 1000 bytes, 1 MB = 1000 kB, 1 GB = 1000 MB, 1 TB = 1000 GB. AQA's mark schemes reject 1024.
Bits to bytes: ÷ 8. Then ÷ 1000 for each step up (bytes → kB → MB).
ASCII uses 7 bits per character when you compare it with Huffman coding.
Make the sum easy before you do it. Cancel the ÷ 8 against a number that divides by 8, and split awkward numbers: 48 × 25 = 48 × 100 ÷ 4 = 1200.
Answer in the unit asked for (bits, bytes, kB or MB), and check the size is sensible: a short sound clip isn't 3 bytes or 3 TB.
Worked exampleAn image is 120 pixels wide and 50 pixels high. It uses 16 colours. Calculate its minimum file size in kilobytes. Show your working. [3 marks]
Colour depth: 16 colours = 24, so 4 bits per pixel.Write this down: it can earn a working mark.
Bits: 120 × 50 × 4.Width × height × colour depth.
Bytes: 120 × 50 × 4 ÷ 8 = 120 × 50 ÷ 2 = 3000 bytes.Cancel the 4 against the 8 before multiplying.
kB: 3000 ÷ 1000 = 3 kB.1000, not 1024.
3 kB.
Worked exampleA 12-character message needs 30 bits using Huffman coding. How many bits does it save compared with ASCII? [2 marks]
ASCII: 12 × 7 = 84 bits.Every character counts, including spaces and repeats; 7 bits each.
Saving: 84 − 30 = 54 bits.
54 bits.
Exam tipIf you can't finish a calculation, still write the method with the numbers in. “Bits = 20 × 8000 × 16” on its own can earn a mark.
3.1.1
Trace tables, outputs and reading pseudo-code
Work line by line. Never guess what a loop does: follow it. Under half of students could state one algorithm's output in a 2023 question.
One column per variable, plus OUTPUT. Write a new value only when it changes. “You may not need all the rows”: leave spare rows blank.
Outputs inside a loop appear on every pass, so the OUTPUT column fills up as you go. An output after the loop appears once.
Write outputs exactly: no quotation marks round text, and for an f-string the text with the values in, not the braces.
DIV and // give whole numbers; / can give a decimal. MOD and % give the remainder.
Indexes start at 0 unless the question says otherwise.
“State the purpose” wants plain words about the result (“it counts the even numbers”), not a line-by-line description.
AQA pseudo-code
Python
Watch out
x ← 5
x = 5
In pseudo-code, = compares
x = 5, x ≠ 5
x == 5, x != 5
FOR i ← 1 TO 5
for i in range(1, 6):
TO includes 5; range stops before 6
SUBSTRING(2, 4, s)
s[2:5]
SUBSTRING includes both ends
RANDOM_INT(1, 6)
randrange(1, 7)
RANDOM_INT includes both ends
a DIV b, a MOD b
a // b, a % b
USERINPUT, OUTPUT
input(), print()
Never write OUTPUT in Python
Worked exampleComplete a trace table for this algorithm.
total ← 0
FOR n ← 2 TO 8 STEP 3
total ← total + n * n
OUTPUT total
ENDFOR
Columns: n, total, OUTPUT. First row: total 0.One column per variable, in the order they first appear.
n = 2: total = 0 + 4 = 4. OUTPUT 4.The OUTPUT is inside the loop, so it goes in this row.
n = 5: total = 4 + 25 = 29. OUTPUT 29.STEP 3 adds 3 to n each pass.
n = 8: total = 29 + 64 = 93. OUTPUT 93.TO includes 8, so this pass runs. The next value, 11, is past the limit.
Outputs 4, 29, 93 (three rows). Python: for n in range(2, 9, 3):
Exam tipCheck your table against the code once more: did every pass of every loop get a row, and did the counter stop at the right value?
Trace table
A table that records the value of each variable, and each output, as an algorithm is followed by hand.
5 Programming skills
Completing and writing code on paper
Tick off the bullet list. AQA's own advice: each bullet in the question is usually worth marks. Tick each one as your code covers it.
“Keep asking”, “repeat until”, “for each” all mean a loop. A missing loop is the commonest big loss on Paper 1.
Convert input: input() gives a string, so use int() or float() for numbers.
print, not OUTPUT. Examiners say OUTPUT in a Python answer can't get the mark, every year.
Return or output? If the brief says a subroutine returns a value, use return; if it says output, use print. The wrong one gets no credit.
Write each comparison in full: day == "Sat" or day == "Sun", never day == "Sat" or "Sun". Join limits with and (n >= 1 and n <= 9): examiners discourage 1 <= n <= 9 because it fails in C# and VB.NET.
Use the indentation guides in the answer box. Keep identifiers meaningful, one word, and short enough to spell the same way each time.
Don't use a built-in that the question bans, such as in, index() or max() when told to write your own search.
Keep it simple. Examiners say over-complicated answers cause logic errors. Prompt text in input() isn't marked unless asked for, so keep it short.
Completing code: read the lines around each gap, use the identifiers already in the code, and write only what fits the gap.
Worked exampleWrite a Python program that asks for the hours slept on each of 3 nights (each may include a decimal point), then outputs Get more sleep if the mean is below 8, or Well rested otherwise.
Bullets: input 3 times (loop), decimals (float), mean, compare with 8, two messages.Turn the brief into a checklist first.
Loop and input:
TARGET = 8
total = 0
for night in range(3):
hours = float(input("Hours slept: "))
total = total + hours
float() because the hours may be 7.5. total starts before the loop.
Mean and messages, after the loop:
average = total / 3
if average < TARGET:
print("Get more sleep")
else:
print("Well rested")
Only one message is output, once.
Every bullet ticked. The program was run with 7, 6.5 and 9 (mean 7.5): it outputs Get more sleep.
Exam tipBefore you leave a code question, read the bullet list once more against your code. The missing bullet is usually a whole mark, sometimes two.
Brief
The description of what a program must do, often given as a bullet list in the question.
5 Programming skills
How your code is marked
Code questions on Paper 1 are points-marked. The mark scheme has lettered marks: Mark A, Mark B and so on.
Design marks are for choosing the right techniques: meaningful names, a loop where one is needed, selection to make a choice. They are given even if the syntax is wrong or the program doesn't work, but there must be a genuine attempt: writing just while and if earns nothing.
Logic marks are for each piece that works: an input stored and converted, a correct condition, a total worked out, an output in the right place.
The cap: “Maximum n − 1 marks if any errors in code.” One real error anywhere means you can't get full marks.
Any correct method gets full marks, even one the mark scheme doesn't show. For example, while True: with break is accepted for REPEAT … UNTIL, and Python's match for selection.
Examiners mark how the logic flows, not perfect syntax. They are told to ignore minor slips that an editor would flag (table).
Indentation counts as far as the logic: the first line after if or while is taken as inside it, but later lines that aren't indented are treated as outside.
Ignored: no mark lost
An error: costs a mark or triggers the cap
Case: Print, IF, Total for total
OUTPUT or other pseudo-code in a Python answer
A missing colon after if, while or for
No int() or float() round input() when a number is needed
Missing or extra spaces, even inside a variable name
A comma instead of + to join strings into a variable (it makes a tuple)
A misspelt keyword (whiel) when it is clear
An f-string without the f
A missing import line or missing () in a call
A comparison not written in full: x == 1 or 2
One missing " round a string printed on its own
print where the brief says return (or the other way round)
≥ or => for >=; ≠ or <> for !=; x for *
Comparing a digit typed in (a string) with an integer: "1" == 1 is False
Prompt text, or none; output spacing, unless a layout is asked for
Giving a variable a value of a different type later in the program
Design marks for the right techniques, logic marks for working pieces, and a cap if anything is wrong.
Worked exampleMark this answer to the sleep brief from the previous section (1 design mark for selection; 4 logic marks: three decimal inputs, the mean, the condition, both messages; maximum 4 if any errors).
total = 0
for night in range(3)
hours = input("Hours: ")
total = total + hours
Average = total / 3
if average < 8:
OUTPUT("Get more sleep")
else:
print("Well rested")
Missing colon after range(3); Average then average.Ignored: case and a missing colon.
Design mark (selection to choose the message): given.Right technique, whatever the errors.
Inputs: lost. No float(), so total + hours adds a number to a string.A type error is a real error.
Mean: given (it divides the total by 3 after the loop). Condition < 8: given.Each logic mark is judged on its own piece.
Messages: lost. OUTPUT isn't Python.Can't gain the mark, every year.
3 out of 5. Two small fixes, float() and print, would have made it 5.
Exam tipDon't waste time making handwriting look like perfect syntax. Spend it on the logic: the loop, the conditions, and what is output where.
Design mark
A mark for choosing a suitable technique, such as a loop or selection, given even if the code has errors.
Logic mark
A mark for one part of the program working correctly.
3.7.2
SQL questions on Paper 2
SQL is the only code on Paper 2: usually 2 to 4 questions, about 8 to 14 marks, near the end of the paper.
Write SQL keywords, not Python or made-up words: SELECT … FROM … WHERE … ORDER BY; INSERT INTO … VALUES; UPDATE … SET … WHERE; DELETE FROM … WHERE. Answers using GET, SEARCH or PRINT score little.
A 6-mark query is usually marked A to F: the fields, each table, the join, the condition and the order (diagram). Fields asked for “and no others”, so don't use * or add extra fields.
Use = to compare, not ==. Put text and dates in quotes.
Write Table.Field with the table first: Pupil.ClubID, never ClubID.Pupil.
Copy table and field names exactly, with no spaces added.
Only your first attempt is marked. Cross out a rough version you don't want marked.
Gap-fill SQL: write exactly what goes in the gap. If the brackets are already printed, don't add more.
A two-table query, line by line, with the mark each line usually earns.
Worked exampleTables: Learner(LearnerID, FirstName, CourseID, Age) and Course(CourseID, Title, Weekday). Show the first name and course title of every learner aged 18 or over, in alphabetical order of first name. [6 marks]
SELECT Learner.FirstName, Course.TitleA: the two fields asked for, and no others.
FROM Learner, CourseB and C: both tables, and no others.
WHERE Learner.CourseID = Course.CourseIDD: the join. Table first, then the field.
AND Learner.Age >= 18E: “18 or over” includes 18, so >=.
ORDER BY Learner.FirstName ASCF: ASC is optional; alphabetical is ascending.
All six marks. INNER JOIN Course ON Learner.CourseID = Course.CourseID would earn the join mark too.
Exam tipCheck every field you use against the table in the question. A field from the wrong table, or a misspelt table name, is easy to fix in the last minute.
3.8 and 4.2
Discuss questions (6 and 9 marks)
Paper 2 has one or two Discuss questions, worth 6 or 9 marks. They are the only levels-marked questions on either paper.
9 marks: Level 1 is 1–3, Level 2 is 4–6, Level 3 is 7–9. 6 marks: Level 1 is 1–2, Level 2 is 3–4, Level 3 is 5–6.
The examiner reads the whole answer, decides which level fits it best, then gives a mark within that level.
Cover every bullet strand in the question. Answers that leave a strand out are usually held in Level 2.
Develop each point: say what happens, why, and what it means for the people in the context. A list of statements stays in Level 1, however long it is.
Stay on the context. If the question is about a company, write about the company; examiners report answers drifting to customers or hackers instead.
Give both sides where there are two, and finish with a short conclusion that weighs them up.
Plan for two minutes: write each strand as a heading with two points under it. Then write in paragraphs, one strand at a time. Allow about 11 minutes for a 9-marker.
No law has to be named. “Data protection laws” is enough; laws from other countries, such as the USA, aren't relevant.
The levels for a 9-mark Discuss question. Development, not length, moves an answer up.
Worked exampleTurn a statement into a developed point. Context: a gym replaces its membership cards with fingerprint scanners at the door.
Statement: “Fingerprints are personal data.”Level 1 on its own: true, but not explained.
Explained: “The gym has to store every member's fingerprint data, so it must keep it secure and ask for their consent.”Now it says what follows for the gym.
Developed: “If that data were stolen, members couldn't change their fingerprints the way they change a password, so the harm would last, and some people may refuse to join.”Consequence for the people in the context: this is Level 3 writing.
Statement → explanation → consequence for the context. Do this for each point.
Exam tipEnd with one or two sentences that weigh the points: “Overall, … because …”. A conclusion shows the examiner a discussion, not a list.
Levels of response
A way of marking where the examiner places the whole answer in a level that best fits it, then chooses a mark within it.
Strand
One of the bullet points in a Discuss question that the answer must cover.