UK Bebras
Short, non-coding computational-thinking tasks. Use Seniors or Elites when a pupil needs a 15–30 minute independent challenge.
Open UK Bebras ↗Choose a challenge linked to the SDD work you have already completed. A finished solution includes a design, purposeful tests and an evidence-based explanation—not just code that ran once.
Start with the challenge attached to your current learning. The later filters assume all earlier SDD knowledge, so they should not be used to skip untaught content.
Client brief: “The school fair needs a quick ticket system. It must prevent queues, work for everyone, store no personal data, remember every booking and be completely secure. It needs to be ready next week.”
Separate what is known, assumed and still unknown.
Identify contradictions and risks in the brief.
Make every requirement observable and testable.
Revise the analysis after a client change.
Change card: “The organiser now needs names for refunds, but booking data must be deleted after 30 days.” Look for explicit boundary changes, a new input/storage requirement and a reasoned discussion of iteration. Do not accept “use agile because it is quick” without context.
Design a program that accepts seven daily temperatures, displays the maximum, counts days below 5°C and identifies the first day matching a temperature entered by the user. Do not write Python yet.
Make the design work for any number of days.
Add a sensible response when no match exists.
Trace one dataset through every refinement.
Ask a partner to implement from the design alone and record ambiguities.
The peer implementability test is the key discriminator. Look for one count function with the threshold supplied as data, a linear-search sentinel such as −1, clear array notation and no unexplained data appearing inside a subprogram.
Begin with three parallel arrays holding book titles, authors and loan status. Refactor the program to use a @dataclass record and an array of records. The original and refactored programs must produce identical results for the same data.
titles = ["Dune", "Noughts & Crosses", "The Hobbit"] authors = ["Frank Herbert", "Malorie Blackman", "J. R. R. Tolkien"] on_loan = [True, False, True]
@dataclass record definitionAdd a fourth field without creating another array.
Prevent mismatched or incomplete record data.
Show equivalent outputs for at least three datasets.
Compare readability and maintainability using named code evidence.
Require the established course convention: @dataclass, not dictionaries. A strong evaluation identifies the precise indexing dependency removed by the refactor and explains the effect of adding another field.
Create a toolkit containing functions for linear search, maximum, minimum and count occurrences. Global variables are forbidden. Each subprogram may receive only the data it genuinely needs.
Use the same functions with integer and real arrays.
Define behaviour for an empty array and an absent target.
Test each function independently before integration.
Remove any repeated traversal that has no clear purpose.
Useful conference question: “If I changed this parameter, which lines could behave differently?” Reject unnecessary parameters added merely because the top-level program happens to own the data.
A sports-club membership file contains blank lines, duplicate identifiers, invalid numbers and incomplete records. Read the file, preserve every valid record, reject invalid rows safely and write both a clean file and an error report.
Download starter fileProcess any number of input rows.
Handle missing fields, bad numbers, blanks and duplicates.
Reconcile input, accepted and rejected row totals.
Separate reading, validation, processing and writing into modules.
The starter has 10 non-blank data rows: five valid unique records and five rejected rows if the first occurrence of duplicate ID M104 is retained. Accepted + rejected should equal processed non-blank rows. Pupils may choose another consistent duplicate policy if documented.
Modify linear search so it returns both the matching position and the number of comparisons made. Construct datasets that demonstrate the best case, a middle match, the last-position match and an absent value.
Repeat the investigation across different array sizes.
Include duplicates, empty data and an absent target.
Explain why each count follows from the loop.
Research binary search, state its sorted-data precondition and compare results.
Binary search is explicitly optional enrichment, not a Higher requirement. For a conventional early-exit linear search of n items: first match = 1 comparison; last match or absent target = n comparisons.
The function below is intended to count scores at or above a supplied threshold. It contains more than one logic defect. Design tests before changing the code, predict the correct results, expose each defect and record every correction in a fault log.
def count_at_least(scores, threshold):
count = 1
for position in range(0, len(scores) - 1):
if scores[position] > threshold:
count = count + 1
return count
Test arrays of several different sizes.
Include empty, one-item, boundary and no-match data.
Use the minimum set of tests that still exposes all defects.
Create three new faulty mutations for a partner to test.
Three seeded defects: count starts at 1, the loop omits the final item, and > excludes a value equal to the threshold. One strong compact set is: empty array; one value equal to threshold; and two values with only the final one above threshold.
Improve these statements: “The program is robust because it works.” “It is efficient because it uses functions.” “It is maintainable because the variable names are good.” Each replacement must make a judgement, cite named evidence and explain its effect.
Apply the method to fitness for purpose and usability too.
State what the available evidence cannot prove.
Link each judgement to code or a recorded test.
Moderate a partner's response against the rubric below.
A useful frame is: judgement → named evidence → effect → limitation. The 2025 course report specifically warns against generic evaluation and National 5-level comments that do not refer to Higher concepts.
Create a small event-entry system that loads entrant records, searches by identifier, counts entrants in a selected category and writes a results file. After the first working version, obtain a change card from your teacher.
Support any number of valid records and categories.
Handle absent files, malformed rows and unknown identifiers.
Trace every requirement to design, code and test evidence.
Implement the change and evaluate its impact across all stages.
Change cards: (1) ties must be reported; (2) rejected rows must be written to a separate file; (3) category is no longer restricted to a fixed list; (4) a single reusable count function must replace separate category functions. Issue only one card per pupil or pair.
Write an original SDD question worth 8–12 marks. It must combine at least three of: analysis, data flow, implementation, testing, debugging or evaluation. Then produce a marking scheme and moderate another pupil's answer.
Use an unfamiliar context rather than a renamed class example.
Remove ambiguity that would allow conflicting valid answers.
Show exactly where every mark is earned.
Revise the task after blind peer moderation.
Check command words, technical accuracy and whether the marking scheme rewards the wording actually asked. Strong pupils should include accessible marks as well as genuine discriminator marks, rather than writing an impossibly difficult puzzle.
Use the rubric for conferencing and feedback. It rewards quality and evidence rather than the quantity of code produced.
| Dimension | Developing | Secure | Extended |
|---|---|---|---|
| Problem and design | Some requirements or design decisions are implicit. | Requirements and design are complete and consistent. | Assumptions, alternatives and trade-offs are justified. |
| Implementation | Works for the supplied example. | Works for multiple valid datasets and follows the design. | Is modular, generalised and handles defined failures safely. |
| Testing | Tests mainly normal data. | Includes normal, boundary and exceptional data with predicted results. | Every test has a purpose and the set convincingly covers the requirements. |
| Evaluation | Makes generic claims. | Uses named evidence and explains its effect. | Balances strengths, limitations and a justified improvement. |
| Communication | The final result can be followed with support. | Design, code and evidence are clear to another programmer. | A peer can reproduce or extend the solution independently. |
Short, non-coding computational-thinking tasks. Use Seniors or Elites when a pupil needs a 15–30 minute independent challenge.
Open UK Bebras ↗Begin with ISBN, Roman Numerals, Time to Words, Mayan Calendar or Passwords before attempting a full paper.
Open the problem archive ↗Problems 1, 2 and 4 are useful starting points. Submit a design, test evidence and explanation—not only the final number.
Open the problem archive ↗Challenge questions combine multiple concepts and provide a structured route into wider GCSE and A-level material.
Open Isaac Computer Science ↗Use Shift+T to reveal or hide all teacher notes. A simple operating rule is “core complete → one agreed challenge → evidence conference”. Avoid assigning later filters before the associated content has been taught. The page deliberately foregrounds evaluation and explanation because the 2025 Higher Computing Science course report identifies generic evaluation and extended responses as continuing weaknesses.