1. Systems Architecture 1.1 Architecture of the CPU0/01.1.1 The Purpose of the CPU1.1.2 The Fetch-Execute Cycle1.1.3 Common CPU Components1.1.4 Von Neumann Architecture1.2 CPU Performance0/01.2.1 Clock Speed1.2.2 Cache Size1.2.3 Number of Cores1.3 Embedded Systems0/01.3.1 Purpose and Characteristics of Embedded Systems1.3.2 Examples of Embedded Systems1. Systems Architecture 1.1 Architecture of the CPU0/01.1.1 The Purpose of the CPU1.1.2 The Fetch-Execute Cycle1.1.3 Common CPU Components1.1.4 Von Neumann Architecture1.2 CPU Performance0/01.2.1 Clock Speed1.2.2 Cache Size1.2.3 Number of Cores1.3 Embedded Systems0/01.3.1 Purpose and Characteristics of Embedded Systems1.3.2 Examples of Embedded Systems2. Memory and Storage2.1 Primary Storage (Memory)0/02.1.1 The Need for Primary Storage2.1.2 Difference Between RAM and ROM2.1.3 Purpose of ROM2.1.4 Purpose of RAM2.1.5 Virtual Memory2.2 Secondary Storage0/02.2.1 The Need for Secondary Storage2.2.2 Common Types of Storage2.2.3 Suitable Storage Devices and Media2.2.4 Advantages and Disadvantages of Storage Devices2.3 Units of Storage0/02.3.1 Units of Data Storage2.3.2 Binary Data Format2.3.3 Data Capacity and Calculations2.4 Data Storage0/02.4.1 Conversions Between Denary, Binary, and Hexadecimal2.4.2 Binary Arithmetic and Shifts2.4.3 Character Encoding2.4.4 Image Data Representation2.4.5 Sound Data Representation2.5 Compression0/02.5.1 The Need for Compression2.5.2 Types of Compression2.5.3 Effects of Compression on Files2. Memory and Storage2.1 Primary Storage (Memory)0/02.1.1 The Need for Primary Storage2.1.2 Difference Between RAM and ROM2.1.3 Purpose of ROM2.1.4 Purpose of RAM2.1.5 Virtual Memory2.2 Secondary Storage0/02.2.1 The Need for Secondary Storage2.2.2 Common Types of Storage2.2.3 Suitable Storage Devices and Media2.2.4 Advantages and Disadvantages of Storage Devices2.3 Units of Storage0/02.3.1 Units of Data Storage2.3.2 Binary Data Format2.3.3 Data Capacity and Calculations2.4 Data Storage0/02.4.1 Conversions Between Denary, Binary, and Hexadecimal2.4.2 Binary Arithmetic and Shifts2.4.3 Character Encoding2.4.4 Image Data Representation2.4.5 Sound Data Representation2.5 Compression0/02.5.1 The Need for Compression2.5.2 Types of Compression2.5.3 Effects of Compression on Files3. Computer Networks, Connections and Protocols Premium3.1 Networks and Topologies0/03.1.1 Types of Networks3.1.2 Network Performance Factors3.1.3 Network Hardware3.1.4 The Internet and DNS3.1.5 Network Services3.1.6 Network Topologies3.1.7 Application of Network Knowledge3.2 Wired and Wireless Networks, Protocols and Layers0/03.2.1 Modes of Connection3.2.2 Encryption and Security3.2.3 IP and MAC Addressing3.2.4 Standards and Protocols3.2.5 The Concept of Layers3. Computer Networks, Connections and Protocols Premium3.1 Networks and Topologies0/03.1.1 Types of Networks3.1.2 Network Performance Factors3.1.3 Network Hardware3.1.4 The Internet and DNS3.1.5 Network Services3.1.6 Network Topologies3.1.7 Application of Network Knowledge3.2 Wired and Wireless Networks, Protocols and Layers0/03.2.1 Modes of Connection3.2.2 Encryption and Security3.2.3 IP and MAC Addressing3.2.4 Standards and Protocols3.2.5 The Concept of Layers4. Network Security Premium4.1 Threats to Computer Systems and Networks0/04.1.1 Malware4.1.2 Social Engineering4.1.3 Brute-force Attacks4.1.4 Denial of Service Attacks4.1.5 Data Interception and Theft4.1.6 SQL Injection4.2 Identifying and Preventing Vulnerabilities0/04.2.1 Penetration Testing4.2.2 Anti-malware Software4.2.3 Firewalls4.2.4 User Access Levels4.2.5 Passwords4.2.6 Encryption4.2.7 Physical Security4. Network Security Premium4.1 Threats to Computer Systems and Networks0/04.1.1 Malware4.1.2 Social Engineering4.1.3 Brute-force Attacks4.1.4 Denial of Service Attacks4.1.5 Data Interception and Theft4.1.6 SQL Injection4.2 Identifying and Preventing Vulnerabilities0/04.2.1 Penetration Testing4.2.2 Anti-malware Software4.2.3 Firewalls4.2.4 User Access Levels4.2.5 Passwords4.2.6 Encryption4.2.7 Physical Security5. Systems SoftwarePremium5.1 Operating Systems0/05.1.1 Purpose and Functionality of Operating Systems5.1.2 User Interface5.1.3 Memory Management and Multitasking5.1.4 Peripheral Management and Drivers5.1.5 User Management5.1.6 File Management5.2 Utility Software0/05.2.1 Purpose and Functionality of Utility Software5.2.2 Encryption Software5.2.3 Defragmentation5.2.4 Data Compression Software5. Systems SoftwarePremium5.1 Operating Systems0/05.1.1 Purpose and Functionality of Operating Systems5.1.2 User Interface5.1.3 Memory Management and Multitasking5.1.4 Peripheral Management and Drivers5.1.5 User Management5.1.6 File Management5.2 Utility Software0/05.2.1 Purpose and Functionality of Utility Software5.2.2 Encryption Software5.2.3 Defragmentation5.2.4 Data Compression Software6. Ethical, Legal, Cultural and Environmental Impacts Premium6.1 Ethical, Legal, Cultural and Environmental Impact0/06.1.1 Impacts of Digital Technology on Society6.1.2 Legislation Relevant to Computer Science6.1.3 Software Licensing6. Ethical, Legal, Cultural and Environmental Impacts Premium6.1 Ethical, Legal, Cultural and Environmental Impact0/06.1.1 Impacts of Digital Technology on Society6.1.2 Legislation Relevant to Computer Science6.1.3 Software Licensing7. Algorithms Premium7.1 Computational Thinking0/07.1.1 Principles of Computational Thinking7.1.2 Abstraction7.1.3 Decomposition7.1.4 Algorithmic Thinking7.2 Designing, Creating and Refining Algorithms0/07.2.1 Identifying Inputs, Processes, and Outputs7.2.2 Using Structure Diagrams7.2.3 Algorithm Development Techniques7.2.4 Error Identification and Trace Tables7.2.5 Flowchart Symbols and Usage7.3 Searching and Sorting Algorithms0/07.3.1 Standard Searching Algorithms7.3.2 Standard Sorting Algorithms7.3.3 Applying Algorithms7.3.4 Algorithm Identification7. Algorithms Premium7.1 Computational Thinking0/07.1.1 Principles of Computational Thinking7.1.2 Abstraction7.1.3 Decomposition7.1.4 Algorithmic Thinking7.2 Designing, Creating and Refining Algorithms0/07.2.1 Identifying Inputs, Processes, and Outputs7.2.2 Using Structure Diagrams7.2.3 Algorithm Development Techniques7.2.4 Error Identification and Trace Tables7.2.5 Flowchart Symbols and Usage7.3 Searching and Sorting Algorithms0/07.3.1 Standard Searching Algorithms7.3.2 Standard Sorting Algorithms7.3.3 Applying Algorithms7.3.4 Algorithm Identification8. Programming Fundamentals Premium8.1 Programming Fundamentals0/08.1.1 Basics of Programming8.1.2 Programming Constructs8.1.3 Arithmetic and Boolean Operators8.1.4 Practical Application of Programming Techniques8.2 Data Types0/08.2.1 Introduction to Data Types8.2.2 Practical Use of Data Types8.2.3 Choosing Suitable Data Types8.2.4 Casting Between Data Types8.3 Additional Programming Techniques0/08.3.1 Basic String Manipulation8.3.2 Basic File Handling Operations8.3.3 Use of Records to Store Data8.3.4 Using SQL for Data Search8.3.5 Arrays and Their Applications8.3.6 Subprograms: Functions and Procedures8.3.7 Random Number Generation8. Programming Fundamentals Premium8.1 Programming Fundamentals0/08.1.1 Basics of Programming8.1.2 Programming Constructs8.1.3 Arithmetic and Boolean Operators8.1.4 Practical Application of Programming Techniques8.2 Data Types0/08.2.1 Introduction to Data Types8.2.2 Practical Use of Data Types8.2.3 Choosing Suitable Data Types8.2.4 Casting Between Data Types8.3 Additional Programming Techniques0/08.3.1 Basic String Manipulation8.3.2 Basic File Handling Operations8.3.3 Use of Records to Store Data8.3.4 Using SQL for Data Search8.3.5 Arrays and Their Applications8.3.6 Subprograms: Functions and Procedures8.3.7 Random Number Generation9. Producing Robust Programs Premium9.1 Defensive Design0/09.1.1 Defensive Design Considerations9.1.2 Input Validation9.1.3 Maintainability Techniques9.1.4 Applying Defensive Programming9.2 Testing0/09.2.1 The Purpose of Testing9.2.2 Types of Testing9.2.3 Identifying Syntax and Logic Errors9.2.4 Selecting and Using Test Data9.2.5 Refining Algorithms9. Producing Robust Programs Premium9.1 Defensive Design0/09.1.1 Defensive Design Considerations9.1.2 Input Validation9.1.3 Maintainability Techniques9.1.4 Applying Defensive Programming9.2 Testing0/09.2.1 The Purpose of Testing9.2.2 Types of Testing9.2.3 Identifying Syntax and Logic Errors9.2.4 Selecting and Using Test Data9.2.5 Refining Algorithms10. Boolean Logic Premium10.1 Boolean Logic0/010.1.1 Simple Logic Diagrams10.1.2 Truth Tables10.1.3 Combining Boolean Operators10.1.4 Applying Logical Operators to Solve Problems10. Boolean Logic Premium10.1 Boolean Logic0/010.1.1 Simple Logic Diagrams10.1.2 Truth Tables10.1.3 Combining Boolean Operators10.1.4 Applying Logical Operators to Solve Problems11. Programming Languages and Integrated Development Environments Premium11.1 Languages0/011.1.1 High-level vs Low-level Languages11.1.2 Purpose of Translators11.1.3 Compilers vs Interpreters11.2 The Integrated Development Environment (IDE)0/011.2.1 Common Tools in an IDE11.2.2 Editors11.2.3 Error Diagnostics11.2.4 Run-time Environment11.2.5 Translators11.2.6 Practical Experience with IDE Tools11. Programming Languages and Integrated Development Environments Premium11.1 Languages0/011.1.1 High-level vs Low-level Languages11.1.2 Purpose of Translators11.1.3 Compilers vs Interpreters11.2 The Integrated Development Environment (IDE)0/011.2.1 Common Tools in an IDE11.2.2 Editors11.2.3 Error Diagnostics11.2.4 Run-time Environment11.2.5 Translators11.2.6 Practical Experience with IDE Tools12. Practical Programming Skills Premium12.1 Programming Tasks0/012.1.1 Designing Software12.1.2 Writing Code12.1.3 Testing Software12.1.4 Refining and Debugging12.2 Language Selection0/012.2.1 Choosing a Programming Language12.2.2 Using Multiple Languages12. Practical Programming Skills Premium12.1 Programming Tasks0/012.1.1 Designing Software12.1.2 Writing Code12.1.3 Testing Software12.1.4 Refining and Debugging12.2 Language Selection0/012.2.1 Choosing a Programming Language12.2.2 Using Multiple Languages