6 missions. Guess, learn, then check. Your place is saved.
Mission 1Why does the Tube map ignore real distances, yet still work?
Mission 2How can you find a bug without running the program?
Mission 3How can 20 checks find one name among a million?
Mission 4Why is it called a bubble sort?
Mission 5Why does a fast sort start by chopping a list into pieces?
Mission 6You typed 41, not 14, for your age. Why did the form accept it?
The specification points and sources are listed under the lesson: see Sources.
Mission 1
Why does the Tube map ignore real distances, yet still work?
Make a guess: Why does the Tube map ignore real distances, yet still work?
Algorithms · computational thinking
Breaking a problem down
Decomposition means breaking a problem into smaller sub-problems, each doing one identifiable task.
Each sub-problem can be broken down again until it is simple to solve.
Parts can be solved and tested separately, even by different people.
"Plan a Tube journey" splits into: find the nearest station, choose the route, work out the time.
Algorithms · computational thinking
Leaving detail out
Abstraction is removing unnecessary detail from a problem to focus on what matters.
Harry Beck's 1933 Tube map keeps the lines, the order of stations and where they connect.
It drops true distances and the real shape of the tunnels: travellers do not need them.
A program does the same: it models the real world with only the details the task needs.
Quick check
?A program models a snooker shot to predict where the balls will stop. Which detail should abstraction remove?
Algorithms · computational thinking
Inputs, processes and outputs
To analyse a problem, identify its inputs (data going in), processes (what is done to the data) and outputs (results).
Car park ticket machine: inputs are the hours wanted and the coins; the process works out the cost and change; outputs are the ticket and the change.
Quick check
?A program asks for a room's length and width and the carpet price per m², then shows the total cost. Which of these is a process?
Algorithms · computational thinking
Algorithms and algorithmic thinking
An algorithm is a sequence of steps that can be followed to complete a task.
The same algorithm can be written as a flowchart, as pseudocode or as program code.
Decomposition, abstraction and algorithms together are the core of computational thinking.
Quick check
?A team splits a school app into login, timetable and messages, and gives each part to a different programmer. Which idea is this?
Mission check
?Why does the Tube map ignore real distances, yet still work?
Beck's map is an abstraction. It removes detail a traveller does not need (true distances, tunnel shapes) and keeps what they do need (the lines, the order of stations and where to change), so planning a journey splits into simple sub-problems: which line, where to change, where to get off.
Mission 2
How can you find a bug without running the program?
Make a guess: How can you find a bug without running the program?
Algorithms · representing algorithms
Flowchart symbols
Symbol
Meaning
Rounded rectangle (terminator)
Start or Stop
Parallelogram
Input or output
Rectangle
Operation (a process), such as a calculation
Diamond
Decision: two exits, Yes/No or True/False
Rectangle with double sides
Subroutine (a separate sub-program)
Arrow (flow line)
The direction control flows
A flowchart shows an algorithm's steps and the order they happen in.
Eduqas also uses a small circle as a connector to join parts of a flowchart.
Quick check
?This flowchart is run with the input 10. What does it output?
Algorithms · representing algorithms
Pseudocode and code
Pseudocode writes an algorithm as structured statements, not tied to one programming language.
Eduqas uses the pseudo-code conventions in its specification, shown here
This algorithm loops while the count is above 0. Each time round it doubles the result and counts down by 1.
Eduqas pseudo-code
set count = 3
set result = 1
while count > 0
set result = result * 2
set count = count - 1
repeat
output result
Algorithms · representing algorithms
Trace tables
A dry run follows an algorithm by hand. A trace table records it: one column per variable, plus Output.
Add a row when a value changes. For screen 3, count goes 3, 2, 1, 0 and result goes 1, 2, 4, 8.
The pattern shows the purpose: it works out 2 to the power of the starting count.
Calculate
?Dry-run this algorithm. What does it output?
Eduqas pseudo-code
set num = 37
set steps = 0
while num > 1
set num = num DIV 2
set steps = steps + 1
repeat
output steps
Algorithms · representing algorithms
Errors in algorithms
A syntax error breaks the language's rules, e.g. a missing end if. The code will not run.
A logic error: the code runs but gives a wrong result, e.g. > where ≥ was needed.
To fix a logic error, dry-run with test data, find where the trace goes wrong, correct it and retest.
Quick check
?This algorithm should output Pass for any mark of 50 or more. Which test mark shows that it has a logic error?
Eduqas pseudo-code
input mark
if mark > 50
output "Pass"
else
output "Fail"
end if
Mission check
?How can you find a bug without running the program?
A dry run follows the algorithm by hand, recording every variable and output in a trace table. Where a value or output differs from what it should be, you have found the logic error and its line, without running anything.
Mission 3
How can 20 checks find one name among a million?
Make a guess: How can 20 checks find one name among a million?
Algorithms · searching
Linear search
A linear search checks each item in turn, from the first, until it finds the target or reaches the end.
At worst (target last, or missing) it checks every item.
Eduqas pseudo-code
set found = FALSE
set i = 0
while i < 7 AND found = FALSE /** items holds 7 values: index 0 to 6 */
if items[i] = target
set found = TRUE
else
set i = i + 1
end if
repeat
if found = TRUE
output i
else
output "Not found"
end if
Calculate
?A linear search looks for 50 in [27, 8, 63, 15, 44, 3, 70]. How many items does it check?
Algorithms · searching
Binary search
A binary search only works on a sorted list.
Check the middle item. If it is the target, stop.
If the target is bigger, discard the middle item and all before it. If smaller, discard it and all after it.
Repeat on what is left until the target is found or nothing is left.
Each check halves the list: a divide and conquer algorithm.
Algorithms · searching
Binary search in code
first and last mark the part of the list still being searched.
The middle position is (first + last) DIV 2, using whole-number division.
With an even number of items this picks the lower of the two middle items.
Some textbooks take the higher middle item. Use one rule throughout, or the rule a question gives.
The loop ends when the target is found or first passes last.
Eduqas pseudo-code
set first = 0
set last = 14 /** items holds 15 values: index 0 to 14 */
set found = FALSE
while first <= last AND found = FALSE
set mid = (first + last) DIV 2
if items[mid] = target
set found = TRUE
else
if items[mid] < target
set first = mid + 1
else
set last = mid - 1
end if
end if
repeat
Your answer
?A binary search looks for 40 in this sorted list of 15 items. Which items does it check, in order? Separate them with commas.
Binary search is far more time-efficient on large sorted lists.
Linear search suits small or unsorted lists. Sorting a list first takes time too.
Quick check
?A shop's till stores the 30 items in a basket in the order they were scanned. Which search should check whether a pen was scanned?
Calculate
?A sorted list has 127 items. What is the greatest number of items a binary search will check?
Mission check
?How can 20 checks find one name among a million?
A binary search on the sorted names checks the middle one and discards half of the list each time. Twenty halvings are enough, because 2^20 = 1,048,576 is more than 1,000,000. A linear search might need all 1,000,000 checks.
Mission 4
Why is it called a bubble sort?
Make a guess: Why is it called a bubble sort?
Algorithms · sorting
One pass
A bubble sort compares each adjacent pair of items, starting at the front of the list.
If the pair is in the wrong order, swap them. Then move along one place and compare the next pair.
One trip through every pair is a pass.
After pass 1 of [5, 2, 8, 1, 4], the list is [2, 5, 1, 4, 8].
Your answer
?Do one pass of a bubble sort (into ascending order) on [6, 3, 9, 1, 7, 4]. What is the list after pass 1? Separate the numbers with commas.
Algorithms · sorting
Passes until sorted
Keep making passes. Each pass carries the largest unsorted item to its final place.
Stop after a pass that makes no swaps: the list must be sorted.
[5, 2, 8, 1, 4] needs 3 passes with swaps, then a 4th pass with none to confirm it.
A list of n items needs at most n − 1 passes that make swaps.
Calculate
?A bubble sort stops after a pass with no swaps. How many passes does it make on [6, 3, 9, 1, 7, 4], including that last pass?
Algorithms · sorting
Bubble sort in code
The inner loop is one pass: it compares item i with item i + 1 and swaps them if needed.
the array items holds 6 values at indexes 0 to 5, so i runs from 0 to 4.
A swap needs a temporary variable, temp, to hold one value.
swapped records whether the pass changed anything. The outer loop repeats until a pass makes no swaps.
Eduqas pseudo-code
repeat
set swapped = FALSE
for i = 0 to 4
if items[i] > items[i + 1]
set temp = items[i]
set items[i] = items[i + 1]
set items[i + 1] = temp
set swapped = TRUE
end if
next i
until swapped = FALSE
Quick check
?A student swaps two items without a temporary variable. Before these two lines run, the first item holds 9 and the second holds 2. What do they hold afterwards?
Eduqas pseudo-code
set items[i] = items[i + 1]
set items[i + 1] = items[i]
Algorithms · sorting
Strengths and weaknesses
Simple to understand and to code.
Sorts in place: it needs almost no extra memory.
Quick on a nearly sorted list: a sorted list needs just one pass.
Slow on large lists: with 1,000 items, each pass makes 999 comparisons, and it may need 999 passes with swaps.
Calculate
?The code on screen 5 compares 5 pairs in every pass. How many comparisons does it make in total to sort [6, 3, 9, 1, 7, 4]?
Mission check
?Why is it called a bubble sort?
In each pass, swaps carry the largest unsorted item along the list until it reaches its place at the end, like a bubble rising to the top of a drink. Each pass bubbles one more item into place, and a pass with no swaps shows the list is sorted.
Mission 5
Why does a fast sort start by chopping a list into pieces?
Make a guess: Why does a fast sort start by chopping a list into pieces?
Algorithms · sorting
Split until single items
A merge sort first splits the list into two halves, then splits each half, and so on.
Splitting stops when every list holds one item. A list of one item is already sorted.
8 items take 3 rounds of splitting: 8 → 4 + 4 → four lists of 2 → eight lists of 1.
Breaking a problem into smaller problems like this is divide and conquer.
Algorithms · sorting
Merge sorted lists
Now merge pairs of sorted lists into bigger sorted lists, until one list is left.
To merge, compare the first items of both lists and move the smaller to the new list. Repeat.
When one list is empty, copy the rest of the other across with no more comparisons.
Merging [2, 4, 6, 9] with [1, 3, 7, 8] takes 7 comparisons (see diagram).
Your answer
?Merge the sorted lists [3, 8, 9] and [1, 4, 10]. What is the merged list? Separate the numbers with commas.
Algorithms · sorting
Comparing sorts
Bubble sort
Merge sort
Large lists
Slow: hundreds of thousands of comparisons for 1,000 items
Fast: under 9,000 comparisons for 1,000 items
Memory
Sorts in place, little extra memory
Needs extra memory for the split lists
Code
Simple
More complex
Nearly sorted list
Quick if only a few items are out of place
Still splits and merges everything
Quick check
?A phone with plenty of free memory must sort 2 million photos into date order. Which sort suits it best?
Calculate
?How many comparisons does it take to merge [4, 5, 6] with [7, 8, 9]?
Mission check
?Why does a fast sort start by chopping a list into pieces?
Merge sort splits a list until every piece holds one item, and a single item is already sorted. Merging two sorted lists takes at most one comparison per item placed, so 1,000 items need under 9,000 comparisons, where a bubble sort can need hundreds of thousands.
Mission 6
You typed 41, not 14, for your age. Why did the form accept it?
Make a guess: You typed 41, not 14, for your age. Why did the form accept it?
Programming · validation and authentication
What validation does
Validation is an automatic check that input is sensible and follows rules before the program uses it.
Invalid data is rejected, and the user is told why and asked again.
It stops bad data causing crashes or wrong results later.
Validation cannot tell whether data is correct: a mistyped value that still follows the rules gets through.
Programming · validation and authentication
Types of validation check
Check
What it tests
Example
Range check
a number is between limits
age 0 to 120
Length check
number of characters
password at least 8
Presence check
something was entered (not empty)
surname not blank
Type check: the data is the right data type, e.g. a whole number.
Format check: the data matches a set pattern, e.g. a date as DD/MM/YYYY.
Check digit: the last digit of a code such as an ISBN or barcode, calculated from the other digits. On entry it is recalculated; a mismatch shows a mistyped digit.
Lookup table: the value must be in a list of allowed values, e.g. Mon to Sun.
Quick check
?A field for a 4-digit PIN accepted 12. Which check would have rejected it?
Programming · validation and authentication
Writing a validation routine
Ask for input, test it, and keep asking until it passes.
A loop does this: the user cannot move on with invalid data.
This repeat ... until loop is a range check for 1 to 10.
Eduqas pseudo-code
repeat
output "Score 1 to 10"
input score
until score >= 1 AND score <= 10
Calculate
?The user types three names in this order: an empty string, Al, then Amir. How many times is "Too short" output?
Eduqas pseudo-code
repeat
input name
if len(name) < 3
output "Too short"
end if
until len(name) >= 3
output "Hello ", name
Programming · validation and authentication
Verification
Verification checks that data was entered or copied accurately, so it matches the original.
Double keying (double entry): type the data twice; the computer compares the two and rejects a mismatch.
Proofreading: a person reads the data back and compares it with the original.
Validation asks "is it sensible?"; verification asks "is it what was meant?". Typing 41 for 14 passes validation; comparing it with the original could catch it.
Programming · validation and authentication
Authentication
Authentication confirms the identity of a user before they get access, e.g. with a username and password.
The program compares what is typed with the stored details.
Eduqas pseudo-code
input username
input password
if username = "sam01" AND password = "Tr33house"
output "Access granted"
else
output "Access denied"
end if
Quick check
?A programmer types OR instead of AND in the authentication condition. Which login is now wrongly granted access?
Mission check
?You typed 41, not 14, for your age. Why did the form accept it?
Validation checks that data is reasonable, such as an age from 0 to 120. 41 follows that rule, so it is accepted even though it is wrong. A verification check, such as reading the entry back, is how mistakes like this are caught.
Recap
Big ideas
Decomposition breaks a problem into sub-problems that can be solved separately.
Abstraction removes unnecessary detail so a model keeps only what the task needs.
Abstraction and decomposition are the first steps of a systematic approach to a programming task.
Flowcharts, pseudocode and program code are three ways to write the same algorithm.
A trace table records each variable during a dry run; it reveals the output, the purpose and any logic error.
Syntax errors stop code running; logic errors give wrong results.
Linear search checks items one by one; it works on unsorted data but can need a check for every item.
Binary search needs sorted data; it checks the middle and halves the list each time, so it needs far fewer checks.
A bubble sort compares adjacent pairs and swaps any in the wrong order; one run through the list is a pass.
After each pass, the largest unsorted item is in place; stop when a pass makes no swaps.
It is simple and needs little memory, but it is slow for large lists.
Merge sort splits the list down to single items, then merges sorted lists back together: divide and conquer.
Merge sort is much faster on large lists but needs extra memory; bubble sort is simpler and sorts in place.
Validation automatically checks input is sensible, e.g. range, length and presence checks, and rejects data that breaks the rules; it cannot check data is correct.
Verification checks data matches the original: double keying and proofreading.
Authentication confirms who a user is, e.g. by matching a username and password.
🏆
Mini-lesson complete!
⭐⭐⭐
You've worked through Algorithms for Eduqas GCSE Computer Science. 🎉
Mission 1Why does the Tube map ignore real distances, yet still work?
Mission 2How can you find a bug without running the program?
Mission 3How can 20 checks find one name among a million?
Mission 4Why is it called a bubble sort?
Mission 5Why does a fast sort start by chopping a list into pieces?
Mission 6You typed 41, not 14, for your age. Why did the form accept it?