AQA GCSE Computer Science
Last Accessed
Recently visited lessons will appear here for quick access.Start exploring your first lesson today!
Fundamentals of algorithms
Representing and comparing algorithms
3.1.1 - Algorithms, decomposition and abstractionA computer needs a clear method for completing a task. Before writing a program, decide the steps, break a large problem into manageable tasks and keep the information that matters.
3.1.1 - Designing, representing and tracing algorithmsAn algorithm becomes easier to check when you identify what it receives, what it does and what it produces. Pseudocode, flowcharts and trace tables help you turn a problem into a method and explain why the method works.
3.1.2 - Comparing algorithm efficiencyTwo algorithms can produce the same correct result while doing different amounts of work. Comparing their time efficiency helps you explain which method is likely to finish sooner for a particular problem.
Searching and sorting
3.1.3 - Linear searchA search looks for a target item in a collection. Linear search checks items in sequence and can work even when the data is not sorted.
3.1.3 - Binary search and search comparisonsBinary search uses the order of a sorted collection to discard items that cannot contain the target. Its advantage comes from repeatedly reducing the range still being searched.
3.1.4 - Bubble sortSorting puts items into a chosen order. Bubble sort builds that order by comparing adjacent items and swapping pairs that are the wrong way round.
3.1.4 - Merge sort and sort comparisonsMerge sort divides a list into smaller lists, then builds the sorted result by merging ordered lists. Understanding the merge step explains how the method creates order without bubble sort's repeated adjacent swaps.
Programming foundations
Python route
3.2.1, 3.2.7 - Data types, input and output (Python)A program needs data in a suitable form, a way to receive it and a way to communicate its results. This lesson introduces Python 3 values, keyboard input and display output for the written Python route.
3.2.2 - Variables, constants and sequence (Python)Programs store values under names and execute statements in a deliberate order. You will use variables, the Python convention for named constants and meaningful identifiers to write and interpret a short calculation.
3.2.3 - Arithmetic and division (Python)Arithmetic expressions calculate new values from stored data. You will distinguish ordinary division from whole-group counts and remainders, and choose Python operators that match a problem.
3.2.2, 3.2.4, 3.2.5 - Selection and Boolean conditions (Python)Selection lets a program choose an action from its data. You will build Python conditions from comparisons and Boolean operators, then use them to control clearly indented branches.
3.2.2 - Count-controlled iteration (Python)When the required number of repetitions is known, a count-controlled loop avoids writing the same instructions repeatedly. You will choose Python range limits and trace how repeated updates build a result.
3.2.2 - Condition-controlled iteration (Python)Some tasks repeat until an event occurs rather than for a known count. You will compare conditions tested before and after the body, then reason about how a loop reaches its stopping state.
3.2.2 - Nested selection and iteration (Python)A control structure can contain another structure. You will use indentation to identify which condition or counter controls each statement and trace nested Python decisions and loops.
C# route
3.2.1, 3.2.7 - Data types, input and output (C#)Choose suitable types for a program's data, read keyboard input and display useful results. C# examples and written answers are native C#. C# execution is unavailable here; the runnable activity is an optional Python demonstration of the same idea.
3.2.2 - Variables, constants and sequence (C#)Use named data and the order of statements to build a program that performs a calculation correctly. Written answers use C#; native execution is unavailable here, so the runnable activity is an optional Python demonstration.
3.2.3 - Arithmetic and division (C#)Build arithmetic expressions and choose between a real quotient, an integer quotient and a remainder. Native written answers use C#. The optional runnable demonstration uses Python because C# execution is unavailable here.
3.2.2, 3.2.4, 3.2.5 - Selection and Boolean conditions (C#)Compare data, combine true/false conditions and choose which statements a C# program executes. Written tasks use native C# with no Run. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.2 - Count-controlled iteration (C#)Repeat a known number of operations and trace how a counter and running total change. C# written tasks have no Run. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.2 - Condition-controlled iteration (C#)Choose a loop when the number of repetitions depends on a condition, and explain when it will stop. Required answers use native C#; execution is unavailable here, with an optional Python demonstration for exploration.
3.2.2 - Nested selection and iteration (C#)Read and write control structures inside other control structures, following which condition controls each statement. Native C# execution is unavailable here; required written answers remain C# and the runnable activity is an optional Python demonstration.
VB.NET route
3.2.1, 3.2.7 - Data types, input and output (VB.NET)Choose suitable types for data, read keyboard input and display useful results in VB.NET. Native VB.NET answers are written here; execution is unavailable. The optional Python demonstration has its own Run control.
3.2.2 - Variables, constants and sequence (VB.NET)Use named storage and statement order to build a small VB.NET calculation. Native code is written without Run; the labelled optional Python demonstration supports experimentation.
3.2.3 - Arithmetic and division (VB.NET)Build arithmetic expressions and choose between real division, integer division and remainder in VB.NET. Written native answers have no Run; an optional Python demonstration explores the calculations.
3.2.2, 3.2.4, 3.2.5 - Selection and Boolean conditions (VB.NET)Compare values, combine conditions and choose which VB.NET statements execute. The required code answer is written in VB.NET without Run; Python appears only in the optional demonstration.
3.2.2 - Count-controlled iteration (VB.NET)Use a known repetition count to write and trace VB.NET loops. Native exam answers are written without Run; the optional Python demonstration explores the same accumulator idea.
3.2.2 - Condition-controlled iteration (VB.NET)Use conditions before or after a loop body and explain why a loop terminates. VB.NET answers remain written without Run; a labelled Python demonstration lets you explore a precondition.
3.2.2 - Nested selection and iteration (VB.NET)Trace control structures inside other control structures and use them to express repeated decisions. Native VB.NET code is written without Run; the optional Python demonstration explores a nested loop.
Data structures and modular programs
Python route
3.2.6 - One-dimensional arrays (Python)An indexed collection stores related values together so that one algorithm can process them. This lesson uses Python lists as the array equivalent for storing, traversing and updating a series of measurements.
3.2.6 - Two-dimensional arrays (Python)A two-dimensional collection models a table or grid. You will use Python lists of rows, access a value with two indexes and traverse the grid to solve a small counting problem.
3.2.6 - Records and fields (Python)Some related values describe one object but have different meanings and types. You will represent those values as named fields using Python dictionaries, the record equivalent used in this lesson.
3.2.8 - String operations and conversions (Python)String operations select and combine text, while conversions connect text with numeric processing. You will use Python indexes, slices, character codes and conversions without confusing their roles.
3.2.9 - Random number generation (Python)Random values can make a game or simulation vary between runs. You will generate Python integers in a stated range and use a generated value in ordinary selection and arithmetic.
3.2.2, 3.2.10 - Subroutines, parameters and return values (Python)Subroutines give a named task its own code. You will define and call Python subroutines, pass more than one parameter and return a calculated result for the caller to use.
3.2.10 - Local variables and modular design (Python)Structured programs divide work into modules with clear responsibilities. You will use local variables and documented parameter/return interfaces to keep a calculation understandable, reusable and testable.
C# route
3.2.6 - One-dimensional arrays (C#)Use an indexed collection to store and process related values without a separate variable for every item. Required written code is native C#; execution is unavailable here, with an optional Python demonstration for exploration.
3.2.6 - Two-dimensional arrays (C#)Store values arranged in rows and columns, then use nested loops to process the grid. Written answers use native C#. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.6 - Records and fields (C#)Group differently typed information about one entity and use its named fields in a solution. Required written answers are native C#; execution is unavailable here, with an optional Python demonstration for exploration.
3.2.8 - String operations and conversions (C#)Find and extract characters, join text, and convert between characters, codes and numbers. Native C# written answers have no Run. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.9 - Random number generation (C#)Generate values within a specified range and use each generated result consistently in a program. Required written answers use C#; native execution is unavailable here, with an optional Python demonstration.
3.2.2, 3.2.10 - Subroutines, parameters and return values (C#)Define reusable named code, pass data into it and return a result to its caller. Native C# written answers remain C#. C# execution is unavailable here; a labelled optional Python demonstration supports exploration.
3.2.10 - Local variables and modular design (C#)Keep a subroutine's temporary data local and connect program modules through clear interfaces. Native C# execution is unavailable here; required written answers remain C#, with an optional Python demonstration.
VB.NET route
3.2.6 - One-dimensional arrays (VB.NET)Organise values by index and process them with VB.NET loops. Native code answers are written without Run; the optional Python demonstration uses a list to explore indexed changes.
3.2.6 - Two-dimensional arrays (VB.NET)Use row and column indexes to represent and process a grid in VB.NET. Native answers are written without Run; the optional Python demonstration uses a list of rows.
3.2.6 - Records and fields (VB.NET)Group related fields into a record and use it in a VB.NET solution. Native code answers are written without Run; the optional Python demonstration uses a dictionary to explore named fields.
3.2.8 - String operations and conversions (VB.NET)Locate and extract text, join it, convert character codes and move between text and numeric values in VB.NET. Native code answers are written without Run; the optional Python demonstration explores a text transformation.
3.2.9 - Random number generation (VB.NET)Generate values within deliberate bounds and use them in a simple VB.NET simulation. Native code is written without Run; the optional Python demonstration explores repeatable learning tests.
3.2.2, 3.2.10 - Subroutines, parameters and return values (VB.NET)Define reusable VB.NET routines, pass data into them and return results to the caller. Native answers are written without Run; the optional Python demonstration explores the same data flow.
3.2.10 - Local variables and modular design (VB.NET)Keep intermediate values local and connect modules through clear documented interfaces. Native VB.NET answers are written without Run; an optional Python demonstration explores separate local state.
Robust and secure programs
Python route
3.2.11 - Data validation routines (Python)Validation checks whether input satisfies the program's rules before that input is used. You will write Python length, presence and range checks and repeat a request until its value is permitted.
3.2.11 - Authentication routines (Python)Authentication checks a claimed identity before access is granted. You will implement a simple Python username/password check and distinguish it from validating the shape of an input.
3.2.11 - Test data and program refinement (Python)Testing compares a program's actual behaviour with the behaviour its requirements demand. You will choose and justify representative inputs, use a test table and refine a Python routine when a result reveals a fault.
3.2.11 - Finding and correcting program errors (Python)Correct code must both obey Python's rules and implement the intended algorithm. You will distinguish syntax and logic errors, identify a fault from its behaviour and retest a focused correction.
C# route
3.2.11 - Data validation routines (C#)Check that user input meets a problem's rules and repeat input when it is invalid. Native written answers use C#. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.11 - Authentication routines (C#)Write a username-and-password check that accepts only a matching pair of credentials. Required written answers use C#. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.11 - Test data and program refinement (C#)Choose representative test data, compare expected and actual behaviour, and use the results to improve a program. C# written tasks have no Run. C# execution is unavailable here; the runnable activity is an optional Python demonstration.
3.2.11 - Finding and correcting program errors (C#)Distinguish syntax faults from incorrect logic, find their causes and verify a correction against the problem. Required written answers use C#. Native execution is unavailable here; the runnable activity is an optional Python demonstration.
VB.NET route
3.2.11 - Data validation routines (VB.NET)Check whether entered data meets stated rules and repeat input when it does not. Native VB.NET answers are written without Run; the optional Python demonstration explores boundary decisions.
3.2.11 - Authentication routines (VB.NET)Use a username and its matching password to make a simple authentication decision in VB.NET. Native answers are written without Run; the optional Python demonstration checks the same credential-pair rule.
3.2.11 - Test data and program refinement (VB.NET)Choose justified tests, compare expected and actual behaviour, then refine a VB.NET program. Native answers are written without Run; the optional Python demonstration supplies an observable boundary fault.
3.2.11 - Finding and correcting program errors (VB.NET)Distinguish syntax and logic faults, locate their causes and check a corrected VB.NET solution. Native code answers are written without Run; the optional Python demonstration makes one logic fault observable.
Fundamentals of data representation
Numbers and information
3.3.1 - Number bases and binary dataLearn how decimal, binary and hexadecimal write numbers, why computers use bits, and why the meaning of a bit pattern depends on how it is read.
3.3.2 - Converting between number basesConvert whole numbers between decimal, eight-bit binary and hexadecimal, using place values and four-bit groups. The examined decimal range is 0–255.
3.3.3 - Bits, bytes and decimal prefixesDistinguish bits from bytes and convert storage quantities using the decimal prefixes kB, MB, GB and TB. Careful units make comparisons and file-size calculations reliable.
3.3.4 - Binary additionAdd binary whole numbers using columns and carries, including up to three eight-bit operands. Check each result against the decimal values without replacing the binary method.
3.3.4 - Logical binary shiftsMove bits left or right in an eight-bit pattern, then relate logical shifts to multiplication and whole-number division by powers of two. Learn when losing a bit changes the arithmetic result.
Text, images, sound and compression
3.3.5 - ASCII and Unicode character encodingUse encoding tables to convert characters and numerical codes, infer codes within sequential groups, and explain how Unicode supports more characters than seven-bit ASCII.
3.3.6 - Bitmap pixels, colour depth and file sizeLearn how a bitmap stores an image as pixels, how colour depth controls the available colours, and how dimensions and depth determine uncompressed image size.
3.3.6 - Encoding and drawing bitmap dataTurn supplied binary pixel data into a drawn bitmap and turn a bitmap back into bits. Use the given dimensions, reading order and colour key so every pixel occupies the right position.
3.3.7 - Sampling sound and calculating file sizeLearn how samples turn analogue sound into digital data, distinguish sampling rate from sample resolution, and calculate uncompressed sound size with clear units.
3.3.8 - Compression and Huffman codingExplain why data is compressed, read variable-length codes from a Huffman tree, and calculate compressed size and bit savings compared with seven-bit ASCII.
3.3.8 - Run length encodingUse frequency/value pairs to describe repeated consecutive data, then encode and decode bitmap rows without losing their pixel positions.
Computer systems
Logic, software and translation
3.4.1 - Hardware and softwareDistinguish the physical components of a computer from the instructions they execute, then explain how hardware and software work together to perform a user's task.
3.4.2 - Logic gates and truth tablesRecognise AQA's NOT, AND, OR and XOR symbols and construct their truth tables. Use 0 and 1 to reason about conditions instead of guessing from a gate's name.
3.4.2 - Logic circuits and Boolean expressionsCombine the four required gates, construct complete truth tables for up to three inputs, and translate between a circuit and a Boolean expression with the specified symbols.
3.4.3 - System software, operating systems and utilitiesDistinguish system software from applications, explain how an operating system manages resources, and identify the maintenance work performed by utilities.
3.4.4 - High-level, assembly and machine languagesCompare programming language levels, distinguish assembly from machine code, and explain why a developer might choose a language closer to the hardware or closer to a human problem.
3.4.4 - Compilers, interpreters and assemblersExplain why source programs need translation, compare the three required translators, and choose a suitable approach for development or repeated execution.
Architecture, storage and embedded systems
3.4.5 - CPU components and the Fetch-Execute cycleLearn how the CPU's major components cooperate with main memory, then follow an instruction through fetching, decoding and execution. Specific register names are not required.
3.4.5 - Memory types and CPU performanceCompare RAM, ROM, cache and registers by their purpose and persistence, then explain how clock speed, processor cores and cache size can affect CPU performance.
3.4.5 - Magnetic and solid-state storageExplain why a computer needs persistent secondary storage, how magnetic and solid-state devices store data, and how their properties affect a storage choice.
3.4.5 - Cloud and local storageExplain where cloud data is physically stored and compare remote and local storage using access, cost, availability and control. Apply the trade-offs to a particular user's needs.
3.4.5 - Embedded and non-embedded systemsIdentify computers built into larger devices for a dedicated purpose and distinguish them from general-purpose systems. Use the system's role, rather than its size, to classify examples.
Fundamentals of computer networks
Network connections and protocols
3.5 - Networks, PANs, LANs and WANsA network lets devices exchange data and share resources. Learn why an organisation might connect its computers, and how the area covered and ownership distinguish PANs, LANs and WANs.
3.5 - Wired and wireless networksNetworks can carry data through cables or wireless signals. Compare copper, fibre and wireless connections by considering the task, location, reliability, movement and cost.
3.5 - Network protocols and TCP/IP layersDevices need agreed rules to communicate. Learn the purposes of the six required protocols and how their jobs fit into the application, transport, internet and link layers of TCP/IP.
3.5 - Network security methodsA useful network must protect its users and data. Learn how authentication, encryption, firewalls and MAC address filtering address different risks, and why they are stronger when used together.
Cyber security
Threats and protection
3.6.1, 3.6.2 - Cyber security and system weaknessesCyber security protects systems and data from attack, damage and unauthorised access. Learn how ordinary configuration weaknesses expose a system, and how pharming redirects a user to a fake website.
3.6.2, 3.6.2.1 - Social engineering and protectionAn attacker can exploit people's trust or attention instead of breaking a technical control. Learn how blagging, phishing and shouldering obtain confidential information, then match protection to each mechanism.
3.6.2, 3.6.2.2 - Malware and protectionMalware is hostile or intrusive software. Learn how viruses, trojans and spyware work, and how prevention, detection and maintenance reduce their different risks.
3.6.2 - Penetration testingPenetration testing examines whether a system's defences can be bypassed. Learn its purpose and compare an authorised test that simulates an insider with one that simulates an external attacker.
3.6.3 - Detecting and preventing security threatsSecurity measures protect different stages of using a system. Learn how passwords, biometrics, CAPTCHA, email confirmation and automatic updates work, then choose measures suited to a specific risk.
Relational databases and SQL
Relational data and written SQL
3.7.1 - Relational databases, tables and keysA database stores related information in a structure that can be searched and updated. Learn how tables, records, fields and keys connect data without repeatedly storing the same facts.
3.7.2 - SQL selection, filtering and orderingSQL retrieves information by naming the fields, table, conditions and ordering required. Work through a complete product table, then practise written queries and explore one query in a Python/SQLite Study demonstration.
3.7.2 - SQL retrieval from two related tablesRelated facts can be stored separately and brought together in a query. Use primary and foreign keys to match records, retrieve fields from two tables and avoid unrelated combinations.
3.7.2 - SQL insertion, update and deletionSQL can add records, change selected field values and remove selected records. Learn to match columns with values and to use precise conditions so a change affects the intended records.
Impacts of digital technology
Ethical, legal and environmental decisions
3.8 - Privacy, security and digital societyDigital technology changes what people can do and what others can know about them. Explain ethical, legal, environmental and privacy effects through affected groups, practical consequences and relevant tradeoffs.
3.8 - Mobile, wearable and implanted technologiesPortable and body-associated devices can improve access, safety and health while collecting sensitive data and creating dependence on reliable systems. Apply ethical, legal, environmental and privacy principles to each technology and its users.
3.8 - Autonomous vehicles and reasoned judgmentsAutonomous vehicles use computing systems to perform driving tasks. Explain their effects on people, responsibility, privacy and the environment, then use the evidence in a scenario to justify a decision.