📋 GCSE CS Revision Hub

Edexcel Computer Science (1CP2) — Paper 1 & Paper 2 Exam Preparation

Know Your Question Types

Paper 1 is worth 50% of your GCSE (1h 30m). Five compulsory questions, each with multiple parts covering a single topic. Understanding command words is key to full marks.

Multiple Choice

1 mark each
identify · select

Short Open Response

1–2 marks
give · name · state · define

Medium Open Response

2–4 marks
describe · explain

Convert / Construct

2–6 marks
convert · construct · calculate

Complete / Draw

2–6 marks
complete · draw

Extended Response

6 marks
discuss

Paper 1 — Practice Questions

1 markVariables
Define the term 'variable'.

✅ Model Answer

A named unit of data assigned a value, which may change while the program executes.

⚡ NOTE
Also accept: "A memory location used to store a value which may change during execution."
1 markProtocols
State the purpose of network protocols.

✅ Model Answer

Protocols establish the rules that enable networked devices to communicate and transmit data to each other.

3 marksColour Depth
An image file uses 24-bit colour depth. Describe how 24 bits are used to represent colour.

✅ Model Answer (3 points)

1. 8 bits are allocated to each of the three primary colours (red, green, blue).
2. 3 × 8 = 24 bits per pixel, allowing 224 (≈16.7 million) different colours.
3. These 24 bits represent the colour of each individual pixel.

3 marksCPU / Multitasking
Explain how a computer with a single CPU can multitask.

✅ Model Answer

A single CPU can only execute one instruction at a time. A scheduling algorithm allocates time slots to each active process. Processes are held in a queue. The OS switches between them rapidly, creating the illusion of simultaneous execution.

2 marksSubprograms
Explain one benefit of using subprograms.

✅ Model Answer

It makes a problem easier to solve (1) by decomposing it into simpler steps (1).

Also accept: reusability (saved in libraries), readability (named subprogram calls), easier testing.

⚡ NOTE
No marks for just defining 'subprogram'. You must state a benefit + explain why.
2 marksData Representation
Construct an expression to show the time needed to transmit a 10 KiB file at 10 Mbps.

✅ Model Answer

(10 × 1024 × 8) ÷ (10 × 1000 × 1000)
Equivalent: 81920 / 10000000

3 marksStorage
Name the method of storage for each device:
• Hard drive (metal platters, iron oxide, spinning)
• CD (pits, laser, reflected light)
• USB stick (no moving parts, electrical charge)

✅ Model Answer

Hard drive → Magnetic
CD → Optical
USB stick → Solid state

⚡ NOTE
Common mistake: naming the device again instead of the storage method.
6 marksSecurity
A group of programmers is developing a networked software application that must be robust.

Discuss how the programmers could minimise security vulnerabilities in the code during development.

Consider: reasons why vulnerabilities occur · what can be done to prevent them

✅ Level 3 Model Answer (6/6)

A security vulnerability is a flaw that could be exploited by hackers to steal data or introduce malware. Known language-specific vulnerabilities should be avoided.

Well-structured software needs proper planning — sufficient time for design with security factored in from the start.

Bad practices under time pressure cause problems: skipping coding standards, insufficient testing, using unchecked library modules that may contain vulnerabilities.

Regular code reviews by experienced programmers identify bad practice and security issues. An audit trail tracks who changed what and when, allowing vulnerabilities to be traced back to source. Code analysis tools and comprehensive modular testing further minimise risk.

⚡ MARKING
Level 3 = comprehensive understanding, sustained coherent reasoning, logically structured, applied to context.

Paper 1 — Exam Tips Flashcards

Click to flip. Use arrows to navigate.

Paper 1 — Quick Quiz

Score: 0 / 0

Paper 1 — Levels-Based Marking

The 6-mark "discuss" question uses levels-based marking. The examiner reads your whole response, matches it to a level, then picks the higher or lower mark within that level.

LevelMarksDescriptor
00No rewardable content.
11–2Basic, independent points showing some understanding. Little linkage or context application.
23–4Adequate understanding. Some linkage and structure with some application to context.
35–6Comprehensive understanding. Sustained, coherent, logically structured reasoning applied to context.

🎯 Hitting Level 3

  • Plan first — 1–2 minutes jotting key points
  • Use technical vocabulary — shows understanding
  • Link your points — don't just list facts
  • Apply to context — refer to the scenario
  • Structure — clear paragraphs with reasoning chains

