Debugging is the process of finding and fixing errors (bugs) in your code. Every programmer debugs — including professionals — so learning a systematic method is one of the most valuable skills in KS3 computing. A calm, logical approach beats random guessing every time.
What is a bug and where does the word come from?
The word "bug" for a computer error is famously linked to 1947, when engineers at Harvard found a real moth trapped inside the relay of an early computer, causing it to malfunction. They taped the moth into their logbook with the note "first actual case of bug being found." The term has stuck ever since.
Today a bug simply means any error in code that causes it to behave differently from what was intended. The DfE national curriculum for computing requires KS3 students to "create, reuse, revise and repurpose digital artefacts" — and debugging is a core part of the revision step.
What are the three types of programming errors?
Before you can fix a bug, you need to know which type it is. There are three:
| Error type | When it appears | Typical cause | Example |
|---|---|---|---|
| Syntax error | Before the program runs | Misspelling, missing colon or bracket | print "Hello" (missing parentheses in Python 3) |
| Runtime error | While the program is running | Dividing by zero, accessing a list index that does not exist | score = 10 / 0 |
| Logic error | Program runs but gives wrong output | Flawed reasoning in the code | Using + instead of * in a calculation |
Syntax errors are caught by the Python interpreter before anything runs — it refuses to start. Runtime errors crash the program mid-execution with an error message. Logic errors are the trickiest: the program runs without crashing, but produces the wrong answer.
How to debug code: a step-by-step process
Step 1 — Read the error message carefully
If Python throws an error, read the whole message before touching any code. It tells you:
- The type of error (e.g.
SyntaxError,NameError,IndexError). - The line number where Python noticed the problem.
- A brief description of what went wrong.
Note: the problem is often on the line before the one Python points to — Python sometimes only notices a mistake when it reaches the next statement.
Step 2 — Reproduce the error reliably
Before fixing anything, make sure you can reproduce the bug consistently. If it only happens sometimes, the problem may depend on user input or data. Try to identify the exact input that triggers it.
Step 3 — Add print statements to inspect values
The simplest and most powerful debugging tool at KS3 is the print statement. Insert print() calls to display variable values at key points in your code.
# Debugging a score calculation
score = 0
for i in range(5):
score = score + i * 2
print("After round", i, "score is", score) # debug line
print("Final score:", score)
Running this shows you exactly how score changes on each iteration — making it easy to spot the moment it goes wrong.
Step 4 — Trace through the code by hand
For short programs, grab a piece of paper and trace through the code manually — this is called a dry run or trace table. Write down the value of every variable after each line executes.
Example: Find the bug in this code:
total = 0
numbers = [3, 7, 2, 8, 5]
for n in numbers:
total = n # BUG: should be total = total + n
print("Total:", total)
Trace table:
| Line | n |
total |
What should happen |
|---|---|---|---|
| Start | — | 0 | — |
| Iteration 1 | 3 | 3 | total should be 3 (correct so far) |
| Iteration 2 | 7 | 7 | total should be 10 — bug visible here |
| Iteration 3 | 2 | 2 | total should be 12 — keeps getting overwritten |
The trace table reveals immediately that total = n replaces the total each time instead of adding to it.
Fix: change total = n to total = total + n (or total += n).
Step 5 — Fix one thing at a time
Resist the urge to change multiple things simultaneously. If you alter three lines and the bug disappears, you do not know which change fixed it — or whether you have accidentally introduced a new bug. Change one thing, test, then change another if needed.
Step 6 — Test thoroughly after fixing
Once you believe the bug is fixed, test your program with a range of inputs — including edge cases (the empty list, zero, a very large number, a negative number). A fix that works for one input may break for another.
What is a syntax error in Python?
Common Python syntax errors KS3 students encounter:
- Missing colon after
if,for,while, ordef— Python requires a colon to start an indented block. - Incorrect indentation — Python uses indentation to define blocks; a misaligned line causes an
IndentationError. - Mismatched brackets — every
(needs a matching). - String not closed — forgetting to close a string with a matching quotation mark.
Frequently asked questions
What does debugging mean in KS3 computing?
Debugging means finding and fixing errors (bugs) in code. A systematic approach — reading error messages, using print statements, tracing variable values, and testing thoroughly — is far more effective than randomly changing lines of code and hoping for the best.
What is the difference between a syntax error and a logic error?
A syntax error is a mistake in the grammar of the programming language — Python refuses to run the program at all. A logic error is a mistake in the programmer's reasoning — Python runs the program without complaint, but the output is wrong. Logic errors are generally harder to spot because there is no error message to guide you.
Why do professional programmers still have bugs in their code?
Programming involves breaking complex problems into precise instructions — and the larger the program, the more opportunities there are for a small mistake to hide. Professional programmers use testing, code reviews and debugging tools to find bugs systematically, but no program of significant size is entirely bug-free. Learning to debug well is as important as learning to write code in the first place.
What tools can help me debug Python code at KS3?
At KS3 the most reliable tool is the print() statement — inserting it at key points to inspect variable values. Many Python editors (such as Thonny, which is specifically designed for beginners) have a built-in debugger with a step-through mode that lets you run the program one line at a time and watch variable values change in real time.
For Socratic computing tutoring — including guided debugging practice — see aitutors.me.