Four units across two years. AS level = AS1 + AS2 (can be a stand-alone qualification). Full A-level adds A2 1 exam + A2 2 coursework case study. Filter topics by unit below.
The Systems Development Life Cycle (SDLC) is a structured framework for planning, creating, testing, and deploying an information system. It consists of six stages:
The current system is investigated to identify problems. Techniques used include:
The output is a Requirements Specification - a document listing what the new system must do (functional requirements) and constraints (non-functional requirements such as performance, security).
The system is planned using design tools before coding begins. Designers produce:
Programmers write the actual code based on the design documents. This includes creating the user interface, writing program logic, and building the database.
The system is tested using a pre-prepared test plan with normal, abnormal, and boundary test data to ensure it meets the requirements specification.
The system is installed and made live. Users are trained. Data is migrated from the old system. An implementation strategy is chosen (see Topic 4).
After a period of use, the system is reviewed against the original requirements. This assesses whether objectives were met and identifies areas for improvement.
Before starting, a feasibility study determines if the project is worth pursuing. Use the acronym TELOS:
| Letter | Factor | Meaning |
|---|---|---|
| T | Technical | Does the technology exist to build this system? |
| E | Economic | Is it affordable? Do benefits outweigh costs? |
| L | Legal | Does it comply with all relevant legislation? |
| O | Operational | Will the users accept and use the new system? |
| S | Schedule | Can it be completed within the required timeframe? |
The Waterfall model follows the SDLC stages in a strict linear sequence. Each stage must be completed before the next begins. There is no going back.
| Advantages | Disadvantages |
|---|---|
| Simple to understand and manage | Inflexible - cannot go back to previous stages easily |
| Well-documented at every stage | Client does not see the product until late in the process |
| Works well when requirements are clear and fixed | Errors found late are expensive to fix |
| Clear milestones and deliverables | Not suitable when requirements are likely to change |
The Agile approach breaks the project into small cycles called iterations (or sprints). Each iteration produces a working prototype that the client can review and give feedback on.
| Advantages | Disadvantages |
|---|---|
| Flexible - can adapt to changing requirements | Can lead to scope creep (project never finishes) |
| Client sees working software early and often | Less documentation may cause problems later |
| Errors detected early through frequent testing | Requires close collaboration with client throughout |
| Produces high-quality software through continuous refinement | Difficult to estimate time and cost upfront |
A thorough test plan uses three types of test data:
| Type | Description | Example (field accepts 1-100) |
|---|---|---|
| Normal | Valid data the system should accept | 50, 25, 73 |
| Abnormal (Erroneous) | Invalid data the system should reject | -5, "abc", 150 |
| Boundary (Extreme) | Values at the edge of valid ranges | 0, 1, 100, 101 |
| Phase | Description |
|---|---|
| Unit testing | Individual modules/components tested in isolation by developers |
| Integration testing | Modules combined and tested together to check interfaces work |
| System testing | The complete system tested as a whole against the requirements specification |
| Acceptance testing | Client tests the system to confirm it meets their needs before signing off |
| Alpha testing | Testing by the developers in-house, in a controlled environment |
| Beta testing | Testing by a selected group of real users in a real environment, before final release |
Validation checks that the data entered is reasonable, sensible, and within allowed boundaries. It does NOT check if the data is correct - only that it is acceptable.
Verification checks that data has been accurately transferred from one stage to another (e.g. from a paper form into a database). Methods include double entry and proofreading (visual check).
| Type | What It Checks | Example |
|---|---|---|
| Range check | Value falls within a specified range | Age must be between 0 and 120 |
| Type check | Data is the correct data type | Age must be an integer, not text |
| Length check | Data has correct number of characters | NI number must be exactly 9 characters |
| Format check | Data matches a required pattern | Postcode must match pattern like BT1 1AA |
| Presence check | Field has not been left empty | Surname field must be filled in |
| Check digit | A calculated digit used to detect transcription errors | Last digit of a barcode / ISBN |
| Strategy | Description | Advantages | Disadvantages | Best For |
|---|---|---|---|---|
| Direct changeover | Old system stopped, new system started immediately | Quick, cheap, no duplication of work | Very risky - if new system fails there is no fallback | Non-critical systems, simple replacements |
| Parallel running | Both old and new systems run simultaneously for a period | Safe - can fall back to old system if problems arise; outputs can be compared | Expensive (double the work), staff must operate two systems | Critical systems (e.g. payroll, banking) |
| Phased | New system introduced in stages/modules over time | Less risky, staff can learn gradually, problems isolated to one module | Takes a long time, integration issues between old and new parts | Large complex systems |
| Pilot | New system trialled in one location/department first | Problems identified on small scale before full rollout | Pilot site may not be representative; takes time | Multi-site organisations (e.g. retail chains, schools) |
A variable is a named storage location in memory whose value can change during program execution (e.g. score = 0).
A constant is a named storage location whose value is fixed when the program is written and cannot be changed during execution (e.g. VAT_RATE = 0.20).
Using constants makes code more readable and easier to maintain - if VAT changes, you only update one line.
| Data Type | Description | Example |
|---|---|---|
| Integer | Whole numbers (positive or negative) | 42, -7, 0 |
| Real (Float) | Numbers with decimal places | 3.14, -0.5, 99.9 |
| String | Sequence of characters | "Hello", "BT1 5GS" |
| Boolean | True or False only | True, False |
| Character (Char) | A single character | 'A', '7', '#' |
Instructions executed one after another in order, line by line. This is the default flow of any program.
The program makes a decision based on a condition:
IF age >= 18 THEN OUTPUT "You can vote" ELSE OUTPUT "Too young to vote" END IF
FOR loop (count-controlled) - repeats a set number of times:
FOR i = 1 TO 10 OUTPUT i NEXT i
WHILE loop (condition-controlled) - repeats while a condition is true:
WHILE password != "secret" INPUT password END WHILE
An array is a data structure that stores multiple values of the same data type under one name. Each element is accessed by its index (position number).
// Declare an array of 5 names names = ["Alice", "Bob", "Charlie", "Diana", "Eve"] OUTPUT names[0] // Outputs "Alice" (index starts at 0) OUTPUT names[3] // Outputs "Diana"
| Concept | Definition |
|---|---|
| Class | A blueprint/template that defines the attributes (data) and methods (functions) that objects of that type will have |
| Object | An instance of a class - a specific example created from the blueprint |
| Encapsulation | Bundling data (attributes) and methods together inside a class, and hiding the internal details. Attributes are made private and accessed through public getter/setter methods |
| Inheritance | A child (sub) class can inherit attributes and methods from a parent (super) class, then add or override its own. Promotes code reuse |
| Polymorphism | Objects of different classes can respond to the same method call in different ways. E.g. a Shape class with a draw() method - Circle and Square each implement draw() differently |
| Abstraction | Hiding complex implementation details and showing only the essential features. Users interact with a simplified interface |
CLASS Animal PRIVATE name PRIVATE sound CONSTRUCTOR(name, sound) THIS.name = name THIS.sound = sound END CONSTRUCTOR PUBLIC METHOD speak() OUTPUT THIS.name + " says " + THIS.sound END METHOD END CLASS CLASS Dog INHERITS Animal CONSTRUCTOR(name) SUPER(name, "Woof") END CONSTRUCTOR PUBLIC METHOD fetch() OUTPUT THIS.name + " fetches the ball" END METHOD END CLASS // Creating objects myDog = NEW Dog("Rex") myDog.speak() // Outputs "Rex says Woof" myDog.fetch() // Outputs "Rex fetches the ball"
Computers can only execute machine code (binary). High-level and assembly language programs must be translated into machine code before execution.
| Translator | Translates From | How It Works | Advantages | Disadvantages |
|---|---|---|---|---|
| Compiler | High-level language | Translates the entire source code into machine code in one go, producing an executable file | Fast execution (pre-compiled); source code not needed at runtime; code is protected | Slow to compile; must recompile after any change; compiler errors can be difficult to locate |
| Interpreter | High-level language | Translates and executes one line at a time; no executable file is created | Easy debugging (stops at the exact error line); no compilation wait; good for development | Slower execution (translates every time); source code must be present; source code is exposed |
| Assembler | Assembly language | Translates assembly language mnemonics (e.g. ADD, MOV) into machine code on a 1:1 basis | Produces very efficient, fast code; direct hardware control | Assembly is difficult to write; machine-specific (not portable) |
Pseudocode is a structured way of writing algorithms using English-like statements. It is not tied to any programming language and focuses on logic.
INPUT mark IF mark >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" END IF
Flowcharts use standard symbols to represent program logic visually:
| Symbol | Shape | Meaning |
|---|---|---|
| Terminator | Rounded rectangle | Start or End |
| Process | Rectangle | An action or calculation |
| Decision | Diamond | A yes/no question (selection) |
| Input/Output | Parallelogram | Data input or output |
| Flow line | Arrow | Direction of flow |
DFDs show how data moves through a system. They use four symbols:
Structure charts show the hierarchical breakdown of a system into modules (top-down design). The main program is at the top, with sub-modules branching below.
ERDs show the relationships between entities (tables) in a database. They display entities, attributes, and the cardinality of relationships (1:1, 1:M, M:M).
| Error Type | Description | Example | Detected By |
|---|---|---|---|
| Syntax error | Breaking the rules (grammar) of the programming language. The program will NOT run. | pritn("Hello") - misspelled keyword |
The compiler or interpreter at translation time |
| Logic error | The program runs but produces incorrect results. The logic/algorithm is wrong. | average = a + b / 2 instead of (a + b) / 2 |
Testing with known expected outputs; code review |
| Runtime error | The program compiles but crashes during execution due to an unexpected condition. | Division by zero; accessing an array index that does not exist; opening a file that does not exist | Occurs during execution; use exception handling (try/catch) |
A subroutine is a named block of code that performs a specific task. It can be called (invoked) from elsewhere in the program. There are two types:
A procedure performs a task but does NOT return a value.
PROCEDURE greet(name) OUTPUT "Hello, " + name END PROCEDURE greet("Jackie") // Outputs "Hello, Jackie"
A function performs a task AND returns a value to the calling code.
FUNCTION calculateArea(length, width) area = length * width RETURN area END FUNCTION result = calculateArea(5, 3) // result = 15
Parameters are the variable names listed in the subroutine definition. Arguments are the actual values passed when the subroutine is called.
| Scope | Description | Best Practice |
|---|---|---|
| Local variable | Declared inside a subroutine; only accessible within that subroutine | Preferred - avoids naming conflicts and unexpected side effects |
| Global variable | Declared outside all subroutines; accessible from anywhere in the program | Use sparingly - can be changed by any part of the program, making debugging harder |
HTML (HyperText Markup Language) provides the structure and content of a web page. It uses tags, attributes, and semantic elements to organise information.
HTML elements are written with an opening tag, content, and a closing tag. Tags can have attributes that provide additional information (e.g. id, class, src, href).
<!-- Basic HTML document structure --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>My Page</title> </head> <body> <h1>Hello World</h1> <p class="intro">Welcome to my page.</p> <a href="https://example.com">Visit</a> </body> </html>
Semantic elements describe their meaning to both the browser and the developer, improving accessibility and SEO:
| Element | Purpose |
|---|---|
<header> | Introductory content or navigation links at the top |
<nav> | Navigation links |
<main> | The main content of the page (one per page) |
<article> | Self-contained content (e.g. a blog post) |
<section> | Thematic grouping of content |
<aside> | Sidebar or tangentially related content |
<footer> | Footer content (copyright, contact info) |
CSS controls the visual presentation of HTML elements - colours, fonts, layout, spacing, and responsiveness.
| Selector | Syntax | Targets |
|---|---|---|
| Element | p { } | All <p> elements |
| Class | .intro { } | All elements with class="intro" |
| ID | #header { } | The element with id="header" |
| Descendant | div p { } | All <p> inside a <div> |
| Pseudo-class | a:hover { } | Links when hovered over |
Every HTML element is treated as a rectangular box with four layers:
.box { width: 200px; padding: 10px; border: 2px solid #333; margin: 20px; } /* Total width = 200 + 10*2 + 2*2 + 20*2 = 264px */
Flexbox is a CSS layout model for arranging items in a row or column with flexible sizing:
.container { display: flex; justify-content: space-between; /* horizontal alignment */ align-items: center; /* vertical alignment */ gap: 10px; }
Responsive design ensures web pages look good on all screen sizes. Key techniques:
%, em, rem, vw instead of fixed pxmax-width: 100% so images scale down<meta name="viewport" content="width=device-width, initial-scale=1.0">/* Styles for screens narrower than 768px */ @media (max-width: 768px) { .container { flex-direction: column; } }
JavaScript is a programming language that adds interactivity and dynamic behaviour to web pages. It runs in the browser (client-side) or on a server (server-side with Node.js).
// Variables let score = 0; // can be reassigned const MAX = 100; // cannot be reassigned var name = "Alice"; // older syntax, function-scoped // Function declaration function greet(name) { return "Hello, " + name; } // Arrow function (ES6) const add = (a, b) => a + b;
The DOM (Document Object Model) is a tree-like representation of the HTML page. JavaScript can access and modify any element:
// Selecting elements let heading = document.getElementById("title"); let items = document.querySelectorAll(".item"); // Changing content and style heading.textContent = "New Title"; heading.style.color = "red"; // Creating and appending elements let newPara = document.createElement("p"); newPara.textContent = "Added dynamically"; document.body.appendChild(newPara);
Events allow JavaScript to respond to user actions (clicks, key presses, form submissions):
let btn = document.getElementById("myBtn"); btn.addEventListener("click", function() { alert("Button clicked!"); }); // Common events: click, mouseover, keydown, // submit, load, input, change
| Client-Side | Server-Side | |
|---|---|---|
| Runs on | The user's browser | The web server |
| Languages | JavaScript (primarily) | Python, PHP, Java, Node.js, C# |
| Used for | Form validation, animations, DOM manipulation, interactive UI | Database access, authentication, business logic, file processing |
| Security | Code is visible to user (View Source); cannot be trusted for validation alone | Code is hidden from user; handles sensitive operations |
| Speed | Fast - no server round trip needed | Requires HTTP request/response cycle |
A web framework is a pre-written code library that provides structure and tools for building web applications faster:
| Type | Examples | Purpose |
|---|---|---|
| Front-end | React, Angular, Vue.js | Build interactive user interfaces with reusable components |
| Back-end | Django (Python), Express (Node.js), Flask (Python) | Handle routing, database queries, authentication on the server |
| Full-stack | Next.js, Ruby on Rails | Combine front-end and back-end in a single framework |
| CSS | Bootstrap, Tailwind CSS | Pre-built responsive styles and UI components |
| System | Base | Digits Used | Use |
|---|---|---|---|
| Binary | 2 | 0, 1 | How computers store all data internally |
| Denary (Decimal) | 10 | 0-9 | Everyday human counting system |
| Hexadecimal | 16 | 0-9, A-F | Shorthand for binary; colours (#FF0000); memory addresses; MAC addresses; error codes |
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
Add the place values where there is a 1. Example: 10110011 = 128 + 32 + 16 + 2 + 1 = 179
Subtract the largest place value that fits, put a 1 in that column, repeat. Example: 200 = 128+64+8 = 11001000
Split binary into groups of 4 bits (nibbles), convert each group. Example: 1010 1111 = A F = AF
Convert each hex digit to 4 binary digits. Example: 3C = 0011 1100 = 00111100
0+0=0, 0+1=1, 1+0=1, 1+1=10 (0 carry 1), 1+1+1=11 (1 carry 1)
Overflow occurs when the result of a calculation is too large to be stored in the available number of bits. For example, adding two 8-bit numbers and getting a 9-bit result.
Two's complement is a method for representing negative numbers in binary. The most significant bit (MSB) represents a negative value.
For 8-bit two's complement, the range is -128 to +127.
To convert a positive number to its negative equivalent:
Example: -5 in 8-bit two's complement:
5 = 00000101
Flip: 11111010
+1 : 11111011 = -5
Floating point representation stores real numbers using a mantissa (the significant digits) and an exponent (the power/position of the binary point).
| Character Set | Bits per Character | Characters | Details |
|---|---|---|---|
| ASCII | 7 | 128 | Covers uppercase, lowercase, digits 0-9, punctuation, control characters. English only. |
| Extended ASCII | 8 | 256 | Adds accented characters and symbols (e.g. e, n, (C)). Still limited to Western European languages. |
| Unicode | Up to 32 | Over 140,000 | Covers virtually every written language, including Chinese, Arabic, emoji. UTF-8 is the most common encoding (variable-length: 1-4 bytes). |
A bitmap image is made up of a grid of tiny dots called pixels. Each pixel is stored as a binary value representing its colour.
| Term | Definition | Effect of Increasing |
|---|---|---|
| Resolution | The number of pixels in the image (width x height), often measured in PPI (pixels per inch) or DPI (dots per inch) | Higher quality, sharper image, but larger file size |
| Colour depth | The number of bits used to store the colour of each pixel | More colours available (2n colours), but larger file size |
File size (bits) = width (pixels) x height (pixels) x colour depth (bits)
Example: An image is 800 x 600 pixels with 24-bit colour depth.
File size = 800 x 600 x 24 = 11,520,000 bits
= 11,520,000 / 8 = 1,440,000 bytes
= 1,440,000 / 1024 = 1,406.25 KB
= 1,406.25 / 1024 = 1.37 MB (approx)
| Colour Depth | Colours Available |
|---|---|
| 1 bit | 2 (black and white) |
| 8 bits | 256 |
| 16 bits | 65,536 |
| 24 bits | 16,777,216 (true colour) |
Sound is an analogue waveform. To store it digitally, an analogue-to-digital converter (ADC) takes regular samples of the sound wave's amplitude.
| Term | Definition | Effect of Increasing |
|---|---|---|
| Sample rate | How many samples are taken per second, measured in Hz (e.g. CD quality = 44,100 Hz) | More accurate representation of the original sound, but larger file |
| Bit depth (sample resolution) | The number of bits used to store each sample | More possible amplitude levels, finer detail, but larger file |
File size (bits) = sample rate x bit depth x duration (seconds) x number of channels
Example: 30 seconds of stereo audio, 44,100 Hz sample rate, 16-bit depth:
File size = 44,100 x 16 x 30 x 2 = 42,336,000 bits
= 42,336,000 / 8 = 5,292,000 bytes
= 5,292,000 / 1,024 = 5,168 KB
= 5,168 / 1,024 = 5.05 MB
| Lossy | Lossless | |
|---|---|---|
| How it works | Permanently removes some data that is considered less important (e.g. sounds humans cannot hear) | Finds patterns to encode data more efficiently; no data is lost |
| File size | Much smaller files | Larger than lossy but smaller than original |
| Quality | Some quality loss (may not be noticeable) | Original quality perfectly preserved |
| Reversible? | No - original data cannot be recovered | Yes - original file can be perfectly reconstructed |
| Examples | JPEG (images), MP3 (audio), MP4 (video) | PNG (images), FLAC (audio), ZIP (files) |
| Best for | Photos, music, video - where slight quality loss is acceptable | Text files, medical images, program files - where every bit matters |
Run-Length Encoding is a simple lossless compression technique. It replaces consecutive repeated values with a count and the value.
Example: AAAAABBBCCDDDDDD becomes 5A3B2C6D
RLE works well for images with large areas of the same colour but poorly for photographs with many colour variations.
The Von Neumann architecture is the design used by most modern computers. Its key principle is that both program instructions and data are stored together in main memory and share the same bus.
| Component | Function |
|---|---|
| ALU (Arithmetic Logic Unit) | Performs all arithmetic calculations (add, subtract) and logical comparisons (AND, OR, NOT, greater than, equal to) |
| Control Unit (CU) | Manages and coordinates all CPU operations. Decodes instructions, sends control signals to other components, manages the fetch-decode-execute cycle |
| Register | Full Name | Purpose |
|---|---|---|
| PC | Program Counter | Holds the memory address of the NEXT instruction to be fetched |
| MAR | Memory Address Register | Holds the address of the memory location currently being read from or written to |
| MDR | Memory Data Register | Holds the data that has just been read from memory or is about to be written to memory |
| CIR | Current Instruction Register | Holds the instruction currently being decoded and executed |
| Accumulator | Accumulator | Stores the results of calculations performed by the ALU |
| Bus | Purpose | Direction |
|---|---|---|
| Address bus | Carries memory addresses from CPU to memory | Unidirectional (CPU to memory only) |
| Data bus | Carries data between CPU and memory/I/O devices | Bidirectional (both directions) |
| Control bus | Carries control signals (read/write, clock, interrupt, bus request) | Bidirectional |
This cycle repeats continuously while the computer is running.
| RAM (Random Access Memory) | ROM (Read Only Memory) | |
|---|---|---|
| Volatile? | Yes - contents lost when power is off | No - contents retained without power |
| Read/Write? | Can be read from and written to | Can only be read from (not written to in normal use) |
| Purpose | Stores currently running programs and data | Stores the BIOS/boot-up instructions |
| Contents | Change constantly as programs run | Permanent - set during manufacture |
Cache is a small amount of very fast, expensive memory located on or near the CPU. It stores frequently and recently used instructions and data so the CPU can access them faster than from RAM.
Virtual memory is a section of the hard drive that is used as if it were extra RAM when physical RAM is full. The OS swaps data between RAM and virtual memory as needed.
| Factor | How It Improves Performance |
|---|---|
| Clock speed | Measured in GHz. A higher clock speed means more instructions processed per second. E.g. 3.5 GHz = 3.5 billion cycles per second. |
| Number of cores | Each core can process a separate instruction stream. A quad-core CPU can process 4 tasks simultaneously. However, not all software is written to use multiple cores effectively. |
| Cache size | More cache means more frequently used data can be stored close to the CPU, reducing the need to access slower RAM. |
| Pipelining | Overlapping stages of the FDE cycle so that while one instruction is being executed, the next is being decoded, and the next is being fetched. Increases throughput. |
System software manages the computer's hardware and provides a platform for application software to run. Includes the operating system and utility programs.
| Type | Description | Examples |
|---|---|---|
| General purpose | Off-the-shelf software designed for common tasks, used by many different users | Word processor, spreadsheet, web browser, email client |
| Bespoke (custom) | Software written specifically for one organisation's unique requirements | A hospital patient management system, a school's timetabling system |
General purpose advantages: cheaper, available immediately, well tested, online support and tutorials
Bespoke advantages: tailored to exact needs, no unnecessary features, can provide competitive advantage
Bespoke disadvantages: expensive, takes time to develop, may contain bugs initially
Utility software performs specific maintenance or housekeeping tasks:
| Utility | Purpose |
|---|---|
| Antivirus | Scans for and removes malware by comparing files against a database of known virus signatures |
| Disk defragmenter | Reorganises fragmented files on a HDD so they are stored in contiguous blocks, improving read speed. Not needed for SSDs. |
| Backup utility | Creates copies of files/system to protect against data loss. Supports full, incremental, and differential backups. |
| Compression utility | Reduces file sizes for storage or transmission (e.g. ZIP, 7z) |
| Interface | Description | Advantages | Disadvantages |
|---|---|---|---|
| GUI (Graphical User Interface) | Uses windows, icons, menus, and pointers (WIMP). Interact by clicking/touching. | Intuitive, easy to learn, no commands to memorise | Uses more system resources, slower for experts |
| CLI (Command Line Interface) | User types text commands. No graphics. | Fast for experts, uses fewer resources, can automate tasks with scripts, more precise control | Steep learning curve, must memorise commands, easy to make errors |
| Menu-driven | User selects options from lists/menus | Easy to use, reduces errors, good for limited options (e.g. ATMs) | Can be slow to navigate, limited flexibility |
| Natural language | User speaks or types in everyday language (e.g. Siri, Alexa) | Very easy and intuitive, accessible for people with disabilities | Can misunderstand, limited to pre-programmed responses, requires significant processing power |
An operating system (OS) is system software that manages computer hardware and provides services for application software. Key functions:
A device driver is a small piece of system software that acts as a translator between the operating system and a hardware device.
An embedded system is a computer system designed to perform a dedicated function within a larger device. It has a specific, fixed purpose and is usually programmed once.
Washing machine controller, car engine management system, traffic lights, smart thermostat, microwave oven, digital watch, fitness tracker, anti-lock braking system (ABS).
| Serial | Parallel | |
|---|---|---|
| How | Bits sent one at a time along a single wire | Multiple bits sent simultaneously along multiple wires |
| Speed | Slower for short distances | Faster over short distances |
| Distance | Suitable for long distances (less interference) | Only suitable for short distances (signal skew issues) |
| Cost | Cheaper (fewer wires) | More expensive (more wires) |
| Examples | USB, SATA, Ethernet | Internal data bus, old printer cables (IEEE 1284) |
| Mode | Description | Example |
|---|---|---|
| Simplex | Data flows in one direction only | TV broadcast, keyboard to computer |
| Half-duplex | Data flows in both directions, but only one way at a time | Walkie-talkie, CB radio |
| Full-duplex | Data flows in both directions simultaneously | Telephone call, broadband internet |
| Term | Definition |
|---|---|
| Table (Entity/Relation) | A structured collection of related data organised in rows and columns |
| Record (Row/Tuple) | A single entry in a table representing one instance of the entity |
| Field (Column/Attribute) | A single piece of data stored about each record |
| Primary key | A field (or combination of fields) that uniquely identifies each record in a table. Must be unique and not null. |
| Foreign key | A field in one table that links to the primary key of another table, creating a relationship between them |
| Composite key | A primary key made up of two or more fields combined (when no single field is unique on its own) |
| Relationship | Description | Example |
|---|---|---|
| One-to-One (1:1) | One record in Table A relates to exactly one record in Table B | One person has one passport |
| One-to-Many (1:M) | One record in Table A relates to many records in Table B | One teacher teaches many students |
| Many-to-Many (M:M) | Many records in Table A relate to many records in Table B | Many students take many subjects |
Resolving M:M relationships: A many-to-many relationship cannot be directly implemented in a relational database. It must be broken down into two one-to-many relationships using a junction table (link entity) containing the foreign keys from both tables.
Normalisation is the process of organising a database to reduce data redundancy and eliminate anomalies. Without normalisation, you get:
Data as it comes - may contain repeating groups and redundant data. A flat table with no structure.
Rules:
Rules (must already be in 1NF plus):
Rules (must already be in 2NF plus):
UNF - Student Orders table:
| OrderID | Student | Items |
|---|---|---|
| 001 | Alice | Pen, Ruler, Notebook |
| 002 | Bob | Pen, Calculator |
Problem: Items field contains repeating groups.
1NF - Remove repeating groups:
| OrderID* | ItemName* | Student |
|---|---|---|
| 001 | Pen | Alice |
| 001 | Ruler | Alice |
| 001 | Notebook | Alice |
| 002 | Pen | Bob |
| 002 | Calculator | Bob |
Composite key: (OrderID, ItemName). Student depends only on OrderID (partial dependency).
2NF - Remove partial dependencies:
Orders table: OrderID, Student
OrderItems table: OrderID*, ItemName*
SELECT FirstName, Surname, Mark FROM Students WHERE Mark >= 50 ORDER BY Mark DESC;
Use * to select all fields: SELECT * FROM Students;
INSERT INTO Students (StudentID, FirstName, Surname, Mark) VALUES (101, 'Jackie', 'Hughes', 95);
UPDATE Students SET Mark = 85 WHERE StudentID = 101;
DELETE FROM Students WHERE Mark < 30;
DELETE FROM Students; would delete every student.| Operator | Meaning | Example |
|---|---|---|
| = | Equal to | WHERE Year = 12 |
| <> or != | Not equal to | WHERE Status <> 'Inactive' |
| >, <, >=, <= | Comparison | WHERE Mark >= 40 |
| BETWEEN | Range (inclusive) | WHERE Mark BETWEEN 40 AND 70 |
| LIKE | Pattern matching | WHERE Surname LIKE 'Mc%' |
| IN | Match any in a list | WHERE Year IN (12, 13, 14) |
| AND, OR, NOT | Logical operators | WHERE Mark > 50 AND Year = 13 |
% matches any number of characters. _ matches exactly one character.
LIKE 'B%' - starts with BLIKE '%son' - ends with sonLIKE '%an%' - contains anLIKE '_a%' - second character is a| Function | Purpose | Example |
|---|---|---|
| COUNT() | Counts the number of records | SELECT COUNT(*) FROM Students; |
| SUM() | Adds up values in a column | SELECT SUM(Mark) FROM Students; |
| AVG() | Calculates the average | SELECT AVG(Mark) FROM Students; |
| MAX() | Finds the highest value | SELECT MAX(Mark) FROM Students; |
| MIN() | Finds the lowest value | SELECT MIN(Mark) FROM Students; |
An INNER JOIN combines rows from two tables where there is a matching value in both:
SELECT Students.FirstName, Courses.CourseName FROM Students INNER JOIN Enrolments ON Students.StudentID = Enrolments.StudentID INNER JOIN Courses ON Enrolments.CourseID = Courses.CourseID WHERE Courses.CourseName = 'Digital Technology';
| Type | Description | Example |
|---|---|---|
| LAN (Local Area Network) | Covers a small geographical area, typically one building/site. Hardware owned by the organisation. | School network, office network |
| WAN (Wide Area Network) | Covers a large geographical area. Uses third-party communication links (e.g. telephone lines, satellites). | The internet, a company connecting offices in different cities |
| PAN (Personal Area Network) | Very small network around an individual, typically within a few metres. | Bluetooth connection between phone and wireless earbuds |
| Topology | Description | Advantages | Disadvantages |
|---|---|---|---|
| Star | All devices connected to a central switch/hub | If one cable fails only that device is affected; easy to add devices; good performance (no collisions with switch) | Central switch is a single point of failure; more cabling needed |
| Bus | All devices connected to a single backbone cable with terminators at each end | Cheap, easy to install, uses less cable | If backbone fails the whole network goes down; performance degrades with more devices; difficult to troubleshoot |
| Ring | Devices connected in a circular loop; data travels in one direction around the ring | Equal access for all devices; performs well under heavy load | If one device or cable fails the whole network can go down; difficult to add new devices |
| Mesh | Every device connected to every other device (full mesh) or most other devices (partial mesh) | Very reliable (multiple paths); if one connection fails data takes another route | Very expensive; complex to set up; requires many cables/connections |
| Client-Server | Peer-to-Peer | |
|---|---|---|
| Structure | Dedicated server provides resources; clients make requests | All computers are equal; each can act as client or server |
| Security | Centralised security, user accounts managed on server | Each computer manages its own security - less secure |
| Backup | Centralised backup on server | Each computer must be backed up individually |
| Cost | Expensive (server hardware, specialist staff) | Cheaper (no dedicated server) |
| Best for | Schools, businesses, large organisations | Small offices, home networks, file sharing |
| Device | Function |
|---|---|
| Router | Forwards data packets between different networks. Uses IP addresses to determine the best route for packets. Connects a LAN to the internet (WAN). |
| Switch | Connects devices within a LAN. Learns MAC addresses of connected devices and forwards data only to the intended recipient, reducing unnecessary traffic. |
| Hub | A basic device that connects multiple devices in a LAN. Broadcasts all data to every connected device (unlike a switch). Largely obsolete. |
| NIC (Network Interface Card) | Hardware component that allows a device to connect to a network. Each NIC has a unique MAC address. Can be wired (Ethernet) or wireless (Wi-Fi). |
| WAP (Wireless Access Point) | Allows wireless devices to connect to a wired network. Broadcasts a Wi-Fi signal that devices can connect to. |
| Modem | MOdulator-DEModulator. Converts digital data to analogue signals (and vice versa) for transmission over telephone lines. |
A protocol is a set of rules that govern how data is transmitted and received across a network. Protocols ensure devices from different manufacturers can communicate.
| Protocol | Purpose |
|---|---|
| TCP/IP | Transmission Control Protocol / Internet Protocol. The fundamental protocol suite of the internet. TCP breaks data into packets and ensures reliable delivery; IP handles addressing and routing. |
| HTTP | HyperText Transfer Protocol. Used to transfer web pages from a web server to a browser. Data is unencrypted. |
| HTTPS | HTTP Secure. Same as HTTP but with SSL/TLS encryption. Used for secure transactions (banking, login pages). Shown by padlock icon in browser. |
| FTP | File Transfer Protocol. Used to upload/download files to/from a server. Supports authentication (username/password). |
| SMTP | Simple Mail Transfer Protocol. Used to SEND emails from a client to a mail server, and between mail servers. |
| POP3 | Post Office Protocol v3. Used to RECEIVE emails. Downloads emails to the device and typically deletes them from the server. Emails only available on one device. |
| IMAP | Internet Message Access Protocol. Used to RECEIVE emails. Keeps emails on the server and syncs across multiple devices. Preferred for modern use. |
| Layer | Name | Function | Protocols |
|---|---|---|---|
| 4 | Application | Provides network services directly to user applications | HTTP, FTP, SMTP, POP3, IMAP |
| 3 | Transport | Ensures reliable end-to-end delivery; breaks data into segments | TCP, UDP |
| 2 | Internet | Handles addressing and routing of packets across networks | IP |
| 1 | Network Access (Link) | Handles the physical transmission of data on the network medium | Ethernet, Wi-Fi |
| Type | Description | Example |
|---|---|---|
| IP address | A unique numerical address assigned to every device on a network. IPv4 uses 32 bits (4 octets). IPv6 uses 128 bits. | 192.168.1.1 (IPv4) |
| MAC address | A unique physical address burned into the NIC by the manufacturer. 48 bits, written as 6 pairs of hex digits. Cannot be changed (in normal use). | A1:B2:C3:D4:E5:F6 |
DNS translates human-readable domain names (e.g. www.google.com) into IP addresses (e.g. 142.250.187.46) that computers use to locate servers.
Data is broken into small packets before being sent across a network. Each packet contains:
Packets may take different routes across the network and arrive out of order. The receiving device uses the sequence numbers to reassemble them in the correct order. Missing or corrupt packets are re-requested.
| Method | How It Works | Limitation |
|---|---|---|
| Parity bit | An extra bit is added to make the total number of 1s either even (even parity) or odd (odd parity). If the parity does not match on arrival, an error is detected. | Cannot detect errors where an even number of bits are flipped (e.g. 2 bits change) |
| Checksum | A mathematical value calculated from the data before sending. The same calculation is performed at the receiving end. If the values do not match, there is an error. | Different errors can produce the same checksum (though unlikely) |
| Check digit | An extra digit added to a number (e.g. barcode, ISBN) calculated from the other digits using a formula. Used to detect transcription errors. | Cannot detect all transposition errors |
| Echo check | The receiver sends the data back to the sender, who compares it with the original. If they differ, the data is resent. | Doubles the amount of data transmitted; slow |
Important distinction: These methods detect errors but do not correct them. If an error is detected, the data must be retransmitted.
| Model | What You Get | What You Manage | Example |
|---|---|---|---|
| SaaS (Software as a Service) | Complete application accessed via a web browser | Nothing - the provider manages everything | Google Docs, Office 365, Gmail, Salesforce |
| PaaS (Platform as a Service) | Platform/environment for developing and deploying applications | Your applications and data | Google App Engine, Microsoft Azure, Heroku |
| IaaS (Infrastructure as a Service) | Virtual servers, storage, and networking resources | OS, applications, data, middleware | Amazon Web Services (AWS), Microsoft Azure VMs |
| Model | Description | Use Case |
|---|---|---|
| Public cloud | Resources shared among multiple organisations over the internet, owned by a third-party provider | Small businesses, startups, web hosting (e.g. AWS, Google Cloud, Microsoft Azure) |
| Private cloud | Dedicated infrastructure for a single organisation, hosted on-premises or by a provider | Banks, government, healthcare - where data privacy is critical |
| Hybrid cloud | Combination of public and private cloud; data and applications can move between them | Organisations that need flexibility - sensitive data on private, general workloads on public |
| Community cloud | Shared infrastructure for organisations with common concerns (e.g. security, compliance) | Government departments, universities in a consortium, healthcare networks |
| IaaS | PaaS | SaaS | |
|---|---|---|---|
| You manage | OS, middleware, applications, data | Applications and data only | Nothing - just use the application |
| Provider manages | Servers, storage, networking, virtualisation | Plus OS, middleware, runtime | Everything |
| Flexibility | Highest - full control over software stack | Medium - focus on app development | Lowest - use as-is |
| Examples | AWS EC2, Azure VMs, Google Compute Engine | Heroku, Google App Engine, Azure App Service | Gmail, Office 365, Salesforce, Dropbox |
| Analogy | Renting an empty building - you furnish it | Renting a furnished kitchen - you cook | Eating at a restaurant - everything done for you |
Virtualisation creates virtual versions of physical resources (servers, storage, networks), allowing multiple virtual machines to run on a single physical server.
A hypervisor is software that creates and manages virtual machines:
| Type 1 (Bare-metal) | Type 2 (Hosted) |
|---|---|
| Runs directly on hardware | Runs on top of an existing OS |
| Better performance | Easier to set up |
| Used in data centres and enterprise | Used for development and testing |
| Examples: VMware ESXi, Microsoft Hyper-V | Examples: VirtualBox, VMware Workstation |
| Virtual Machine (VM) | Container | |
|---|---|---|
| Includes | Full OS + application + libraries | Application + libraries only (shares host OS kernel) |
| Size | Gigabytes | Megabytes |
| Startup time | Minutes | Seconds |
| Isolation | Strong - separate OS | Lighter isolation - shares kernel |
| Use case | Running different OSes, legacy applications | Microservices, rapid deployment, scaling |
| Examples | VMware, Hyper-V, VirtualBox | Docker, Kubernetes (orchestration) |
| Concept | Definition | Example |
|---|---|---|
| Scalability | The ability to increase resources to handle growing demand | Adding more server capacity as user numbers grow |
| Vertical scaling (scale up) | Adding more power to an existing server (more CPU, RAM) | Upgrading a database server from 16GB to 64GB RAM |
| Horizontal scaling (scale out) | Adding more servers to distribute the load | Adding web servers behind a load balancer during peak traffic |
| Elasticity | Automatically scaling resources up or down based on real-time demand | An e-commerce site automatically adding servers on Black Friday and removing them after |
An expert system is a computer program that mimics the decision-making of a human expert in a specific domain. It has three components:
| Component | Function |
|---|---|
| Knowledge base | Stores facts and rules about the domain, usually as IF-THEN rules. Built from interviewing human experts. |
| Inference engine | Applies logical rules to the knowledge base to deduce new information and reach conclusions. Uses forward chaining (data-driven) or backward chaining (goal-driven). |
| User interface | Allows the user to input data and receive explanations/recommendations from the system. |
Examples: medical diagnosis, fault diagnosis in machinery, financial advice, mineral prospecting.
The Turing Test, proposed by Alan Turing in 1950, tests whether a machine can exhibit intelligent behaviour indistinguishable from a human. A human interrogator communicates with both a machine and a human via text. If the interrogator cannot reliably tell which is the machine, the machine is said to have passed the test.
Machine learning is a branch of AI where systems learn from data to improve performance without being explicitly programmed. The system identifies patterns in training data and uses them to make predictions or decisions on new data.
Artificial neural networks are computing systems inspired by the structure of the human brain. They consist of layers of interconnected nodes (artificial neurons). Data passes through input, hidden, and output layers. Used for image recognition, speech recognition, and natural language processing.
NLP enables computers to understand, interpret, and generate human language. Applications include: chatbots, voice assistants (Siri, Alexa), translation services, sentiment analysis.
Encryption converts plaintext data into unreadable ciphertext using an algorithm and a key. Only someone with the correct key can decrypt it.
| Symmetric Encryption | Asymmetric Encryption | |
|---|---|---|
| Keys | Same key used to encrypt and decrypt | Two keys: a public key (encrypts) and a private key (decrypts) |
| Speed | Fast | Slower (more complex mathematics) |
| Key distribution | Problem: how to securely share the key? | Public key can be shared openly; only the private key must be kept secret |
| Examples | AES, DES | RSA |
| Used for | Encrypting stored data, bulk data | Secure key exchange, digital signatures, HTTPS |
| Measure | Description |
|---|---|
| Firewall | Monitors and controls incoming/outgoing network traffic based on security rules. Can block unauthorised access while permitting legitimate traffic. |
| Authentication | Verifying the identity of a user. Methods include: password, two-factor authentication (2FA), multi-factor authentication (MFA). |
| Biometrics | Using unique physical characteristics for authentication: fingerprint, facial recognition, iris scan, voice recognition. Difficult to forge but expensive and raises privacy concerns. |
| Physical security | Locks, CCTV, security guards, cable locks for laptops, restricted access areas, visitor logs. |
| Access control | Defining permissions for different users/groups. Principle of least privilege: users only get the minimum access needed for their role. |
| Threat | Description | Prevention |
|---|---|---|
| Phishing | Fraudulent emails/messages that appear legitimate, tricking users into revealing personal data or clicking malicious links | Staff training, email filters, checking sender addresses, not clicking suspicious links |
| Malware | Malicious software including viruses (attach to files, spread when executed), worms (self-replicate across networks), trojans (disguised as legitimate software), ransomware (encrypts files, demands payment), spyware (monitors user activity) | Antivirus software, keep OS updated, do not download from untrusted sources |
| SQL injection | Attacker enters malicious SQL code into a web form input field to manipulate the database (e.g. ' OR 1=1 --) | Input validation/sanitisation, parameterised queries, prepared statements |
| DDoS | Distributed Denial of Service. Multiple compromised computers flood a server with traffic, making it unavailable to legitimate users | Traffic filtering, rate limiting, DDoS protection services, redundant servers |
| Social engineering | Manipulating people into revealing confidential information through deception (pretexting, baiting, tailgating) | Staff awareness training, verification procedures, security policies |
| Brute force attack | Systematically trying every possible combination of passwords until the correct one is found | Account lockout after failed attempts, CAPTCHA, strong password policies, 2FA |
| Malware Type | How It Works | Key Characteristics |
|---|---|---|
| Virus | Attaches to a legitimate file or program; activates when the host file is executed | Requires human action to spread; can corrupt/delete files |
| Worm | Self-replicates across networks without human interaction | Exploits network vulnerabilities; consumes bandwidth; can carry payloads |
| Trojan | Disguised as legitimate software; creates a backdoor once installed | Does NOT self-replicate; relies on user downloading/installing it |
| Ransomware | Encrypts victim's files and demands payment (usually cryptocurrency) for the decryption key | Often spread via phishing emails; examples: WannaCry, NotPetya |
| Spyware | Secretly monitors user activity - keystrokes, browsing habits, login credentials | Often bundled with free software; includes keyloggers |
| Adware | Displays unwanted advertisements, often as pop-ups or browser redirects | May collect browsing data; slows down system; often bundled with freeware |
| Rootkit | Hides deep in the OS to give an attacker persistent, privileged access | Extremely difficult to detect; may survive reinstallation; modifies OS components |
Social engineering exploits human psychology rather than technical vulnerabilities to gain access to systems or data.
| Attack | Description | Example |
|---|---|---|
| Phishing | Mass emails impersonating a trusted organisation to trick users into revealing credentials or clicking malicious links | Fake bank email asking you to "verify your account" |
| Spear phishing | Targeted phishing aimed at a specific individual, using personal details to appear credible | Email to a company CEO referencing their recent conference talk |
| Vishing | Voice phishing - fraudulent phone calls impersonating banks, tech support, or authorities | Caller claims to be from Microsoft saying your PC has a virus |
| Baiting | Leaving infected media (e.g. USB drives) in public places hoping someone will plug them in | USB labelled "Salary Report 2025" left in a company car park |
| Pretexting | Creating a fabricated scenario (pretext) to gain trust and extract information | Attacker calls IT helpdesk posing as a new employee who forgot their password |
A DDoS attack uses a botnet (network of compromised computers) to flood a target server with traffic, overwhelming it and making it unavailable. The attack is "distributed" because it comes from thousands of sources simultaneously, making it hard to block.
SQL injection exploits web forms that pass user input directly into SQL queries without sanitisation:
-- Vulnerable query: SELECT * FROM users WHERE username = ' + input + '; -- Attacker enters: ' OR 1=1 -- -- Resulting query: SELECT * FROM users WHERE username = '' OR 1=1 --' -- This returns ALL rows because 1=1 is always true -- Prevention: use parameterised queries SELECT * FROM users WHERE username = ?;
XSS occurs when an attacker injects malicious JavaScript into a web page viewed by other users. The script runs in the victim's browser with the same permissions as the legitimate site.
Prevention: input validation, output encoding, Content Security Policy (CSP) headers.
The attacker secretly intercepts and potentially alters communication between two parties who believe they are communicating directly. Common on unsecured Wi-Fi networks.
Prevention: HTTPS/TLS encryption, certificate pinning, VPN usage, avoiding public Wi-Fi for sensitive transactions.
A zero-day exploit targets a software vulnerability that is unknown to the vendor - meaning there are "zero days" of available patches. These are extremely dangerous because no fix exists when the attack occurs.
Mitigation: defence in depth, intrusion detection systems, regular software updates, threat intelligence sharing.
Systematically trying every possible password combination. Variants include:
Prevention: account lockout, CAPTCHA, rate limiting, strong password policies, salted hashing, multi-factor authentication.
A firewall monitors and controls network traffic based on predefined security rules. There are several types:
| Firewall Type | How It Works | Strengths / Weaknesses |
|---|---|---|
| Packet filtering | Examines each packet's header (source/destination IP, port number) and allows or blocks based on rules | Fast and simple but cannot inspect packet contents; vulnerable to IP spoofing |
| Stateful inspection | Tracks the state of active connections and makes decisions based on context (not just individual packets) | More secure than packet filtering; understands connection state; slightly slower |
| Proxy firewall | Acts as an intermediary between internal and external networks; inspects full packet content at the application layer | Can filter specific content (e.g. block certain websites); hides internal network; slower due to deep inspection |
| IDS (Intrusion Detection System) | IPS (Intrusion Prevention System) | |
|---|---|---|
| Function | Monitors network traffic for suspicious activity and alerts administrators | Monitors AND automatically takes action to block threats |
| Response | Passive - generates alerts only | Active - can drop packets, block IP addresses, reset connections |
| Placement | Monitors a copy of network traffic | Sits inline with network traffic |
| Detection methods | Signature-based (matches known attack patterns) or anomaly-based (detects deviations from normal behaviour) | |
A VPN creates an encrypted tunnel between a device and a remote server, protecting data from interception on untrusted networks.
| Protocol | Description |
|---|---|
| IPSec | Encrypts at the network layer; widely used for site-to-site VPNs; strong security |
| SSL/TLS | Encrypts at the transport layer; used for browser-based VPNs; easier to set up |
| OpenVPN | Open-source protocol using SSL/TLS; highly configurable; widely supported |
| WireGuard | Modern protocol; faster and simpler codebase; strong cryptography |
Penetration testing (pen testing) is the authorised simulation of a cyber attack to identify vulnerabilities before real attackers exploit them. Stages include: reconnaissance, scanning, exploitation, reporting.
| Type | Intent | Legality |
|---|---|---|
| White hat | Ethical hackers who test systems with permission to find and fix vulnerabilities | Legal - authorised by the system owner |
| Grey hat | Find vulnerabilities without permission but without malicious intent; may notify the owner | Legally questionable - no authorisation given |
| Black hat | Exploit systems for personal gain, theft, or damage | Illegal - violates Computer Misuse Act 1990 |
A security policy is a formal document that defines an organisation's rules and procedures for protecting its information systems. It should cover:
| Model | How It Works | Example |
|---|---|---|
| DAC (Discretionary Access Control) | The resource owner decides who has access; permissions can be granted/revoked by the owner | File sharing on Windows - the file owner sets read/write permissions |
| MAC (Mandatory Access Control) | Access determined by security labels/clearance levels set by a central authority; users cannot change permissions | Military systems - "Top Secret", "Secret", "Confidential" classification levels |
| RBAC (Role-Based Access Control) | Permissions assigned to roles, not individuals; users are assigned to roles | Hospital system - "Doctor" role can view patient records, "Receptionist" role cannot |
Biometric authentication uses unique physical or behavioural characteristics to verify identity:
| Advantages | Disadvantages |
|---|---|
| Cannot be forgotten or lost (unlike passwords/cards) | Expensive to implement |
| Difficult to forge or share | Privacy concerns - biometric data is permanent |
| Convenient for users | False positives/negatives can occur |
| Provides strong non-repudiation | If compromised, biometric data cannot be changed (unlike a password) |
Controls how personal data is collected, stored, used, and shared by organisations.
Three offences:
Protects the intellectual property of creators. It is illegal to copy, distribute, or modify software, music, images, or other creative works without permission. This covers:
Gives the public the right to request information held by public authorities (e.g. government, councils, NHS, schools). The authority must respond within 20 working days. Some exemptions apply (national security, personal data, commercial interests).
The digital divide is the gap between those who have access to digital technology and the internet, and those who do not. Factors include age, income, location (rural vs urban), education, and disability. This creates inequality in education, employment, and access to services.
Algorithmic bias occurs when AI/machine learning systems produce discriminatory results because the training data reflects existing prejudices (e.g. facial recognition systems being less accurate for certain ethnicities, recruitment algorithms favouring certain demographics).
Issues include: mass data collection by companies and governments, CCTV monitoring, tracking through smartphones/apps, cookies tracking browsing habits, social media companies selling user data to advertisers.
Automation and AI are replacing jobs in manufacturing, retail (self-checkout), transport (autonomous vehicles), customer service (chatbots). However, technology also creates new job roles (data scientists, cybersecurity analysts).
The tension between security and privacy is a central ethical debate in digital technology:
Autonomous systems (self-driving cars, drones, robotic surgery) raise unique ethical questions:
Digital wellbeing refers to maintaining a healthy relationship with technology:
| Issue | Detail |
|---|---|
| E-waste | 50+ million tonnes of electronic waste generated globally per year; contains toxic materials (lead, mercury, cadmium); only ~20% is formally recycled |
| Data centre energy | Data centres consume ~1-2% of global electricity; cooling systems are a major energy cost; companies increasingly using renewable energy |
| Rare earth mining | Components require cobalt, lithium, rare earth elements; mining causes habitat destruction and water pollution; often involves exploitative labour |
| Planned obsolescence | Devices designed to become outdated quickly through software updates, non-replaceable batteries, or discontinued support |
Mitigation: Right to repair legislation, circular economy principles, energy-efficient hardware, carbon-neutral data centres, responsible recycling programmes.
Inclusive design ensures technology is usable by people with the widest range of abilities and situations:
Net neutrality is the principle that Internet Service Providers (ISPs) must treat all internet traffic equally, without blocking, throttling, or prioritising specific content or services.
| For Net Neutrality | Against Net Neutrality |
|---|---|
| Ensures a level playing field for small businesses and startups | ISPs argue they need to manage network congestion |
| Prevents ISPs from creating "fast lanes" for companies that pay more | Could fund infrastructure investment |
| Protects freedom of expression and access to information | Some services (e.g. telemedicine) may benefit from prioritisation |
| Promotes innovation - anyone can launch a service | Market forces may be sufficient to prevent abuse |
RFID uses radio waves to automatically identify and track tags attached to objects. Components: RFID tag (chip + antenna), RFID reader, database.
Uses: access control, inventory management, contactless payment, passport chips, library books, luggage tracking.
The IoT is a network of physical devices embedded with sensors, software, and connectivity that enables them to collect and exchange data over the internet.
Examples: smart thermostats, fitness trackers, smart fridges, connected security cameras, industrial sensors, smart meters.
| Advantages | Disadvantages |
|---|---|
| Convenience and automation | Security vulnerabilities (each device is a potential entry point) |
| Energy efficiency (smart heating) | Privacy concerns (constant data collection) |
| Remote monitoring and control | Dependence on internet connectivity |
| Data collection for better decision-making | Compatibility issues between manufacturers |
Data mining is the process of analysing large datasets to discover patterns, correlations, and trends. Used by businesses for customer profiling, market basket analysis (identifying products frequently bought together), fraud detection, and targeted advertising.
Big data refers to datasets that are too large and complex for traditional data processing tools. Characterised by the three Vs:
Applications: healthcare (predicting outbreaks), retail (personalised recommendations), social media analysis, traffic management, weather forecasting.
| Approach | Description | Advantages | Disadvantages |
|---|---|---|---|
| Native app | Built for a specific platform using its native language (Swift/Kotlin) | Best performance; full access to device hardware (camera, GPS, sensors); best user experience | Separate codebase for each platform; more expensive and time-consuming |
| Hybrid app | Single codebase wrapped in a native container; uses web technologies (HTML, CSS, JS) | One codebase for multiple platforms; faster development; access to some device features via plugins | Slower than native; may not feel fully native; depends on framework updates |
| Web app | Runs in the mobile browser; built entirely with web technologies | No installation required; works on any device with a browser; easy to update | Limited device access (no push notifications without PWA); requires internet; cannot be listed in app stores |
Cross-platform frameworks: React Native, Flutter, Xamarin - allow developers to write once and deploy to both iOS and Android.
| iOS (Apple) | Android (Google) | |
|---|---|---|
| Source | Closed source (proprietary) | Open source (based on Linux kernel) |
| Distribution | App Store only (curated, strict review) | Google Play Store + third-party sources (sideloading) |
| Development | Swift or Objective-C; Xcode IDE; requires Mac | Kotlin or Java; Android Studio IDE; any OS |
| Customisation | Limited - consistent UX across devices | Highly customisable - varied across manufacturers |
| Security model | Sandboxed apps; strict app review; less malware | Sandboxed apps; more vulnerable due to sideloading and fragmentation |
The Internet of Things (IoT) follows a layered architecture:
| Layer | Function | Examples |
|---|---|---|
| 1. Perception (Sensors) | Collects data from the physical environment using sensors and actuators | Temperature sensors, motion detectors, cameras, accelerometers, GPS |
| 2. Network (Connectivity) | Transmits data from sensors to processing systems | Wi-Fi, Bluetooth, Zigbee, LoRaWAN, cellular (4G/5G), NFC |
| 3. Processing (Edge/Cloud) | Analyses and processes the collected data | Edge computing (local processing), cloud platforms (AWS IoT, Azure IoT Hub) |
| 4. Application (UI) | Presents data to users and enables control of devices | Mobile apps, dashboards, voice assistants, web interfaces |
| Protocol | Description | Use Case |
|---|---|---|
| MQTT (Message Queuing Telemetry Transport) | Lightweight publish/subscribe messaging protocol designed for low-bandwidth, high-latency networks | Smart home devices, sensor networks, remote monitoring |
| CoAP (Constrained Application Protocol) | Web transfer protocol for constrained devices; similar to HTTP but much lighter; uses UDP instead of TCP | Smart energy, building automation, resource-constrained devices |
| HTTP/HTTPS | Standard web protocol; heavier but widely supported | IoT devices with more resources; web-based dashboards |
| Zigbee | Low-power, short-range mesh networking protocol | Home automation (lights, locks, thermostats) |
Wearable devices are IoT devices worn on the body that collect and transmit data:
| Device Type | Data Collected | Applications |
|---|---|---|
| Fitness trackers / Smartwatches | Heart rate, steps, sleep patterns, blood oxygen | Health monitoring, exercise tracking, notifications |
| Medical wearables | Blood glucose, ECG, blood pressure | Chronic condition management, early warning alerts, remote patient monitoring |
| AR/VR headsets | Head movement, eye tracking, hand gestures | Gaming, training simulations, remote collaboration |
| Smart clothing | Biometrics, posture, muscle activity | Sports performance, workplace safety |
A trace table is used to track the values of variables as a program executes, line by line. This technique is essential for dry running an algorithm - manually working through code without a computer to verify it produces the correct output.
Technique: Read each line of code in order, update the relevant variable values in the table, and move to the next line. For loops, repeat the body until the condition fails. Record the value of every variable after each statement that changes it.
Trace the following pseudocode:
SET sum TO 0 FOR i FROM 1 TO 5 SET sum TO sum + i END FOR OUTPUT sum
Copy this empty trace table and fill in the values:
| Iteration | i | sum | Output |
|---|---|---|---|
| Before loop | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| After loop |
| Iteration | i | sum | Output |
|---|---|---|---|
| Before loop | - | 0 | |
| 1 | 1 | 1 | |
| 2 | 2 | 3 | |
| 3 | 3 | 6 | |
| 4 | 4 | 10 | |
| 5 | 5 | 15 | |
| After loop | - | 15 | 15 |
The sum of 1+2+3+4+5 = 15. The variable sum accumulates the running total on each iteration.
Trace the following pseudocode that generates Fibonacci numbers below 20:
SET a TO 0 SET b TO 1 WHILE b < 20 OUTPUT b SET temp TO b SET b TO a + b SET a TO temp END WHILE
| Iteration | a | b | temp | b < 20? | Output |
|---|---|---|---|---|---|
| Before loop | |||||
| 1 | |||||
| 2 | |||||
| 3 | |||||
| 4 | |||||
| 5 | |||||
| 6 | |||||
| 7 |
| Iteration | a | b | temp | b < 20? | Output |
|---|---|---|---|---|---|
| Before loop | 0 | 1 | - | TRUE | |
| 1 | 1 | 1 | 1 | TRUE | 1 |
| 2 | 1 | 2 | 1 | TRUE | 1 |
| 3 | 2 | 3 | 2 | TRUE | 2 |
| 4 | 3 | 5 | 3 | TRUE | 3 |
| 5 | 5 | 8 | 5 | TRUE | 5 |
| 6 | 8 | 13 | 8 | TRUE | 8 |
| 7 | 13 | 21 | 13 | FALSE | 13 |
The output is: 1, 1, 2, 3, 5, 8, 13. On iteration 7, after the body executes, b becomes 21 which fails the WHILE condition, so the loop stops. Note the use of temp to avoid losing the old value of b before the swap.
Trace the following pseudocode with nested loops:
SET count TO 0 FOR i FROM 1 TO 3 FOR j FROM 1 TO 2 SET count TO count + 1 OUTPUT i, j END FOR END FOR OUTPUT count
| Outer (i) | Inner (j) | count | Output |
|---|---|---|---|
| Outer (i) | Inner (j) | count | Output |
|---|---|---|---|
| 1 | 1 | 1 | 1, 1 |
| 1 | 2 | 2 | 1, 2 |
| 2 | 1 | 3 | 2, 1 |
| 2 | 2 | 4 | 2, 2 |
| 3 | 1 | 5 | 3, 1 |
| 3 | 2 | 6 | 3, 2 |
Final output: 6. The inner loop runs 2 times for every 1 run of the outer loop, so 3 x 2 = 6 iterations total. This is why nested loops multiply - a key concept for understanding time complexity.
When asked to design an algorithm, follow these steps:
Design an algorithm that accepts a list of N numbers entered by the user and outputs the largest number.
Hints: You need a variable to track the current largest value. Compare each new number against it. Think about what the initial value of your "largest" variable should be.
OUTPUT "How many numbers?" INPUT n OUTPUT "Enter number 1:" INPUT largest FOR i FROM 2 TO n OUTPUT "Enter number ", i, ":" INPUT num IF num > largest THEN SET largest TO num END IF END FOR OUTPUT "The largest number is: ", largest
Key idea: Initialise largest to the first input value (not 0, which would fail for all-negative lists). Then compare each subsequent value.
Write pseudocode to check if a word entered by the user is a palindrome (reads the same forwards and backwards, e.g., "racecar").
Hints: You could reverse the string and compare, or compare characters from each end working inwards. Think about the LENGTH function and accessing characters by index.
OUTPUT "Enter a word:" INPUT word SET isPalindrome TO TRUE SET length TO LENGTH(word) FOR i FROM 0 TO (length DIV 2) - 1 IF word[i] <> word[length - 1 - i] THEN SET isPalindrome TO FALSE END IF END FOR IF isPalindrome = TRUE THEN OUTPUT word, " is a palindrome" ELSE OUTPUT word, " is not a palindrome" END IF
Key idea: Compare the first character with the last, second with second-last, and so on. You only need to check up to the halfway point. Using a Boolean flag avoids premature exit from the loop.
Design a login system that asks for a username and password. The user gets a maximum of 3 attempts before the account is locked.
Hints: You need a counter for attempts and a WHILE loop that checks both the attempt count AND whether login was successful. Think about what happens when the loop ends - was it a success or lockout?
CONSTANT CORRECT_USER = "admin" CONSTANT CORRECT_PASS = "secret123" SET attempts TO 0 SET loggedIn TO FALSE WHILE attempts < 3 AND loggedIn = FALSE OUTPUT "Enter username:" INPUT username OUTPUT "Enter password:" INPUT password SET attempts TO attempts + 1 IF username = CORRECT_USER AND password = CORRECT_PASS THEN SET loggedIn TO TRUE OUTPUT "Login successful. Welcome!" ELSE OUTPUT "Incorrect. Attempts remaining: ", 3 - attempts END IF END WHILE IF loggedIn = FALSE THEN OUTPUT "Account locked. Contact administrator." END IF
Key idea: The WHILE condition checks BOTH that attempts remain AND login has not succeeded. After the loop, we check loggedIn to determine whether the exit was due to success or lockout.
Write an algorithm to calculate the average of N numbers entered by a user. The user first enters how many numbers they want to average.
Hints: Accumulate a running total, then divide at the end. Think about validation - what if N is zero?
OUTPUT "How many numbers?" INPUT n IF n <= 0 THEN OUTPUT "Error: must enter at least 1 number" ELSE SET total TO 0 FOR i FROM 1 TO n OUTPUT "Enter number ", i, ":" INPUT num SET total TO total + num END FOR SET average TO total / n OUTPUT "The average is: ", average END IF
Key idea: Validate input before processing. Use a running total with a FOR loop, then divide by the count AFTER the loop ends. Dividing inside the loop would give the wrong result.
Design an algorithm that takes a sentence as input and counts the total number of vowels (a, e, i, o, u) it contains.
Hints: Loop through each character. Convert to lowercase for easier comparison. Use a counter variable.
OUTPUT "Enter a sentence:" INPUT sentence SET vowelCount TO 0 SET vowels TO "aeiou" FOR i FROM 0 TO LENGTH(sentence) - 1 SET ch TO LOWER(sentence[i]) IF ch IN vowels THEN SET vowelCount TO vowelCount + 1 END IF END FOR OUTPUT "Number of vowels: ", vowelCount
Key idea: Convert each character to lowercase before checking, so "A" and "a" are both counted. The loop processes every character in the string.
Algorithmic complexity measures how the time or space requirements of an algorithm grow as the input size increases. It answers the question: "If I double the input, how much longer will it take?"
We use Big-O notation to classify algorithms by their worst-case performance. Big-O describes the upper bound of growth - the maximum number of operations as input size n increases.
| Big-O | Name | Description | Example Algorithm |
|---|---|---|---|
| O(1) | Constant | Time does not change regardless of input size. Always the same number of operations. | Accessing an array element by index; hash table lookup |
| O(log n) | Logarithmic | Time increases slowly as input grows. Halves the problem each step. | Binary search on a sorted array |
| O(n) | Linear | Time grows directly in proportion to input size. | Linear search; iterating through an array |
| O(n log n) | Linearithmic | Slightly worse than linear. Common in efficient sorting. | Merge sort; quick sort (average case) |
| O(n²) | Quadratic | Time grows with the square of input size. Doubling input makes it 4x slower. | Bubble sort; insertion sort; nested loops |
| O(2ⁿ) | Exponential | Time doubles with each additional input element. Impractical for large inputs. | Brute-force subset problems; recursive Fibonacci (naive) |
Consider how these complexities compare for an input of n = 1000:
| Big-O | n = 10 | n = 100 | n = 1,000 | n = 1,000,000 |
|---|---|---|---|---|
| O(1) | 1 | 1 | 1 | 1 |
| O(log n) | 3 | 7 | 10 | 20 |
| O(n) | 10 | 100 | 1,000 | 1,000,000 |
| O(n log n) | 30 | 700 | 10,000 | 20,000,000 |
| O(n²) | 100 | 10,000 | 1,000,000 | 1,000,000,000,000 |
| O(2ⁿ) | 1,024 | 1.27 x 10³&sup0; | Impossible | Impossible |
SET result TO array[5] // O(1) - direct access, no looping
FOR i FROM 0 TO n - 1 // O(n) - one pass through all items OUTPUT array[i] END FOR
FOR i FROM 0 TO n - 1 // Outer: n times FOR j FROM 0 TO n - 1 // Inner: n times each OUTPUT i, j // Total: n x n = O(n²) END FOR END FOR
WHILE n > 1 // O(log n) - divides by 2 each iteration SET n TO n DIV 2 END WHILE
FUNCTION fib(n) // O(2ⁿ) - two recursive calls per level IF n <= 1 THEN RETURN n RETURN fib(n-1) + fib(n-2) END FUNCTION
Choosing the right algorithm is critical for large datasets. Consider searching a sorted list of 1 million items:
For small datasets the difference is negligible, but at scale, an inefficient algorithm can take hours where an efficient one takes milliseconds. This is why understanding complexity helps you select the most appropriate algorithm for a given problem.
SET found TO FALSE FOR i FROM 0 TO n - 1 IF array[i] = target THEN SET found TO TRUE END IF END FOR
O(n) - Linear. The loop iterates through every element once. Even though it could find the target early, in the worst case (target is last or not present) it checks all n elements.
FOR i FROM 0 TO n - 1 FOR j FROM i + 1 TO n - 1 IF array[j] < array[i] THEN // swap array[i] and array[j] SET temp TO array[i] SET array[i] TO array[j] SET array[j] TO temp END IF END FOR END FOR
O(n²) - Quadratic. This is a selection sort. Even though the inner loop starts at i+1 (not 0), the total comparisons are n(n-1)/2, which simplifies to O(n²). In Big-O, we drop constants and lower-order terms.
SET low TO 0 SET high TO n - 1 WHILE low <= high SET mid TO (low + high) DIV 2 IF array[mid] = target THEN OUTPUT "Found at index ", mid SET low TO high + 1 // exit loop ELSE IF array[mid] < target THEN SET low TO mid + 1 ELSE SET high TO mid - 1 END IF END WHILE
O(log n) - Logarithmic. This is binary search. Each iteration halves the search space (either low moves up or high moves down to mid). For n = 1,000,000, this needs at most about 20 iterations.
A stack is a linear data structure where elements are added and removed from the same end (the "top"). Think of a stack of plates - you always take from the top.
| Operation | Description | Time Complexity |
|---|---|---|
| Push | Add an item to the top of the stack | O(1) |
| Pop | Remove and return the item from the top | O(1) |
| Peek / Top | View the top item without removing it | O(1) |
| isEmpty | Check if the stack has no elements | O(1) |
// Initialise stack SET stack TO ARRAY[0..MAX_SIZE] SET top TO -1 // -1 means empty FUNCTION push(item) IF top = MAX_SIZE - 1 THEN OUTPUT "Stack overflow" ELSE SET top TO top + 1 SET stack[top] TO item END IF END FUNCTION FUNCTION pop() IF top = -1 THEN OUTPUT "Stack underflow" ELSE SET item TO stack[top] SET top TO top - 1 RETURN item END IF END FUNCTION
A queue is a linear data structure where items are added at the rear and removed from the front. Think of a queue of people waiting - the first person in line is served first.
| Operation | Description | Time Complexity |
|---|---|---|
| Enqueue | Add an item to the rear of the queue | O(1) |
| Dequeue | Remove and return the item from the front | O(1) |
| Front / Peek | View the front item without removing it | O(1) |
| isEmpty | Check if the queue has no elements | O(1) |
// Initialise circular queue SET queue TO ARRAY[0..MAX_SIZE] SET front TO 0 SET rear TO -1 SET size TO 0 FUNCTION enqueue(item) IF size = MAX_SIZE THEN OUTPUT "Queue full" ELSE SET rear TO (rear + 1) MOD MAX_SIZE SET queue[rear] TO item SET size TO size + 1 END IF END FUNCTION FUNCTION dequeue() IF size = 0 THEN OUTPUT "Queue empty" ELSE SET item TO queue[front] SET front TO (front + 1) MOD MAX_SIZE SET size TO size - 1 RETURN item END IF END FUNCTION
A priority queue is a variant where each item has a priority value. Items with higher priority are dequeued before items with lower priority, regardless of insertion order. Used in:
A linked list is a dynamic data structure made up of nodes. Each node contains two parts: the data and a pointer (reference) to the next node. The last node points to NULL.
// Each node contains: RECORD Node data : DATA_TYPE next : POINTER TO Node // NULL if last node END RECORD // The list is accessed via a head pointer SET head TO NULL // empty list
| Feature | Array | Linked List |
|---|---|---|
| Size | Fixed at creation (static) | Grows/shrinks dynamically |
| Insertion at start | O(n) - must shift all elements | O(1) - just update pointers |
| Deletion from middle | O(n) - must shift elements | O(1) once node is found - update pointers |
| Access by index | O(1) - direct access | O(n) - must traverse from head |
| Memory usage | Contiguous block, may waste space | Extra memory for pointers, but no wasted space |
| Cache performance | Excellent (contiguous memory) | Poor (nodes scattered in memory) |
A binary tree is a hierarchical data structure where each node has at most two children: a left child and a right child. The topmost node is called the root.
A binary search tree (BST) is a binary tree with an ordering property: for every node, all values in the left subtree are smaller, and all values in the right subtree are larger.
| Term | Meaning |
|---|---|
| Root | The topmost node (has no parent) |
| Leaf | A node with no children |
| Parent | A node that has children below it |
| Subtree | A node and all its descendants |
| Depth / Level | The number of edges from the root to a node |
| Height | The number of edges on the longest path from root to a leaf |
There are three standard ways to visit every node in a binary tree. For a tree with root value 8, left subtree rooted at 3, right subtree rooted at 10:
| Traversal | Order | Mnemonic | Use Case |
|---|---|---|---|
| In-order | Left, Root, Right | L-N-R | Outputs BST values in sorted (ascending) order |
| Pre-order | Root, Left, Right | N-L-R | Copying/serialising a tree structure |
| Post-order | Left, Right, Root | L-R-N | Deleting a tree; evaluating expression trees |
FUNCTION inOrder(node) IF node <> NULL THEN inOrder(node.left) OUTPUT node.data // visit BETWEEN children inOrder(node.right) END IF END FUNCTION FUNCTION preOrder(node) IF node <> NULL THEN OUTPUT node.data // visit BEFORE children preOrder(node.left) preOrder(node.right) END IF END FUNCTION FUNCTION postOrder(node) IF node <> NULL THEN postOrder(node.left) postOrder(node.right) OUTPUT node.data // visit AFTER children END IF END FUNCTION
| Scenario | Best Structure | Why |
|---|---|---|
| Undo/redo functionality | Stack | LIFO - most recent action undone first |
| Print job scheduling | Queue | FIFO - first document submitted prints first |
| Frequently inserting/deleting items | Linked List | O(1) insertion/deletion without shifting elements |
| Fast lookup by index | Array | O(1) direct access by position |
| Sorted data with fast search | Binary Search Tree | O(log n) search, insert, and delete |
| Task scheduling by importance | Priority Queue | Highest priority items processed first |
| Evaluating mathematical expressions | Stack / Binary Tree | Operator precedence handled naturally |
| Storing a hierarchical file system | Tree | Naturally represents parent-child relationships |