Paper 1 Topic 1: Computational Thinking
Basic knowledge and understanding of the programming concept, theory part
1.1.1 Understand what an algorithm is, what algorithms are used for and be able to interpret algorithms (flowcharts, pseudocode, written descriptions, program code).
An algorithm is a set of step-by-step instructions designed to perform a task or solve a problem.
Flowchart symbols :

1.1.2 Understand how to create an algorithm to solve a particular problem, making use of programming constructs (sequence, selection, iteration) and using appropriate conventions (flowchart, pseudocode, written description, draft program code).
You should be able to design an algorithm to solve a specific problem using:
Sequence – steps in order.
Selection – decisions (e.g.
if,else).Iteration – repetition (e.g.
for,whileloops).
1.1.3 Understand the purpose of a given algorithm and how an algorithm works.
You should be able to:
Describe what an algorithm does (its goal).
Explain how it works — step by step.
Identify inputs, processes, and outputs.
1.1.4 Understand how to determine the correct output of an algorithm for a given set of data.
You should be able to:
Trace an algorithm for a given set of inputs.
Work out the expected output (sometimes using a trace table to keep track of variables).
1.1.5 Understand how to identify and correct errors in algorithms, including using trace tables.
You should be able to:
Spot logical errors (the algorithm works but gives wrong results).
Definition:Errors which cause incorrect or unwanted behaviours such as using the wrong arithmetic operator or mixing up variable names.
Spot syntax errors (in code form, prevents running).
Definition:Errors in the rules of the programming language such as a missing ':', misspelled words and missing or incorrect indentation.
Spot runtime errors (program crashes and does not run)
Definition: Errors which cause a program to crash such as dividing by 0 or 'index out of range'.
Use trace tables to simulate execution and debug the algorithm.
1.1.6 Understand how to code an algorithm in a high-level language.
You should be able to:
Translate pseudocode or a flowchart into a high-level language (like Python).
Ensure that the algorithm’s behaviour remains the same when implemented in code.
1.1.7 Understand how the choice of algorithm is influenced by the data structures and data values that need to be manipulated.
You should understand:
Different algorithms work better with certain data types or data structures.
Example: Binary search only works on sorted lists.
Example: Some sorting algorithms perform better on linked lists than arrays.
1.1.8 Understand how standard algorithms work (bubble sort, merge sort, linear search, binary search).
You should know how these algorithms work and when to use them:
Bubble sort – repeatedly swaps adjacent items if in the wrong order.
Merge sort – splits list into halves, sorts each half, then merges them.
Linear search – checks each item in a list until the target is found.
Binary search – repeatedly halves a sorted list to find a target value.
1.1.9 Be able to evaluate the fitness for purpose of algorithms in meeting specified requirements efficiently, using logical reasoning and test data.
You should be able to:
Compare algorithms for efficiency (speed, memory use).
Use test data and logical reasoning to judge whether an algorithm meets requirements.
Identify the best algorithm for a particular problem.