Paper 2 — Application of Computational Thinking

Paper 2 is worth 50% of your GCSE (2 hours). It focuses on Topics 1 and 6 — computational thinking and problem-solving skills. You'll write and amend real Python code on a computer.

🖥️ What You Need

  • A computer workstation with an IDE that shows line numbers
  • A 'STUDENT CODING' folder with provided code and data files
  • Printed copies of the Programming Language Subset (PLS) document

📋 Command Words for Paper 2

These are different from Paper 1:

  • Amend — modify code so it performs differently or to correct an error. Includes adding, deleting, or rearranging lines.
  • Write — create or manipulate program code from scratch.
  • Open — open the named file in your IDE (not a command word as such).
  • Save — save your amended files to your secure exam profile user area.

⏱️ Time Allocation

Each question has a suggested time. The two questions from the textbook are:

  • Question 1: Flowchart to code — 20 minutes · 13 marks
  • Question 2: File processing & data — 25 minutes · 15 marks

You may need slightly less or slightly more than the suggested time. Balance your time to finish the whole paper.

⚡ KEY DIFFERENCE FROM PAPER 1
Paper 2 is entirely practical — you type real code in a real IDE. There are no written essay answers. The marks come from your code working correctly, being well-structured, and following good programming practices.

Question 1 — Flowchart to Code 13 marks · 20 min

📜 The Task

A program is needed for the algorithm shown in a flowchart. You are given a file with global variables and a showMenu() subprogram. You must implement the logic from the flowchart.

The flowchart shows a menu system that:

  • Loops while validChoice is False
  • Calls showMenu() to display options
  • Gets user input
  • Validates the input is between 1 and 3
  • Outputs "Invalid Choice" or sets validChoice = True
  • Outputs "You entered option " + the choice

📎 Provided Code

 1# Global variables
 2validChoice = False    # Assume everything is invalid
 3userChoice = 0         # Set to an invalid value
 4
 5# Subprograms
 6def showMenu():
 7    print("Option 1")
 8    print("Option 2")
 9    print("Option 3")
10
11# ====== Write your code here ======
12
13print("You entered option " + str(userChoice))
CODING CHALLENGE
Write the code that goes between line 11 and line 13. Think about:
• What type of loop does the flowchart show?
• How do you validate the input range?
• When does the loop stop?

✅ Model Answer (13/13)

while validChoice == False:       #Loop until user enters valid option
    showMenu()
    userChoice = int(input("Enter an option: "))
    if userChoice >= 1 and userChoice <= 3:   #Check for valid input
        validChoice = True
    else:       #Invalid input
        print("Invalid option, try again")

📊 Mark Breakdown

  • While loop (1)
  • Check for False using not or == False (1)
  • Call to showMenu() inside loop (1)
  • Get user input with input() (1)
  • Convert to integer with int() (1)
  • Range check with relational operators >=1, <=3 (1)
  • Two-stage or nested selection: if/else (1)
  • Appropriate error message (1)
  • Concatenation for output string (1)
  • Meaningful comments (1)
  • Solution is robust, functional, meets requirements (3)
⚡ EXAMINER VERDICT
13 out of 13. The solution is fully functional, meets all requirements; outputs are accurate; robust within the problem constraints. Comments are sufficient and valid — you don't need excessive comments, just enough to show your understanding.
⚡ KEY EXAM TIP FOR Q1
This is about translating a flowchart to code. Remember: each symbol maps to a code construct, not always to a single line. The decision box tests for a loop condition — in the flowchart "validChoice = False?" with an arrow looping back tells you it's a while loop. The menu call and input happen inside the loop.

Question 2 — File Processing 15 marks · 25 min

📜 The Task

A program is needed to find the average movie rating and count how many movies are rated above average. Data is in a text file called MovieRatings.txt.

Each record contains: ID number, movie name, and rating — separated by commas.

Requirements:

  • Input: Load data from the file into an internal data structure
  • Process: Work with any number of movies; calculate average rating (fractional parts rounded up to next integer, e.g. 6.4 → 7); count movies rated above average
  • Output: Display average rating message; display count of movies above average

📁 Sample Data File

