Software Design & Development · Assessment Practice

SDD21 — Past Paper Practice

📅 Thu 1 Oct 2026 · P3+P4 (double)
~120 minutes
Learning intentions
Success criteria
Warm up — command words
Answer all three questions, then check your answers.
Question 1
A question asks you to "identify" something. What kind of answer is expected?
Question 2
If a question is worth 4 marks and asks you to "explain", roughly how many distinct points should your answer make?
Question 3
Which SDD18 command word specifically asks you to judge a program against named criteria, rather than just describe it?

Key vocabulary — command words

Identify / state
Give a short, specific answer — a name, value, or term — with no explanation required.
Describe
Give an account of what something is or does, in more detail than "identify" but without justifying why.
Explain
Give reasons or causes — say why or how something happens, not just what happens.
Design
Produce a plan (structure diagram, pseudocode, wireframe) before any code — the answer should not simply be Python.
Evaluate
Judge something against specific, named criteria (SDD18's five) and reach a conclusion, not just describe it.

Exam technique across the whole SDD unit

Why exam technique is its own skill

Knowing SDD content and answering SDD exam questions well are related but distinct skills. A pupil who deeply understands parameter passing can still lose marks by writing a two-line answer to a four-mark "explain" question, or by describing a structure diagram in words when a question specifically says "design". This lesson does not teach new SDD content — every fact and function used below has already appeared in SDD1–20 — it teaches how to convert that knowledge into full marks under exam conditions.

Command words set the shape of the answer

SQA questions use command words deliberately and consistently: "identify" or "state" wants a short, specific answer with no justification; "describe" wants an account of what something is or does; "explain" specifically wants reasons — why or how, not just what; "design" wants a plan such as a structure diagram or pseudocode, not Python code; and "evaluate" wants a judgement against named criteria, reaching a conclusion, not simply a description. Misreading the command word is one of the most common and most avoidable ways marks are lost — writing a beautifully detailed description in response to an "explain" question can still score close to zero if it never actually gives a reason.

Mark allocation tells you how much to write

The number of marks a question is worth is a direct signal of how many distinct points are expected — a 1-mark question wants one clear fact; a 3-mark question wants three genuinely separate, creditable points, not one point repeated in different words. Writing far more than the marks justify wastes time that could go toward a later question; writing far less risks missing marks that were clearly available. This is exactly why SDD16's test plans and SDD18's evaluations were built around explicit, separately-listed points rather than a single flowing paragraph — that structure maps directly onto how marking schemes award credit.

Mixed-topic questions test whether skills transfer

Section 1 of the question paper (55 marks, SDD + Computer Systems) draws on the whole SDD spec at once, not one lesson at a time — a single scenario might ask for a structure diagram (SDD3/4), a traced algorithm (SDD13/14/15), a test plan (SDD16), and an evaluation (SDD18) about the very same program. This is exactly the skill SDD19 and SDD20 rehearsed by combining several lessons' content into one program — this lesson extends that same "combine what you know" skill to genuinely mixed exam-style questions across the entire unit, not just one program at a time.

Worked examples — exam-style questions with marking schemes

Example 1 — Design (SDD3/4), 3 marks
1
Design3 marks
A program reads quiz scores from an array, calculates the average, finds the highest score, and displays a summary (see SDD19). Design the top-level structure of this program, showing what data is passed between its sub-programs.
Marking scheme
  • 1 mark — identifies calculateAverage and findHighestScore as functions that both take the scores array and return a value
  • 1 mark — identifies displayResults as a procedure that takes the average, highest value, and highest index as parameters
  • 1 mark — shows the correct data flow: scores → functions → results → displayResults, not code
Note that a full Python implementation, even a completely correct one, would not earn all three marks here — the command word "design" specifically asks for the structural plan (as in SDD19 Example 2), not the code itself (SDD19 Example 3).
Example 2 — Implementation/tracing (SDD13/14), 4 marks
1
Implementation4 marks
Given stockLevels = [30, 45, 20, 15, 60, 18], trace findMaximum(stockLevels) and state the final value returned. Show the value of the running maximum after each comparison.
Marking scheme
  • 1 mark — running maximum starts at 30 (array[0])
  • 1 mark — running maximum updates to 45 at index 1, then stays at 45 through indices 2–3 (20 and 15 are both smaller)
  • 1 mark — running maximum updates to 60 at index 4, then stays at 60 at index 5 (18 is smaller)
  • 1 mark — final value returned: 60
Confirmed by an actual Python run: findMaximum(stockLevels)60, exactly as established in SDD14.
Example 3 — Testing (SDD16), 3 marks
1
Testing3 marks
calculateAverage(100, 0) raises ZeroDivisionError: division by zero. Identify the type of error this is, and explain your reasoning.
Marking scheme
  • 1 mark — identifies this as an execution (runtime) error
  • 1 mark — explains that it occurs while the program is running, not before (ruling out a syntax error)
  • 1 mark — explains that the program crashes rather than completing and producing a wrong result (ruling out a logic error)
This is exactly the SDD16 error-type framework applied to a genuine, Python-confirmed example — note the question uses two command words together ("identify" then "explain"), each needing a different kind of answer within the same response.
Example 4 — Evaluation (SDD18), 4 marks
1
Evaluation4 marks
readBooks("") (SDD20) raises IndexError rather than returning an empty array. Evaluate the program's robustness, and explain how this connects to fitness for purpose.
Marking scheme
  • 1 mark — identifies robustness as only partially met, since the program crashes on this input
  • 1 mark — explains that robustness specifically concerns handling unexpected/invalid input without crashing
  • 1 mark — explains the connection to fitness for purpose: if reading an empty file was ever a stated requirement, this failure would also mean fitness for purpose is not fully met
  • 1 mark — notes that if an empty file was never a stated requirement, fitness for purpose could still be judged as met, showing the two criteria are related but not identical
This question rewards exactly the kind of criterion-by-criterion precision SDD18's common mistakes box warned about — a vague "it's not very robust" answer without connecting to fitness for purpose would only earn the first mark.
Now you try
A question worth 2 marks asks: "State two functional requirements for the library book program in SDD20." Write a full-marks answer.
⚠️ Common mistakes — examiner feedback
📝 Exam tip

Before writing an answer, underline or circle the command word and the mark value in the question. This takes seconds and directly shapes what kind of answer to write and how much time to spend on it — a habit worth building now, in low-stakes practice, rather than for the first time in the actual exam in May 2027.

Task Set A — Mixed past-paper-style questions

Task Set A — Core questions
Mixed-topic questions spanning SDD1–20. Work through all questions, then check your answers.
Question 1 — SDD9, 1 mark
Given SDD9's applyDiscount(75) function, state the value it returns.
Question 2 — SDD10, 1 mark
State the value of ord("A").
Question 3 — SDD13, 1 mark
Given stockLevels = [30, 45, 20, 15, 60, 18], state the index returned by linearSearch(stockLevels, 15).
Question 4 — SDD1, 2 marks
Which statement best describes a key difference between iterative development and agile methodology?
Question 5 — SDD11/12, 2 marks
A value read from a file using .split(",") is concatenated directly with another value using +, causing a TypeError. What is the most likely cause?
Question 6 — SDD20, 3 marks
Design the top-level structure for the SDD20 library-book program's findBookByTitle, issueLoan, and writeBooks sub-programs, showing the data flow between them.
Question 7 — SDD17, 4 marks
Explain the difference between a breakpoint and a watchpoint, and explain which would more directly help diagnose SDD17's findMinimum bug (where smallest incorrectly stays at 0).
Write a function countAffordable(prices, budget) that returns a count of how many prices in the array are less than or equal to the budget, reusing the count-occurrences standard algorithm generalised to a condition (as in SDD15/SDD20).
Question 9 — SDD18/20, 5 marks
Evaluate the SDD20 library-book program against all five evaluation criteria. (5 marks)
Question 10 — SDD16/20, 4 marks
Describe what a comprehensive test plan for the SDD20 library-book program should include, and explain why each category of test data matters.

Task Set B — Extension

Task Set B — Extension · Beyond the specification
Longer written answers — no auto-check. Discuss your answers with your teacher.
Extension 1
Reflect honestly on your own performance across Task Set A. Which specific strand (analysis, design, implementation, testing, or evaluation) do you think needs the most further revision, and why?
Extension 2
Given that Section 1 of the question paper (55 of 80 marks) covers SDD and Computer Systems together, suggest what this implies about how exam-technique revision time should be allocated, and what SDD22 should focus on as a result.
Extension 3
Design one further mixed-topic past-paper-style question of your own, combining at least three different SDD lessons, and briefly describe what each part would test.
📁 File this in OneNote under:
Higher Computing Science → Software Design & Development → SDD21
📌 Teacher notes — not for pupils

Single period — pure retrieval/exam-technique practice, no new SDD content. Every fact and function reused in this lesson (applyDiscount, ord/chr, linearSearch, findMaximum, calculateAverage's ZeroDivisionError, readBooks' IndexError, breakpoints/watchpoints, the five evaluation criteria) was already Python-verified in its original lesson (SDD9/10/13/14/16/17/18/20) — no new facts were introduced here, only new question framings around existing, confirmed facts.

Suggested timing: 5 min warm-up + command-word vocab · 15 min notes + Examples 1–4 (work through the marking schemes explicitly, ideally letting pupils attempt each question cold before revealing the scheme) · 5 min "now you try" · remainder Task Set A; Task Set B as homework/extension, feeding directly into personal revision planning for SDD22.

Per §4's build-order note, this was built without an audit of a colleague's parallel SDD-equivalent past materials (unlike the CS unit's audit against Chris's materials) — worth doing before the next iteration of this lesson if such materials exist, since genuine past-paper-style questions from a marked source would strengthen this further.

SQA command words explicitly covered: identify, state, describe, explain, design, evaluate, compare.