1. Information Representation1.1 Data Representation0/01.1.1 Binary and Number Systems1.1.2 Binary Operations and Overflow1.1.3 Practical Applications1.2 Multimedia0/01.2.1 Bitmapped Graphics1.2.2 Vector Graphics1.2.3 Sound Representation1.3 Compression0/01.3.1 Need for and Use of Compression1.3.2 Lossy vs. Lossless Compression1.3.3 Compression Techniques1. Information Representation1.1 Data Representation0/01.1.1 Binary and Number Systems1.1.2 Binary Operations and Overflow1.1.3 Practical Applications1.2 Multimedia0/01.2.1 Bitmapped Graphics1.2.2 Vector Graphics1.2.3 Sound Representation1.3 Compression0/01.3.1 Need for and Use of Compression1.3.2 Lossy vs. Lossless Compression1.3.3 Compression Techniques2. Communication2.1 Networking Basics0/02.1.1 Purpose and Benefits of Networking2.1.2 LAN and WAN Characteristics2.2 Network Architectures0/02.2.1 Client-Server and Peer-to-Peer2.2.2 Thin-Client vs. Thick-Client2.3 Network Topologies and Design0/02.3.1 Network Topologies2.3.2 Choosing and Justifying Topologies2.4 Cloud Computing0/02.4.1 Essentials of Cloud Computing2.5 Network Infrastructure0/02.5.1 Wired vs. Wireless Networks2.5.2 LAN Hardware Support2.5.3 Router Functions2.6 Networking Protocols0/02.6.1 Ethernet and Traffic Management2.6.2 Bit Streaming and Broadband2.7 Internet and WWW0/02.7.1 WWW vs. Internet2.7.2 Internet Infrastructure2.7.3 IP Addressing and Data Transmission2.7.4 URL and DNS2. Communication2.1 Networking Basics0/02.1.1 Purpose and Benefits of Networking2.1.2 LAN and WAN Characteristics2.2 Network Architectures0/02.2.1 Client-Server and Peer-to-Peer2.2.2 Thin-Client vs. Thick-Client2.3 Network Topologies and Design0/02.3.1 Network Topologies2.3.2 Choosing and Justifying Topologies2.4 Cloud Computing0/02.4.1 Essentials of Cloud Computing2.5 Network Infrastructure0/02.5.1 Wired vs. Wireless Networks2.5.2 LAN Hardware Support2.5.3 Router Functions2.6 Networking Protocols0/02.6.1 Ethernet and Traffic Management2.6.2 Bit Streaming and Broadband2.7 Internet and WWW0/02.7.1 WWW vs. Internet2.7.2 Internet Infrastructure2.7.3 IP Addressing and Data Transmission2.7.4 URL and DNS3. Hardware3.1 Computers and their components0/03.1.1 Input, Output, and Storage3.1.2 Principal Operations of Hardware Devices3.1.3 Buffers and Memory Usage3.1.4 ROM Variants3.1.5 Monitoring and Control Systems 3.2 Logic Gates and Logic Circuits0/03.2.1 Logic Gate Symbols and Functions3.2.2 Truth Tables for Logic Gates3.2.3 Logic Circuit Construction3.2.4 Truth Table Construction3.2.5 Logic Expression Construction3. Hardware3.1 Computers and their components0/03.1.1 Input, Output, and Storage3.1.2 Principal Operations of Hardware Devices3.1.3 Buffers and Memory Usage3.1.4 ROM Variants3.1.5 Monitoring and Control Systems 3.2 Logic Gates and Logic Circuits0/03.2.1 Logic Gate Symbols and Functions3.2.2 Truth Tables for Logic Gates3.2.3 Logic Circuit Construction3.2.4 Truth Table Construction3.2.5 Logic Expression Construction4. Processor Fundamentals4.1 CPU Architecture0/04.1.1 Von Neumann Model and Stored Program Concept4.1.2 Role and Types of Registers4.1.3 CPU Components and Functions4.1.4 Data Transfer in the Computer System4.1.5 Factors Affecting System Performance4.1.6 Ports and Peripheral Connectivity4.1.7 Fetch-Execute Cycle4.1.8 Interrupts and Handling4.2 Assembly Language0/04.2.1 Assembly Language and Machine Code4.2.2 The Assembly Process4.2.3 Assembly Language Program Tracing4.2.4 Instruction Grouping4.2.5 Addressing Modes4.2.6 Assembly Language Instruction Set4.3 Bit Manipulation0/04.3.1 Binary Shifts4.3.2 Bit Manipulation for Device Control4.3.3 Bitwise Operations4.3.4 Shift Operations4.3.5 Instruction Set and Labels4. Processor Fundamentals4.1 CPU Architecture0/04.1.1 Von Neumann Model and Stored Program Concept4.1.2 Role and Types of Registers4.1.3 CPU Components and Functions4.1.4 Data Transfer in the Computer System4.1.5 Factors Affecting System Performance4.1.6 Ports and Peripheral Connectivity4.1.7 Fetch-Execute Cycle4.1.8 Interrupts and Handling4.2 Assembly Language0/04.2.1 Assembly Language and Machine Code4.2.2 The Assembly Process4.2.3 Assembly Language Program Tracing4.2.4 Instruction Grouping4.2.5 Addressing Modes4.2.6 Assembly Language Instruction Set4.3 Bit Manipulation0/04.3.1 Binary Shifts4.3.2 Bit Manipulation for Device Control4.3.3 Bitwise Operations4.3.4 Shift Operations4.3.5 Instruction Set and Labels5. System Software5.1 Operating Systems0/05.1.1 Purpose of Operating Systems5.1.4 Program Libraries5.2 Language Translators0/05.2.1 Need for Language Translators5.2.2 Compiler vs. Interpreter5.2.3 Integrated Development Environment (IDE) Features5. System Software5.1 Operating Systems0/05.1.1 Purpose of Operating Systems5.1.4 Program Libraries5.2 Language Translators0/05.2.1 Need for Language Translators5.2.2 Compiler vs. Interpreter5.2.3 Integrated Development Environment (IDE) Features6. Security, Privacy, and Data Integrity6.1 Data Security0/06.1.1 Security, Privacy, and Integrity6.1.2 Security Needs6.1.3 Security Measures for Computer Systems6.1.4 Threats from Networks and the Internet6.1.5 Risk Mitigation Methods6.1.6 Data Security Methods6.2 Data Integrity0/06.2.1 Data Validation and Verification6.2.2 Methods of Data Validation6.2.3 Methods of Data Verification6. Security, Privacy, and Data Integrity6.1 Data Security0/06.1.1 Security, Privacy, and Integrity6.1.2 Security Needs6.1.3 Security Measures for Computer Systems6.1.4 Threats from Networks and the Internet6.1.5 Risk Mitigation Methods6.1.6 Data Security Methods6.2 Data Integrity0/06.2.1 Data Validation and Verification6.2.2 Methods of Data Validation6.2.3 Methods of Data Verification7. Ethics and OwnershipPremium7.1 Ethics in Computing0/07.1.1 Professional Ethics7.1.2 Ethical Bodies and Membership7.1.3 Ethical Actions and Implications7.1.4 Copyright Legislation7.1.5 Software Licensing7.2 Artificial Intelligence0/07.2.1 Understanding AI7.2.2 Impact of AI7.2.3 Applications of AI7. Ethics and OwnershipPremium7.1 Ethics in Computing0/07.1.1 Professional Ethics7.1.2 Ethical Bodies and Membership7.1.3 Ethical Actions and Implications7.1.4 Copyright Legislation7.1.5 Software Licensing7.2 Artificial Intelligence0/07.2.1 Understanding AI7.2.2 Impact of AI7.2.3 Applications of AI8. DatabasesPremium8.1 Database Concepts0/08.1.1 Relational Databases vs. File-Based Systems8.1.2 Fundamentals of Relational Databases8.1.3 Normalization and Database Design8.2 Database Management Systems0/08.2.1 DBMS Features and Advantages8.2.2 Practical Use of DBMS Tools8.3 DDL and DML0/08.3.1 Role of DDL in DBMS8.3.2 Role of DML in DBMS8.3.3 Industry Standard SQL8.3.4 Writing SQL Statements8.3.5 SQL Script Creation8. DatabasesPremium8.1 Database Concepts0/08.1.1 Relational Databases vs. File-Based Systems8.1.2 Fundamentals of Relational Databases8.1.3 Normalization and Database Design8.2 Database Management Systems0/08.2.1 DBMS Features and Advantages8.2.2 Practical Use of DBMS Tools8.3 DDL and DML0/08.3.1 Role of DDL in DBMS8.3.2 Role of DML in DBMS8.3.3 Industry Standard SQL8.3.4 Writing SQL Statements8.3.5 SQL Script Creation9. Algorithm DesignPremium9.1 Computational Thinking Skills0/09.1.1 Understanding Abstraction9.1.2 Applying Abstraction9.1.3 Decomposition9.2 Algorithms0/09.2.1 Understanding Algorithms9.2.2 Identifier Names and Tables9.2.3 Writing Pseudocode9.2.4 Algorithm Documentation9.2.5 Stepwise Refinement9.2.6 Logic in Algorithms9. Algorithm DesignPremium9.1 Computational Thinking Skills0/09.1.1 Understanding Abstraction9.1.2 Applying Abstraction9.1.3 Decomposition9.2 Algorithms0/09.2.1 Understanding Algorithms9.2.2 Identifier Names and Tables9.2.3 Writing Pseudocode9.2.4 Algorithm Documentation9.2.5 Stepwise Refinement9.2.6 Logic in Algorithms10. Data Types and StructuresPremium10.1 Data Types and Records0/010.1.1 Appropriate Data Type Selection10.1.2 Understanding Record Structures10.1.3 Defining Record Structures in Pseudocode10.1.4 Manipulating Record Structures10.2 Arrays0/010.2.1 Array Terminology10.2.2 Choosing Data Structures10.2.3 Pseudocode for Arrays10.2.4 Processing Array Data10.3 Files0/010.3.1 Understanding Files10.3.2 File Handling in Pseudocode10.4 Abstract Data Types (ADT)0/010.4.1 Concept of ADT10.4.2 Common ADTs: Stack, Queue, Linked List10.4.3 Using ADTs for Data Storage10.4.4 Implementing ADTs with Arrays10. Data Types and StructuresPremium10.1 Data Types and Records0/010.1.1 Appropriate Data Type Selection10.1.2 Understanding Record Structures10.1.3 Defining Record Structures in Pseudocode10.1.4 Manipulating Record Structures10.2 Arrays0/010.2.1 Array Terminology10.2.2 Choosing Data Structures10.2.3 Pseudocode for Arrays10.2.4 Processing Array Data10.3 Files0/010.3.1 Understanding Files10.3.2 File Handling in Pseudocode10.4 Abstract Data Types (ADT)0/010.4.1 Concept of ADT10.4.2 Common ADTs: Stack, Queue, Linked List10.4.3 Using ADTs for Data Storage10.4.4 Implementing ADTs with Arrays11. ProgrammingPremium11.1 Programming Basics0/011.1.1 Translating Designs to Pseudocode11.1.2 Pseudocode for Data Handling11.1.3 Using Functions and Libraries11.1.4 String Manipulation11.2 Constructs0/011.2.1 Conditional Statements11.2.2 'CASE' Structure11.2.3 Loop Structures11.2.4 Loop Selection Justification11.3 Structured Programming0/011.3.1 Defining and Using Procedures11.3.2 Procedure Parameters11.3.3 Defining and Using Functions11.3.4 Terminology of Procedures and Functions11.3.5 Writing Efficient Pseudocode11. ProgrammingPremium11.1 Programming Basics0/011.1.1 Translating Designs to Pseudocode11.1.2 Pseudocode for Data Handling11.1.3 Using Functions and Libraries11.1.4 String Manipulation11.2 Constructs0/011.2.1 Conditional Statements11.2.2 'CASE' Structure11.2.3 Loop Structures11.2.4 Loop Selection Justification11.3 Structured Programming0/011.3.1 Defining and Using Procedures11.3.2 Procedure Parameters11.3.3 Defining and Using Functions11.3.4 Terminology of Procedures and Functions11.3.5 Writing Efficient Pseudocode12. Software DevelopmentPremium12.1 Program Development Life Cycle0/012.1.1 Purpose of Development Life Cycles12.1.2 Choosing a Development Life Cycle12.1.3 Life Cycle Methodologies12.1.4 Stages of Development12.2 Program Design0/012.2.1 Structure Charts12.2.2 Constructing Structure Charts12.2.3 Pseudocode from Structure Charts12.2.4 State-Transition Diagrams12.3 Program Testing and Maintenance0/012.3.1 Identifying and Correcting Errors12.3.2 Testing Methods and Data12.3.3 Test Strategies and Plans12.3.4 Maintenance Needs and Types12.3.5 Enhancing Program Functionality12. Software DevelopmentPremium12.1 Program Development Life Cycle0/012.1.1 Purpose of Development Life Cycles12.1.2 Choosing a Development Life Cycle12.1.3 Life Cycle Methodologies12.1.4 Stages of Development12.2 Program Design0/012.2.1 Structure Charts12.2.2 Constructing Structure Charts12.2.3 Pseudocode from Structure Charts12.2.4 State-Transition Diagrams12.3 Program Testing and Maintenance0/012.3.1 Identifying and Correcting Errors12.3.2 Testing Methods and Data12.3.3 Test Strategies and Plans12.3.4 Maintenance Needs and Types12.3.5 Enhancing Program Functionality13. Data Representation (A Level)13.1 User-defined Data Types0/013.1.1 Necessity of User-defined Types13.1.2 Non-composite User-defined Types13.1.3 Composite User-defined Types13.1.4 Designing User-defined Types13.2 File Organisation and Access0/013.2.1 Methods of File Organisation13.2.2 Methods of File Access13.2.3 Hashing Algorithms13.3 Floating-point Numbers, Representation and Manipulation0/013.3.1 Binary Floating-Point Format13.3.2 Bit Allocation Effects13.3.3 Conversion between Binary and Denary13.3.4 Normalisation of Floating-point Numbers13.3.5 Approximation and Consequences13.3.6 Underflow and Overflow13.3.7 Rounding Errors13. Data Representation (A Level)13.1 User-defined Data Types0/013.1.1 Necessity of User-defined Types13.1.2 Non-composite User-defined Types13.1.3 Composite User-defined Types13.1.4 Designing User-defined Types13.2 File Organisation and Access0/013.2.1 Methods of File Organisation13.2.2 Methods of File Access13.2.3 Hashing Algorithms13.3 Floating-point Numbers, Representation and Manipulation0/013.3.1 Binary Floating-Point Format13.3.2 Bit Allocation Effects13.3.3 Conversion between Binary and Denary13.3.4 Normalisation of Floating-point Numbers13.3.5 Approximation and Consequences13.3.6 Underflow and Overflow13.3.7 Rounding Errors14.Communication and Internet Technologies (A Level)14.1 Protocols0/014.1.1 The Necessity of Protocols14.1.2 Protocol Stacks14.1.3 TCP/IP Protocol Suite14.1.4 Specific Protocols and Purposes14.2 Circuit Switching and Packet Switching0/014.2.1 Understanding Circuit Switching14.2.2 Understanding Packet Switching14.2.3 Function of Routers14.2.4 Packet Switching in Networks14.Communication and Internet Technologies (A Level)14.1 Protocols0/014.1.1 The Necessity of Protocols14.1.2 Protocol Stacks14.1.3 TCP/IP Protocol Suite14.1.4 Specific Protocols and Purposes14.2 Circuit Switching and Packet Switching0/014.2.1 Understanding Circuit Switching14.2.2 Understanding Packet Switching14.2.3 Function of Routers14.2.4 Packet Switching in Networks15.Boolean Algebra and Logic Circuits (A Level)15.1 Processors, Parallel Processing and Virtual Machines0/015.1.1 RISC vs. CISC Processors5.1.2 OS Management Tasks5.1.3 Utility Software15.1.4 Computer Architectures15.1.5 Massively Parallel Computers15.1.6 Concept of Virtual Machines15.1.7 Benefits and Limitations of Virtual Machines15.2 Boolean Algebra and Logic Circuits0/015.2.1 Truth Tables for Logic Circuits15.2.2 Understanding Flip-Flops15.2.3 Boolean Algebra and De Morgan’s Laws15.2.4 Karnaugh Maps (K-map)15.Boolean Algebra and Logic Circuits (A Level)15.1 Processors, Parallel Processing and Virtual Machines0/015.1.1 RISC vs. CISC Processors5.1.2 OS Management Tasks5.1.3 Utility Software15.1.4 Computer Architectures15.1.5 Massively Parallel Computers15.1.6 Concept of Virtual Machines15.1.7 Benefits and Limitations of Virtual Machines15.2 Boolean Algebra and Logic Circuits0/015.2.1 Truth Tables for Logic Circuits15.2.2 Understanding Flip-Flops15.2.3 Boolean Algebra and De Morgan’s Laws15.2.4 Karnaugh Maps (K-map)16. System Software (A Level)16.1 Purposes of an Operating System0/016.1.1 Resource Optimization16.1.2 User Interface Simplification16.1.3 Process Management16.1.4 Memory Management16.2 Translation Software0/016.2.1 Interpreters16.2.2 Compilation Stages16.2.3 Language Grammar Representation16.2.4 Reverse Polish Notation (RPN)16. System Software (A Level)16.1 Purposes of an Operating System0/016.1.1 Resource Optimization16.1.2 User Interface Simplification16.1.3 Process Management16.1.4 Memory Management16.2 Translation Software0/016.2.1 Interpreters16.2.2 Compilation Stages16.2.3 Language Grammar Representation16.2.4 Reverse Polish Notation (RPN)17. Security (A Level)Premium17. 1 Encryption, Encryption Protocols and Digital Certificates0/017.1.1 Encryption Mechanisms17.1.2 Quantum Cryptography17.1.3 Secure Socket Layer (SSL)/Transport Layer Security (TLS)17.1.4 Digital Certificates and Signatures17. Security (A Level)Premium17. 1 Encryption, Encryption Protocols and Digital Certificates0/017.1.1 Encryption Mechanisms17.1.2 Quantum Cryptography17.1.3 Secure Socket Layer (SSL)/Transport Layer Security (TLS)17.1.4 Digital Certificates and Signatures18. Artificial Intelligence (AI) (A Level)Premium18.1 Artificial Intelligence0/018.1.1 Graphs in AI18.1.2 Artificial Neural Networks18.1.3 Deep Learning and Machine Learning18.1.4 Machine Learning Categories18.1.5 Learning Algorithms and Techniques18. Artificial Intelligence (AI) (A Level)Premium18.1 Artificial Intelligence0/018.1.1 Graphs in AI18.1.2 Artificial Neural Networks18.1.3 Deep Learning and Machine Learning18.1.4 Machine Learning Categories18.1.5 Learning Algorithms and Techniques19. Computational Thinking and Problem-solving (A Level)Premium19.1 Algorithms0/019.1.1 Searching Methods19.1.2 Sorting Methods19.1.3 Abstract Data Types (ADT)19.1.4 Graphs as an ADT19.1.5 Implementation of ADTs19.1.6 Algorithm Efficiency and Comparison19.2 Recursion0/019.2.1 Understanding Recursion19.2.2 Expressing Recursion in Programming19.2.3 Writing Recursive Algorithms19.2.4 Benefits of Recursion19.2.5 Compiling Recursive Code19. Computational Thinking and Problem-solving (A Level)Premium19.1 Algorithms0/019.1.1 Searching Methods19.1.2 Sorting Methods19.1.3 Abstract Data Types (ADT)19.1.4 Graphs as an ADT19.1.5 Implementation of ADTs19.1.6 Algorithm Efficiency and Comparison19.2 Recursion0/019.2.1 Understanding Recursion19.2.2 Expressing Recursion in Programming19.2.3 Writing Recursive Algorithms19.2.4 Benefits of Recursion19.2.5 Compiling Recursive Code20. Further Programming (A Level)Premium20.1 Programming Paradigms0/020.1.1 Understanding Programming Paradigms20.1.2 Low-level Paradigm20.1.3 Imperative (Procedural) Paradigm20.1.4 Object-Oriented Paradigm20.1.5 Declarative Paradigm20.2 File Processing and Exception Handling0/020.2.1 File-Processing Operations20.2.2 Understanding Exceptions20.2.3 When to Use Exception Handling20.2.4 Implementing Exception Handling20. Further Programming (A Level)Premium20.1 Programming Paradigms0/020.1.1 Understanding Programming Paradigms20.1.2 Low-level Paradigm20.1.3 Imperative (Procedural) Paradigm20.1.4 Object-Oriented Paradigm20.1.5 Declarative Paradigm20.2 File Processing and Exception Handling0/020.2.1 File-Processing Operations20.2.2 Understanding Exceptions20.2.3 When to Use Exception Handling20.2.4 Implementing Exception Handling