122,Two Lost Worlds,3
244,The Man in the White Suit,8
366,Red Planet Mars,7
488,The Magnetic Monster,2
511,Creature from the Black Lagoon,8
633,Tarantula,5
755,Forbidden Planet,9
877,The Unearthly,8
999,The Blob,6
10122,Journey to the Centre of the Earth,7
CODING CHALLENGE
You're given the file name constant, import for math, and empty global variables. Write the subprograms and main program to meet the requirements. Think about decomposition — what subprograms do you need?

✅ Model Answer (13/15)

import math
FILENAME = "MovieRatings.txt"

file = []
average = 0.0
count = 0

def loadFile():
    f = open(FILENAME, "r")
    text = f.readlines()          #Read all contents as array
    data = []
    for line in text:
        lin = line.strip()          #Remove newline char
        l = lin.split(",")
        data.append(l)
    return data

def calculateAverage(table):
    total = 0
    for record in table:
        rating = int(record[2])
        total += rating
    return math.ceil(total / len(table))

def countAboveAverage(average, table):
    count = 0
    for record in table:
        rating = math.ceil(float(record[2]))
        if rating > average:
            count += 1
    return count

print("Loading data...")
file = loadFile()
average = calculateAverage(file)
count = countAboveAverage(average, file)

print("Average film rating:", average)
print("Number of films rated higher than average:", count)

📊 Points-Based Marks

  • Inputs: Opens file (1), Closes file (1)
  • Process: Stores records in data structure (1), Converts rating to integer (1), Uses math.ceil() for rounding up (1)
  • Outputs: Appropriate messages (1)

📊 Levels-Based Marks (max 9)

  • Solution design (3): Well decomposed into subprograms, clear IPO separation, appropriate data structures
  • Good programming practices (3): Meaningful variable names, effective comments, clean layout with whitespace
  • Functionality (3): Fully functional, accurate outputs, robust within constraints
⚡ EXAMINER VERDICT — 13/15
Lost marks: Does not explicitly close the file (no f.close()) — no mark earned but no levels-based mark lost either since Python/OS handles cleanup. Does not convert rating to integer before storing — good practice is to convert on read, not every time it's used.

Earned: Solution design is clear with well-decomposed subprograms. Code is readable with meaningful names and comments. Program is fully functional and robust.

💡 Strategy for File Processing Questions

  • Read the requirements carefully — note inputs, process steps, and outputs
  • Inspect sample data — understand the format (delimiter, data types)
  • Decompose into subprograms — one for loading, one for each calculation
  • Consider data typessplit() gives strings; convert ratings to int or float
  • Remember math.ceil() — "round up to next integer" means ceiling, not round()
  • Close your files — or better yet, use with open(...) as f:

Paper 2 — Exam Tips Flashcards

Click to flip. These tips are specific to the on-screen coding exam.

Paper 2 — Quick Quiz

Score: 0 / 0

Paper 2 — Marking Guide

Paper 2 uses two marking methods: points-based marks for specific code features, plus levels-based marks for overall quality.

📌 Points-Based Marks

Each specific feature earns 1 mark. Examples from Q1:

  • While loop (1)
  • Check for False using not or == False (1)
  • Call to showMenu() (1)
  • Get user input (1)
  • Convert to integer (1)
  • Range check with relational operators (1)
  • Error message for user (1)
  • Concatenation for output (1)
  • Meaningful comments (1)

📐 Solution Design (Levels)

0123 (Max)
No rewardable content Little decomposition. Some component parts visible but incomplete. Limited use of variables and data structures. Some decomposition attempted. Most components visible. Mostly appropriate variables and data structures. Clearly decomposed into component parts. Logic is clear and appropriate. Variables and data structures appropriate to the problem.

✨ Good Programming Practices (Levels)

0123 (Max)
No rewardable content Little layout attempt. Some meaningful variable names. Limited or excessive commenting. Some layout attempt. Mostly meaningful names. Some appropriate commenting, may be excessive. Effective layout with sections and whitespace. Meaningful names and subprogram interfaces. Effective comments to explain logic.

⚙️ Functionality (Levels)

0123 (Max)
No rewardable content Incorrect/incomplete parts. Limited accuracy. Not robust — may crash on anticipated input. Complete, meets most requirements. Mostly accurate. Responds predictably to most input. May not be robust. Complete, fully meets requirements. Accurate, informative, suitable outputs. Responds predictably. Robust within constraints.
⚡ REMEMBER
Some items lost in points-based marks are not deducted twice. For example, if you miss a close() call, you lose the point but it doesn't also affect your levels marks. The examiner assesses overall quality for levels.