1. Fundamentals of programming1.1 Programming0/01.1.1 Data types and data structures1.1.2 Programming constructs and control flow1.1.3 Arithmetic, relational and Boolean operations1.1.4 Constants, variables, and scope1.1.5 String-handling operations1.1.6 Random number generation and exception handling1.1.7 Subroutines: Definition, Use, and Parameters1.2 Procedural-Oriented Programming0/01.2.1 The structured approach to programming1.2.2 Hierarchy charts in program design1.2.3 Advantages of the structured programming approach1. Fundamentals of programming1.1 Programming0/01.1.1 Data types and data structures1.1.2 Programming constructs and control flow1.1.3 Arithmetic, relational and Boolean operations1.1.4 Constants, variables, and scope1.1.5 String-handling operations1.1.6 Random number generation and exception handling1.1.7 Subroutines: Definition, Use, and Parameters1.2 Procedural-Oriented Programming0/01.2.1 The structured approach to programming1.2.2 Hierarchy charts in program design1.2.3 Advantages of the structured programming approach2. Fundamentals of Data StructuresPremium2.1 Data Structures and Abstract Data Types0/02.1.1 Introduction to data structures2.1.2 Arrays: single- and multi-dimensional2.1.3 Fields and records2.1.4 File handling: text and binary files2. Fundamentals of Data StructuresPremium2.1 Data Structures and Abstract Data Types0/02.1.1 Introduction to data structures2.1.2 Arrays: single- and multi-dimensional2.1.3 Fields and records2.1.4 File handling: text and binary files3. Systematic Approach to Problem SolvingPremium3.1 Aspects of Software Development0/03.1.1 Problem definition and analysis3.1.2 Design process and modular structure3.1.3 Implementation and code development3.1.4 Testing and validation3.1.5 Evaluation of solutions3. Systematic Approach to Problem SolvingPremium3.1 Aspects of Software Development0/03.1.1 Problem definition and analysis3.1.2 Design process and modular structure3.1.3 Implementation and code development3.1.4 Testing and validation3.1.5 Evaluation of solutions4. Theory of ComputationPremium4.1 Abstraction and Automation0/04.1.1 Problem-solving and logic4.1.2 Understanding and writing algorithms4.1.3 Representational and general abstraction4.1.4 Information hiding4.1.5 Procedural abstraction4.1.6 Functional abstraction4.1.7 Data abstraction4.1.8 Problem abstraction/reduction4.1.9 Decomposition4.1.10 Composition4.1.11 Automation and executable models4.2 Finite State Machines (FSMs)0/04.2.1 Introduction to finite state machines4.2.2 Drawing state transition diagrams4.2.3 Interpreting state transition diagrams4.2.4 Constructing and interpreting state transition tables4.2.5 Designing FSMs for simple problems4. Theory of ComputationPremium4.1 Abstraction and Automation0/04.1.1 Problem-solving and logic4.1.2 Understanding and writing algorithms4.1.3 Representational and general abstraction4.1.4 Information hiding4.1.5 Procedural abstraction4.1.6 Functional abstraction4.1.7 Data abstraction4.1.8 Problem abstraction/reduction4.1.9 Decomposition4.1.10 Composition4.1.11 Automation and executable models4.2 Finite State Machines (FSMs)0/04.2.1 Introduction to finite state machines4.2.2 Drawing state transition diagrams4.2.3 Interpreting state transition diagrams4.2.4 Constructing and interpreting state transition tables4.2.5 Designing FSMs for simple problems5. Fundamentals of Data RepresentationPremium5.1 Number Systems0/05.1.1 Natural numbers (ℕ)5.1.2 Integer numbers (ℤ)5.1.3 Rational numbers (ℚ)5.1.4 Irrational numbers5.1.5 Real numbers (ℝ)5.1.6 Ordinal numbers5.1.7 Counting and measurement5.2 Number Bases0/05.2.1 Understanding the concept of number bases5.2.2 Decimal (base 10) system5.2.3 Binary (base 2) system5.2.4 Hexadecimal (base 16) system5.2.5 Conversion between number bases5.3 Units of Information0/05.3.1 Bits and their role in information5.3.2 Bytes and bit groupings5.3.3 Bit combinations and representation capacity5.3.4 Binary prefixes (powers of 2)5.3.5 Decimal prefixes (powers of 10)5.3.6 Historical context and terminology conflicts document5.4 Binary Number System0/05.4.1 Understanding unsigned binary5.4.2 Arithmetic with unsigned binary5.4.3 Signed binary and two’s complement5.4.4 Fixed-point binary and fractional representation5.5 Information Coding Systems0/05.5.1 Character code vs binary representation5.5.2 ASCII and Unicode character sets5.5.3 Error detection and correction methods5.6 Representing Images, Sound, and Other Data0/05.6.1 Bit patterns and data representation5.6.2 Analogue vs digital data and signals5.6.3 Analogue to digital and digital to analogue conversion5.6.4 Bitmapped graphics representation5.6.5 Digital representation of sound5.6.6 MIDI (Musical Instrument Digital Interface)5.6.7 Data compression techniques5.6.8 Encryption principles and methods5. Fundamentals of Data RepresentationPremium5.1 Number Systems0/05.1.1 Natural numbers (ℕ)5.1.2 Integer numbers (ℤ)5.1.3 Rational numbers (ℚ)5.1.4 Irrational numbers5.1.5 Real numbers (ℝ)5.1.6 Ordinal numbers5.1.7 Counting and measurement5.2 Number Bases0/05.2.1 Understanding the concept of number bases5.2.2 Decimal (base 10) system5.2.3 Binary (base 2) system5.2.4 Hexadecimal (base 16) system5.2.5 Conversion between number bases5.3 Units of Information0/05.3.1 Bits and their role in information5.3.2 Bytes and bit groupings5.3.3 Bit combinations and representation capacity5.3.4 Binary prefixes (powers of 2)5.3.5 Decimal prefixes (powers of 10)5.3.6 Historical context and terminology conflicts document5.4 Binary Number System0/05.4.1 Understanding unsigned binary5.4.2 Arithmetic with unsigned binary5.4.3 Signed binary and two’s complement5.4.4 Fixed-point binary and fractional representation5.5 Information Coding Systems0/05.5.1 Character code vs binary representation5.5.2 ASCII and Unicode character sets5.5.3 Error detection and correction methods5.6 Representing Images, Sound, and Other Data0/05.6.1 Bit patterns and data representation5.6.2 Analogue vs digital data and signals5.6.3 Analogue to digital and digital to analogue conversion5.6.4 Bitmapped graphics representation5.6.5 Digital representation of sound5.6.6 MIDI (Musical Instrument Digital Interface)5.6.7 Data compression techniques5.6.8 Encryption principles and methods6. Fundamentals of Computer SystemsPremium6.1 Hardware and Software0/06.1.1 Understanding hardware and software6.1.2 Classification of software6.1.3 Types of system software6.1.4 Operating system and resource management6.2 Classification of Programming Languages0/06.2.1 Evolution and classification of programming languages6.2.2 Low-level languages: machine code6.2.3 Low-level languages: assembly language6.2.4 High-level languages and imperative paradigm6.2.5 Comparison: low-level vs high-level programming6.3 Types of Program Translator0/06.3.1 Role of an assembler6.3.2 Role of a compiler6.3.3 Role of an interpreter6.3.4 Compilation vs interpretation6.3.5 Intermediate code and bytecode6.3.6 Source code vs object code6.4 Logic Gates0/06.4.1 Logic gate types and symbols6.4.2 Constructing and interpreting logic gate circuits6.4.3 Boolean expressions and logic circuits6.4.4 Drawing circuits from Boolean expressions6.5 Boolean Algebra0/06.5.1 Boolean algebra fundamentals6.5.2 Boolean identities and simplification6.5.3 De Morgan’s laws6.5.4 Expression transformation and circuit simplification6. Fundamentals of Computer SystemsPremium6.1 Hardware and Software0/06.1.1 Understanding hardware and software6.1.2 Classification of software6.1.3 Types of system software6.1.4 Operating system and resource management6.2 Classification of Programming Languages0/06.2.1 Evolution and classification of programming languages6.2.2 Low-level languages: machine code6.2.3 Low-level languages: assembly language6.2.4 High-level languages and imperative paradigm6.2.5 Comparison: low-level vs high-level programming6.3 Types of Program Translator0/06.3.1 Role of an assembler6.3.2 Role of a compiler6.3.3 Role of an interpreter6.3.4 Compilation vs interpretation6.3.5 Intermediate code and bytecode6.3.6 Source code vs object code6.4 Logic Gates0/06.4.1 Logic gate types and symbols6.4.2 Constructing and interpreting logic gate circuits6.4.3 Boolean expressions and logic circuits6.4.4 Drawing circuits from Boolean expressions6.5 Boolean Algebra0/06.5.1 Boolean algebra fundamentals6.5.2 Boolean identities and simplification6.5.3 De Morgan’s laws6.5.4 Expression transformation and circuit simplification7. Fundamentals of Computer Organisation and ArchitecturePremium7.1 Internal Hardware Components of a Computer0/07.1.1 Overview of internal components7.1.2 Buses and system communication7.1.3 Von Neumann architecture7.1.4 Harvard architecture7.1.5 Addressable memory7.2 The Stored Program Concept0/07.2.1 Definition and purpose of the stored program concept7.2.2 Fetch–decode–execute cycle in context of stored program7.2.3 Advantages of the stored program concept7.2.4 Historical background and impact on modern systems7.3 Structure and Role of the Processor and Its Components0/07.3.1 The role of the processor and its components7.3.2 The Fetch–Decode–Execute (FDE) cycle7.3.3 Processor instruction set and opcodes7.3.4 Addressing modes7.3.5 Assembly language operations7.3.6 Factors affecting processor performance7.4 External Hardware Devices0/07.4.1 Barcode readers7.4.2 Digital cameras7.4.3 Laser printers7.4.4 RFID (Radio Frequency Identification)7.4.5 The need for secondary storage7.4.6 Hard disk drives (HDD)7.4.7 Optical disks7.4.8 Solid-state drives (SSD)7.4.9 Comparison of storage devices7. Fundamentals of Computer Organisation and ArchitecturePremium7.1 Internal Hardware Components of a Computer0/07.1.1 Overview of internal components7.1.2 Buses and system communication7.1.3 Von Neumann architecture7.1.4 Harvard architecture7.1.5 Addressable memory7.2 The Stored Program Concept0/07.2.1 Definition and purpose of the stored program concept7.2.2 Fetch–decode–execute cycle in context of stored program7.2.3 Advantages of the stored program concept7.2.4 Historical background and impact on modern systems7.3 Structure and Role of the Processor and Its Components0/07.3.1 The role of the processor and its components7.3.2 The Fetch–Decode–Execute (FDE) cycle7.3.3 Processor instruction set and opcodes7.3.4 Addressing modes7.3.5 Assembly language operations7.3.6 Factors affecting processor performance7.4 External Hardware Devices0/07.4.1 Barcode readers7.4.2 Digital cameras7.4.3 Laser printers7.4.4 RFID (Radio Frequency Identification)7.4.5 The need for secondary storage7.4.6 Hard disk drives (HDD)7.4.7 Optical disks7.4.8 Solid-state drives (SSD)7.4.9 Comparison of storage devices8. Consequences of Uses of ComputingPremium8.1 Individual (Moral), Social (Ethical), Legal and Cultural Issues and Opportunities0/08.1.1 Overview of moral, ethical, legal and cultural considerations8.1.2 Transformations in communication and information flow8.1.3 Risks and opportunities in computing8.1.4 The responsibility and power of computer scientists8.1.5 Ethics in algorithm design and deployment8.1.6 Scale and global impact8.1.7 Legislative challenges in the digital age8.1.8 Using hypotheticals and case studies8. Consequences of Uses of ComputingPremium8.1 Individual (Moral), Social (Ethical), Legal and Cultural Issues and Opportunities0/08.1.1 Overview of moral, ethical, legal and cultural considerations8.1.2 Transformations in communication and information flow8.1.3 Risks and opportunities in computing8.1.4 The responsibility and power of computer scientists8.1.5 Ethics in algorithm design and deployment8.1.6 Scale and global impact8.1.7 Legislative challenges in the digital age8.1.8 Using hypotheticals and case studies9. Fundamentals of Communication and NetworkingPremium9.1 Communication0/09.1.1 Serial and parallel transmission9.1.2 Synchronous vs asynchronous transmission9.1.3 Start and stop bits in asynchronous transmission9.1.4 Communication terminology: baud rate, bit rate, bandwidth, latency, protocol9.1.5 Relationship between bit rate and baud rate9.1.6 Relationship between bit rate and bandwidth9.2 Networking0/09.2.1 Physical and logical network topologies9.2.2 Peer-to-peer networking9.2.3 Client-server networking9.2.4 Purpose and components of WiFi networks9.2.5 Wireless network security9.2.6 CSMA/CA and RTS/CTS protocol9. Fundamentals of Communication and NetworkingPremium9.1 Communication0/09.1.1 Serial and parallel transmission9.1.2 Synchronous vs asynchronous transmission9.1.3 Start and stop bits in asynchronous transmission9.1.4 Communication terminology: baud rate, bit rate, bandwidth, latency, protocol9.1.5 Relationship between bit rate and baud rate9.1.6 Relationship between bit rate and bandwidth9.2 Networking0/09.2.1 Physical and logical network topologies9.2.2 Peer-to-peer networking9.2.3 Client-server networking9.2.4 Purpose and components of WiFi networks9.2.5 Wireless network security9.2.6 CSMA/CA and RTS/CTS protocol10. Fundamentals of Programming (A-Level Only)Premium10.1 Programming0/010.1.1 Built-in data types10.1.2 Core programming constructs10.1.3 Arithmetic operations10.1.4 Relational operations10.1.5 Boolean operations10.1.6 Variables vs constants10.1.7 String-handling operations10.1.8 Random number generation10.1.9 Exception handling10.1.10 Subroutines10.1.11 Parameters in subroutines10.1.12 Returning values from subroutines10.1.13 Local variables in subroutines10.1.14 Global variables10.1.15 Stack frames in subroutine calls10.1.16 Recursion10.2 Programming Paradigms0/010.2.1 Introduction to programming paradigms10.2.2 Structured programming principles10.2.3 Object-oriented programming foundations10.2.4 Inheritance, aggregation, and composition10.2.5 Polymorphism and method overriding10.2.6 Object-oriented design principles10.2.7 Practical implementation and class design10. Fundamentals of Programming (A-Level Only)Premium10.1 Programming0/010.1.1 Built-in data types10.1.2 Core programming constructs10.1.3 Arithmetic operations10.1.4 Relational operations10.1.5 Boolean operations10.1.6 Variables vs constants10.1.7 String-handling operations10.1.8 Random number generation10.1.9 Exception handling10.1.10 Subroutines10.1.11 Parameters in subroutines10.1.12 Returning values from subroutines10.1.13 Local variables in subroutines10.1.14 Global variables10.1.15 Stack frames in subroutine calls10.1.16 Recursion10.2 Programming Paradigms0/010.2.1 Introduction to programming paradigms10.2.2 Structured programming principles10.2.3 Object-oriented programming foundations10.2.4 Inheritance, aggregation, and composition10.2.5 Polymorphism and method overriding10.2.6 Object-oriented design principles10.2.7 Practical implementation and class design11. Fundamentals of Data Structures (A-level only)Premium11.1 Data Structures and Abstract Data Types0/011.1.1 Introduction to data structures11.1.2 Single-dimensional arrays11.1.3 Multi-dimensional arrays11.1.4 Records and fields11.1.5 Reading and writing text files11.1.6 Reading and writing binary files11.1.7 Introduction to abstract data types (ADTs)11.1.8 Using ADTs in code11.1.9 Static vs dynamic structures11.1.10 Queues: creation and maintenance11.1.11 Stacks: creation and maintenance11.1.12 Hash tables and dictionaries11.1.13 Trees and graphs11.2 Queues0/011.2.1 Linear queues11.2.2 Circular queues11.2.3 Priority queues11.2.4 Queue operations summary and comparison11.3 Stacks0/011.3.1 Concept of a stack (LIFO)11.3.2 Push operation11.3.3 Pop operation11.3.4 Peek/top operation11.3.5 Testing for empty/full stack11.3.6 Implementation and applications of stacks11.4 Graphs0/011.4.1 Introduction to graphs11.4.2 Types of graphs11.4.3 Components and terminology11.4.4 Adjacency matrix representation11.4.5 Adjacency list representation11.4.6 Comparison of adjacency matrix vs list11.5 Trees0/011.5.1 Introduction to trees11.5.2 Rooted trees and parent-child relationships11.5.3 Binary trees11.5.4 Binary search trees (BSTs)11.5.5 Applications of trees11.6 Hash Tables0/011.6.1 Concept of a hash table11.6.2 Hash functions and hashing algorithms11.6.3 Collisions and rehashing11.6.4 Applications and evaluation11.7 Dictionaries0/011.7.1 Concept and structure of a dictionary11.7.2 Dictionary operations11.7.3 Simple applications of dictionaries11.7.4 Implementation and usage in programming11.8 Vectors0/011.8.1 Definition and representation of vectors11.8.2 Representing vectors in programming languages11.8.3 Visualising vectors geometrically11.8.4 Vector operations: addition and scalar multiplication11.8.5 Convex combination of vectors11.8.6 Dot (scalar) product of vectors11.8.7 Applications of the dot product11. Fundamentals of Data Structures (A-level only)Premium11.1 Data Structures and Abstract Data Types0/011.1.1 Introduction to data structures11.1.2 Single-dimensional arrays11.1.3 Multi-dimensional arrays11.1.4 Records and fields11.1.5 Reading and writing text files11.1.6 Reading and writing binary files11.1.7 Introduction to abstract data types (ADTs)11.1.8 Using ADTs in code11.1.9 Static vs dynamic structures11.1.10 Queues: creation and maintenance11.1.11 Stacks: creation and maintenance11.1.12 Hash tables and dictionaries11.1.13 Trees and graphs11.2 Queues0/011.2.1 Linear queues11.2.2 Circular queues11.2.3 Priority queues11.2.4 Queue operations summary and comparison11.3 Stacks0/011.3.1 Concept of a stack (LIFO)11.3.2 Push operation11.3.3 Pop operation11.3.4 Peek/top operation11.3.5 Testing for empty/full stack11.3.6 Implementation and applications of stacks11.4 Graphs0/011.4.1 Introduction to graphs11.4.2 Types of graphs11.4.3 Components and terminology11.4.4 Adjacency matrix representation11.4.5 Adjacency list representation11.4.6 Comparison of adjacency matrix vs list11.5 Trees0/011.5.1 Introduction to trees11.5.2 Rooted trees and parent-child relationships11.5.3 Binary trees11.5.4 Binary search trees (BSTs)11.5.5 Applications of trees11.6 Hash Tables0/011.6.1 Concept of a hash table11.6.2 Hash functions and hashing algorithms11.6.3 Collisions and rehashing11.6.4 Applications and evaluation11.7 Dictionaries0/011.7.1 Concept and structure of a dictionary11.7.2 Dictionary operations11.7.3 Simple applications of dictionaries11.7.4 Implementation and usage in programming11.8 Vectors0/011.8.1 Definition and representation of vectors11.8.2 Representing vectors in programming languages11.8.3 Visualising vectors geometrically11.8.4 Vector operations: addition and scalar multiplication11.8.5 Convex combination of vectors11.8.6 Dot (scalar) product of vectors11.8.7 Applications of the dot product12. Fundamentals of Algorithms (A-level only)Premium12.1 Graph-Traversal0/012.1.1 Introduction to graph traversal12.1.2 Breadth-first search (BFS)12.1.3 Depth-first search (DFS)12.1.4 Comparing BFS and DFS12.2 Tree-Traversal0/012.2.1 Introduction to tree traversal12.2.2 Pre-order traversal12.2.3 In-order traversal12.2.4 Post-order traversal12.2.5 Comparing traversal methods and their uses12.3 Reverse Polish0/012.3.1 Introduction to Reverse Polish Notation (RPN)12.3.2 Converting infix to RPN12.3.3 Converting RPN to infix12.3.4 Uses and advantages of RPN12.3.5 Evaluating RPN expressions using a stack12.4 Searching Algorithms0/012.4.1 Linear Search12.4.2 Binary Search12.4.3 Binary Tree Search12.5 Sorting Algorithms0/012.5.1 Bubble Sort – Overview and concept12.5.2 Bubble Sort – Tracing and implementation12.5.3 Bubble Sort – Time complexity analysis12.5.4 Merge Sort – Overview and concept12.5.5 Merge Sort – Tracing and implementation12.5.6 Merge Sort – Time complexity analysis12.6 Optimisation Algorithms0/012.6.1 Introduction to optimisation problems12.6.2 Understanding Dijkstra’s algorithm12.6.3 Tracing Dijkstra’s algorithm step-by-step12.6.4 Applications of Dijkstra’s algorithm12. Fundamentals of Algorithms (A-level only)Premium12.1 Graph-Traversal0/012.1.1 Introduction to graph traversal12.1.2 Breadth-first search (BFS)12.1.3 Depth-first search (DFS)12.1.4 Comparing BFS and DFS12.2 Tree-Traversal0/012.2.1 Introduction to tree traversal12.2.2 Pre-order traversal12.2.3 In-order traversal12.2.4 Post-order traversal12.2.5 Comparing traversal methods and their uses12.3 Reverse Polish0/012.3.1 Introduction to Reverse Polish Notation (RPN)12.3.2 Converting infix to RPN12.3.3 Converting RPN to infix12.3.4 Uses and advantages of RPN12.3.5 Evaluating RPN expressions using a stack12.4 Searching Algorithms0/012.4.1 Linear Search12.4.2 Binary Search12.4.3 Binary Tree Search12.5 Sorting Algorithms0/012.5.1 Bubble Sort – Overview and concept12.5.2 Bubble Sort – Tracing and implementation12.5.3 Bubble Sort – Time complexity analysis12.5.4 Merge Sort – Overview and concept12.5.5 Merge Sort – Tracing and implementation12.5.6 Merge Sort – Time complexity analysis12.6 Optimisation Algorithms0/012.6.1 Introduction to optimisation problems12.6.2 Understanding Dijkstra’s algorithm12.6.3 Tracing Dijkstra’s algorithm step-by-step12.6.4 Applications of Dijkstra’s algorithm13. Theory of Computation (A-level only)Premium13.1 Abstraction and Automation0/013.1.1 Problem-solving13.1.2 Following and writing algorithms13.1.3 Abstraction13.1.4 Information hiding13.1.5 Procedural abstraction13.1.6 Functional abstraction13.1.7 Data abstraction13.1.8 Problem abstraction/reduction13.1.9 Decomposition13.1.10 Composition13.1.11 Automation13.2 Regular Languages0/013.2.1 FSMs with and without output13.2.2 Set theory foundations for regular expressions13.2.3 Regular expressions – syntax and usage13.2.4 FSMs and regular expressions – equivalence13.2.5 Regular language13.3 Context-free Languages0/013.3.1 Understanding context-free languages13.3.2 Introduction to Backus-Naur Form (BNF)13.3.3 Using BNF to define and parse syntax13.3.4 Understanding syntax diagrams13.3.5 Expressiveness of BNF vs regular expressions13.4 Classification of Algorithms0/013.4.1 Comparing algorithms13.4.2 Maths for understanding Big-O notation13.4.3 Order of complexity13.4.4 Limits of computation13.4.5 Classification of algorithmic problems13.4.6 Computable and non-computable problems13.4.7 Halting problem13.5 A Model of Computation0/013.5.1 Structure and concept of a Turing machine13.5.2 Representation of transition rules13.5.3 Hand-tracing simple Turing machines13.5.4 Importance of Turing machines in computation13. Theory of Computation (A-level only)Premium13.1 Abstraction and Automation0/013.1.1 Problem-solving13.1.2 Following and writing algorithms13.1.3 Abstraction13.1.4 Information hiding13.1.5 Procedural abstraction13.1.6 Functional abstraction13.1.7 Data abstraction13.1.8 Problem abstraction/reduction13.1.9 Decomposition13.1.10 Composition13.1.11 Automation13.2 Regular Languages0/013.2.1 FSMs with and without output13.2.2 Set theory foundations for regular expressions13.2.3 Regular expressions – syntax and usage13.2.4 FSMs and regular expressions – equivalence13.2.5 Regular language13.3 Context-free Languages0/013.3.1 Understanding context-free languages13.3.2 Introduction to Backus-Naur Form (BNF)13.3.3 Using BNF to define and parse syntax13.3.4 Understanding syntax diagrams13.3.5 Expressiveness of BNF vs regular expressions13.4 Classification of Algorithms0/013.4.1 Comparing algorithms13.4.2 Maths for understanding Big-O notation13.4.3 Order of complexity13.4.4 Limits of computation13.4.5 Classification of algorithmic problems13.4.6 Computable and non-computable problems13.4.7 Halting problem13.5 A Model of Computation0/013.5.1 Structure and concept of a Turing machine13.5.2 Representation of transition rules13.5.3 Hand-tracing simple Turing machines13.5.4 Importance of Turing machines in computation14. Fundamentals of Data Representation (A-level only)Premium14.1 Number Systems0/014.1.1 Natural numbers14.1.2 Integer numbers14.1.3 Rational numbers14.1.4 Irrational numbers14.1.5 Real numbers14.1.6 Ordinal numbers14.1.7 Counting and measurement14.2 Number Bases0/014.2.1 Understanding number bases14.2.2 Decimal (base 10)14.2.3 Binary (base 2)14.2.4 Hexadecimal (base 16)14.2.5 Converting between number bases14.2.6 Applications of hexadecimal14.3 Units of Information0/014.3.1 Bits and Binary Concepts14.3.2 Representing data with multiple bits14.3.3 Binary prefixes – powers of 214.3.4 Decimal prefixes – powers of 1014.3.5 Comparing binary and decimal units14.3.6 Historical context and standards14.4 Binary Number System0/014.4.1 Unsigned Binary Representation14.4.2 Unsigned Binary Arithmetic14.4.3 Signed Binary using Two’s Complement14.4.4 Numbers with a Fractional Part14.4.5 Rounding Errors14.4.6 Absolute and Relative Errors14.4.7 Range and Precision14.4.8 Normalisation of Floating Point Form14.4.9 Underflow and Overflow14.5 Information Coding Systems0/014.5.1 Character Form of a Decimal Digit14.5.2 ASCII and Unicode14.5.3 Error Checking and Correction14.6 Representing Images, Sound and Other Data0/014.6.1 Bit Patterns for Data14.6.2 Analogue vs Digital14.6.3 ADC and DAC14.6.4 Bitmapped Graphics14.6.5 Vector Graphics14.6.6 Bitmap vs Vector14.6.7 Digital Sound Representation14.6.8 MIDI14.6.9 Data Compression14.6.10 Encryption14. Fundamentals of Data Representation (A-level only)Premium14.1 Number Systems0/014.1.1 Natural numbers14.1.2 Integer numbers14.1.3 Rational numbers14.1.4 Irrational numbers14.1.5 Real numbers14.1.6 Ordinal numbers14.1.7 Counting and measurement14.2 Number Bases0/014.2.1 Understanding number bases14.2.2 Decimal (base 10)14.2.3 Binary (base 2)14.2.4 Hexadecimal (base 16)14.2.5 Converting between number bases14.2.6 Applications of hexadecimal14.3 Units of Information0/014.3.1 Bits and Binary Concepts14.3.2 Representing data with multiple bits14.3.3 Binary prefixes – powers of 214.3.4 Decimal prefixes – powers of 1014.3.5 Comparing binary and decimal units14.3.6 Historical context and standards14.4 Binary Number System0/014.4.1 Unsigned Binary Representation14.4.2 Unsigned Binary Arithmetic14.4.3 Signed Binary using Two’s Complement14.4.4 Numbers with a Fractional Part14.4.5 Rounding Errors14.4.6 Absolute and Relative Errors14.4.7 Range and Precision14.4.8 Normalisation of Floating Point Form14.4.9 Underflow and Overflow14.5 Information Coding Systems0/014.5.1 Character Form of a Decimal Digit14.5.2 ASCII and Unicode14.5.3 Error Checking and Correction14.6 Representing Images, Sound and Other Data0/014.6.1 Bit Patterns for Data14.6.2 Analogue vs Digital14.6.3 ADC and DAC14.6.4 Bitmapped Graphics14.6.5 Vector Graphics14.6.6 Bitmap vs Vector14.6.7 Digital Sound Representation14.6.8 MIDI14.6.9 Data Compression14.6.10 Encryption15. Fundamentals of Computer Systems (A-Level only)Premium15.1 Hardware and Software0/015.1.1 Definition and Relationship between Hardware and Software15.1.2 Classification of Software15.1.3 Types of System Software15.1.4 Role of the Operating System (OS)15.2 Classification of Programming Languages0/015.2.1 Historical Development and Classification15.2.2 Low-Level Languages: Machine Code15.2.3 Low-Level Languages: Assembly Language15.2.4 High-Level Languages15.2.5 Imperative High-Level Languages15.2.6 Comparison of Language Types15.3 Types of Program Translator0/015.3.1 Role of a Translator15.3.2 Assembler15.3.3 Compiler15.3.4 Interpreter15.3.5 Compilation vs Interpretation15.3.6 Intermediate Code and Bytecode15.3.7 Source Code vs Object Code15.4 Logic Gates0/015.4.1 Basic Logic Gates15.4.2 Logic Gate Circuits15.4.3 Boolean Expressions15.4.4 Gate Circuits from Boolean Expressions15.4.5 Adders (Half-Adder and Full-Adder)15.4.6 D-Type Flip-Flop15.5 Boolean Algebra0/015.5.1 Boolean Algebra Basics15.5.2 Boolean Identities15.5.3 De Morgan’s Laws15.5.4 Simplifying Boolean Expressions15.5.5 Applications of Simplification15. Fundamentals of Computer Systems (A-Level only)Premium15.1 Hardware and Software0/015.1.1 Definition and Relationship between Hardware and Software15.1.2 Classification of Software15.1.3 Types of System Software15.1.4 Role of the Operating System (OS)15.2 Classification of Programming Languages0/015.2.1 Historical Development and Classification15.2.2 Low-Level Languages: Machine Code15.2.3 Low-Level Languages: Assembly Language15.2.4 High-Level Languages15.2.5 Imperative High-Level Languages15.2.6 Comparison of Language Types15.3 Types of Program Translator0/015.3.1 Role of a Translator15.3.2 Assembler15.3.3 Compiler15.3.4 Interpreter15.3.5 Compilation vs Interpretation15.3.6 Intermediate Code and Bytecode15.3.7 Source Code vs Object Code15.4 Logic Gates0/015.4.1 Basic Logic Gates15.4.2 Logic Gate Circuits15.4.3 Boolean Expressions15.4.4 Gate Circuits from Boolean Expressions15.4.5 Adders (Half-Adder and Full-Adder)15.4.6 D-Type Flip-Flop15.5 Boolean Algebra0/015.5.1 Boolean Algebra Basics15.5.2 Boolean Identities15.5.3 De Morgan’s Laws15.5.4 Simplifying Boolean Expressions15.5.5 Applications of Simplification16. Fundamentals of Computer Organisation and Architecture (A-Level only)Premium16.1 Internal hardware components of a computer0/016.1.1 Overview of Internal Components16.1.2 The Processor (CPU)16.1.3 Main Memory16.1.4 Buses16.1.5 I/O Controllers16.1.6 Communication Between Components16.1.7 Von Neumann Architecture16.1.8 Harvard Architecture16.1.9 Von Neumann vs. Harvard Architecture16.1.10 Addressable Memory16.2 The stored program concept0/016.2.1 The Stored Program Concept – Definition16.2.2 Fetch-Execute Model16.2.3 Memory and Instruction Storage16.2.4 Role of the Processor16.2.5 Importance in Modern Computing16.2.6 Benefits and Implications16.3 Structure and Role of the Processor and Its Components0/016.3.1 Role of the Processor and Its Major Components16.3.2 The Fetch-Execute Cycle16.3.3 Instruction Set Architecture16.3.4 Addressing Modes16.3.5 Machine Code and Assembly Operations16.3.6 Interrupts16.3.7 Processor Performance Factors16.4 External Hardware Devices0/016.4.1 Input Devices – Characteristics and Operation16.4.2 Output Devices – Purposes and Suitability16.4.3 Need for Secondary Storage16.4.4 Secondary Storage Devices – Characteristics and Principles16.4.5 SSD Architecture – Technical Insights16.4.6 Media Comparison and Suitability16. Fundamentals of Computer Organisation and Architecture (A-Level only)Premium16.1 Internal hardware components of a computer0/016.1.1 Overview of Internal Components16.1.2 The Processor (CPU)16.1.3 Main Memory16.1.4 Buses16.1.5 I/O Controllers16.1.6 Communication Between Components16.1.7 Von Neumann Architecture16.1.8 Harvard Architecture16.1.9 Von Neumann vs. Harvard Architecture16.1.10 Addressable Memory16.2 The stored program concept0/016.2.1 The Stored Program Concept – Definition16.2.2 Fetch-Execute Model16.2.3 Memory and Instruction Storage16.2.4 Role of the Processor16.2.5 Importance in Modern Computing16.2.6 Benefits and Implications16.3 Structure and Role of the Processor and Its Components0/016.3.1 Role of the Processor and Its Major Components16.3.2 The Fetch-Execute Cycle16.3.3 Instruction Set Architecture16.3.4 Addressing Modes16.3.5 Machine Code and Assembly Operations16.3.6 Interrupts16.3.7 Processor Performance Factors16.4 External Hardware Devices0/016.4.1 Input Devices – Characteristics and Operation16.4.2 Output Devices – Purposes and Suitability16.4.3 Need for Secondary Storage16.4.4 Secondary Storage Devices – Characteristics and Principles16.4.5 SSD Architecture – Technical Insights16.4.6 Media Comparison and Suitability17. Consequences of Uses of Computing (A-Level only)Premium17.1 Individual (Moral), Social (Ethical), Legal and Cultural Issues and Opportunities0/017.1.1 Moral and Ethical Implications17.1.2 Social Impacts of Computing17.1.3 Legal Implications17.1.4 Cultural Considerations17.1.5 Personal Data and Behavioural Monitoring17.1.6 Dissemination and Communication of Information17.1.7 Power and Responsibility in Technology17.1.8 Scale of Impact17.1.9 Role of Legislators and Legal Systems17.1.10 Hypotheticals and Case Studies as Teaching Tools17.1.11 Student Analysis of Scenarios17. Consequences of Uses of Computing (A-Level only)Premium17.1 Individual (Moral), Social (Ethical), Legal and Cultural Issues and Opportunities0/017.1.1 Moral and Ethical Implications17.1.2 Social Impacts of Computing17.1.3 Legal Implications17.1.4 Cultural Considerations17.1.5 Personal Data and Behavioural Monitoring17.1.6 Dissemination and Communication of Information17.1.7 Power and Responsibility in Technology17.1.8 Scale of Impact17.1.9 Role of Legislators and Legal Systems17.1.10 Hypotheticals and Case Studies as Teaching Tools17.1.11 Student Analysis of Scenarios18. Fundamentals of Communication and Networking (A-Level only)Premium18.1 Communication0/018.1.1 Serial and Parallel Transmission18.1.2 Synchronous vs Asynchronous Transmission18.1.3 Start and Stop Bits18.1.4 Baud Rate18.1.5 Bit Rate18.1.6 Bandwidth18.1.7 Latency18.1.8 Protocol18.1.9 Relationship Between Bit Rate and Baud Rate18.1.9 Relationship Between Bit Rate and Baud Rate18.2 Networking0/018.2.1 Physical Star Topology18.2.2 Logical Bus Network Topology18.2.3 Peer-to-Peer Networking18.2.4 Client-Server Networking18.2.5 Purpose of WiFi18.2.6 Components of Wireless Networking18.2.7 Wireless Network Security18.2.8 CSMA/CA Protocol18.2.9 Service Set Identifier (SSID)18.3 The Internet0/018.3.1 Structure of the Internet18.3.2 Packet Switching and Routers18.3.3 Gateways18.3.4 Internet Routing18.3.5 URLs and FQDNs18.3.6 DNS and Domain Name Structure18.3.7 Internet Registries18.3.8 Firewalls and Internet Security18.3.9 Encryption and Key Exchange18.3.10 Digital Certificates and Signatures18.3.11 Malware: Worms, Trojans, and Viruses18.3.12 Prevention and Mitigation18.4 The Transmission Control Protocol/Internet Protocol (TCP/IP) protocol0/018.4.1 The TCP/IP stack and its layers18.4.2 Role of sockets in networking18.4.3 Media Access Control (MAC) addresses18.4.4 Well-known and client ports18.4.5 Common application layer protocols18.4.6 Web server and browser roles18.4.7 Structure of an IP address18.4.8 Subnet masking18.4.9 Public vs private IP addresses18.4.10 Dynamic Host Configuration Protocol (DHCP)18.4.11 Network Address Translation (NAT)18.4.12 Port forwarding document18.4.13 Client-server model18.4.14 WebSocket protocol18.4.15 Web CRUD and REST principles18.4.16 JSON vs XML18.4.17 Thin vs thick client computing18. Fundamentals of Communication and Networking (A-Level only)Premium18.1 Communication0/018.1.1 Serial and Parallel Transmission18.1.2 Synchronous vs Asynchronous Transmission18.1.3 Start and Stop Bits18.1.4 Baud Rate18.1.5 Bit Rate18.1.6 Bandwidth18.1.7 Latency18.1.8 Protocol18.1.9 Relationship Between Bit Rate and Baud Rate18.1.9 Relationship Between Bit Rate and Baud Rate18.2 Networking0/018.2.1 Physical Star Topology18.2.2 Logical Bus Network Topology18.2.3 Peer-to-Peer Networking18.2.4 Client-Server Networking18.2.5 Purpose of WiFi18.2.6 Components of Wireless Networking18.2.7 Wireless Network Security18.2.8 CSMA/CA Protocol18.2.9 Service Set Identifier (SSID)18.3 The Internet0/018.3.1 Structure of the Internet18.3.2 Packet Switching and Routers18.3.3 Gateways18.3.4 Internet Routing18.3.5 URLs and FQDNs18.3.6 DNS and Domain Name Structure18.3.7 Internet Registries18.3.8 Firewalls and Internet Security18.3.9 Encryption and Key Exchange18.3.10 Digital Certificates and Signatures18.3.11 Malware: Worms, Trojans, and Viruses18.3.12 Prevention and Mitigation18.4 The Transmission Control Protocol/Internet Protocol (TCP/IP) protocol0/018.4.1 The TCP/IP stack and its layers18.4.2 Role of sockets in networking18.4.3 Media Access Control (MAC) addresses18.4.4 Well-known and client ports18.4.5 Common application layer protocols18.4.6 Web server and browser roles18.4.7 Structure of an IP address18.4.8 Subnet masking18.4.9 Public vs private IP addresses18.4.10 Dynamic Host Configuration Protocol (DHCP)18.4.11 Network Address Translation (NAT)18.4.12 Port forwarding document18.4.13 Client-server model18.4.14 WebSocket protocol18.4.15 Web CRUD and REST principles18.4.16 JSON vs XML18.4.17 Thin vs thick client computing19. Fundamentals of databases (A-Level only)Premium19.1 Conceptual data models and entity relationship modelling0/019.1.1 Understanding entities and attributes19.1.2 Constructing entity relationship diagrams (ERDs)19.1.3 Developing data models from scenarios19.2 Relational Databases0/019.2.1 Concept and Structure of a Relational Database19.2.2 Attributes19.2.3 Primary Key and Composite Primary Key19.2.4 Foreign Key19.3 Database design and normalisation techniques0/019.3.1 Purpose and Concept of Normalisation19.3.2 Steps of Normalisation (1NF to 3NF)19.3.3 Application and Evaluation of Normalisation19.4 Structured Query Language (SQL)0/019.4.1 SQL Data Query Language (DQL) – Retrieval of Data19.4.2 SQL Data Manipulation Language (DML) – Modify Data19.4.3 SQL Data Definition Language (DDL) – Create Table Structure19.5 Client Server Databases0/019.5.1 Concept and Structure of Client-Server Databases19.5.2 The Need for and Challenges of Concurrent Access19.5.3 Concurrency Control Techniques19. Fundamentals of databases (A-Level only)Premium19.1 Conceptual data models and entity relationship modelling0/019.1.1 Understanding entities and attributes19.1.2 Constructing entity relationship diagrams (ERDs)19.1.3 Developing data models from scenarios19.2 Relational Databases0/019.2.1 Concept and Structure of a Relational Database19.2.2 Attributes19.2.3 Primary Key and Composite Primary Key19.2.4 Foreign Key19.3 Database design and normalisation techniques0/019.3.1 Purpose and Concept of Normalisation19.3.2 Steps of Normalisation (1NF to 3NF)19.3.3 Application and Evaluation of Normalisation19.4 Structured Query Language (SQL)0/019.4.1 SQL Data Query Language (DQL) – Retrieval of Data19.4.2 SQL Data Manipulation Language (DML) – Modify Data19.4.3 SQL Data Definition Language (DDL) – Create Table Structure19.5 Client Server Databases0/019.5.1 Concept and Structure of Client-Server Databases19.5.2 The Need for and Challenges of Concurrent Access19.5.3 Concurrency Control Techniques20. Big Data (A-Level only)Premium20.1 Big Data0/020.1.1 Definition and Characteristics of Big Data20.1.2 Machine Learning and Pattern Extraction20.1.3 Distributed Processing and Scalability20.1.4 Functional Programming for Big Data20.1.5 Graph Schema and Fact-Based Data Models20. Big Data (A-Level only)Premium20.1 Big Data0/020.1.1 Definition and Characteristics of Big Data20.1.2 Machine Learning and Pattern Extraction20.1.3 Distributed Processing and Scalability20.1.4 Functional Programming for Big Data20.1.5 Graph Schema and Fact-Based Data Models21. Fundamentals of Functional Programming (A-Level only)Premium21.1 Functional programming paradigm0/021.1.1 Function type and mathematical notation21.1.2 First-class objects21.1.3 Function application21.1.4 Partial function application21.1.5 Function composition21.2 Writing functional programs0/021.2.1 Constructing simple functional programs21.2.2 Higher-order functions21.2.3 Use of map, filter, reduce/fold21.3 Lists in functional programming0/021.3.1 Concept and structure of lists21.3.2 List operations and transformations21.3.3 Writing and testing list functions in a functional language21. Fundamentals of Functional Programming (A-Level only)Premium21.1 Functional programming paradigm0/021.1.1 Function type and mathematical notation21.1.2 First-class objects21.1.3 Function application21.1.4 Partial function application21.1.5 Function composition21.2 Writing functional programs0/021.2.1 Constructing simple functional programs21.2.2 Higher-order functions21.2.3 Use of map, filter, reduce/fold21.3 Lists in functional programming0/021.3.1 Concept and structure of lists21.3.2 List operations and transformations21.3.3 Writing and testing list functions in a functional language22. Systematic Approach to Problem Solving (A-Level only)Premium22.1 Aspects of Software Development0/022.1.1 Problem Analysis and Requirement Gathering22.1.2 Software Design Principles22.1.3 Implementation and Development22.1.4 Software Testing and Validation22.1.5 Evaluation of the Final System22. Systematic Approach to Problem Solving (A-Level only)Premium22.1 Aspects of Software Development0/022.1.1 Problem Analysis and Requirement Gathering22.1.2 Software Design Principles22.1.3 Implementation and Development22.1.4 Software Testing and Validation22.1.5 Evaluation of the Final System