Specification points
Edexcel International AS and A level Computer Science XCP01/YCP01
629 points in 4 topics, with Edexcel's codes and titles.
Codes and titles are read by a script from Edexcel's published specification and have not been checked by a person. What each point covers is in the specification itself: Edexcel’s specification.
U1 Principles of Computer Science
- 1 Computer systems
- 1.1 Computer architecture
- 1.1.1 Stored-program concept
- 1.1.2 von Neumann architecture
- 1.1.3 Internal components of a computer system
- 1.1.3.a Central processing unit (CPU)
- 1.1.3.b Memory
- 1.1.3.c Input/output
- 1.1.3.d Buses
- 1.1.4 Components of the CPU
- 1.1.4.a Control unit (CU)
- 1.1.4.b Arithmetic logic unit (ALU)
- 1.1.4.c General-purpose registers
- 1.1.4.d Special-purpose registers
- 1.1.4.e Clock
- 1.1.5 Fetch-decode-execute (FDE) cycle
- 1.1.5.a Stages
- 1.1.5.b Role of components
- 1.1.5.c Use of read/write control signals
- 1.1.6 Memory hierarchy
- 1.1.6.a CPU registers
- 1.1.6.b Cache
- 1.1.6.c Main memory
- 1.1.6.d Secondary storage
- 1.1.7 Data transmission
- 1.1.7.a Serial
- 1.1.7.b Parallel
- 1.2 The operating system (OS)
- 1.2.1 Role of the OS
- 1.2.1.a User interface
- 1.2.1.b User management
- 1.2.1.c Peripheral management
- 1.2.1.d Process management
- 1.2.1.e Memory management
- 1.2.2 Multitasking
- 1.2.2.a Time sharing
- 1.2.2.b Context switching
- 1.2.2.c Interrupt handling in multitasking
- 1.2.3 Process management
- 1.2.3.a Process
- 1.2.3.b Process states
- 1.2.3.c Scheduling
- 1.2.3.d Scheduling algorithms
- 1.2.4 Memory management
- 1.2.4.a Operations
- 1.2.4.b Allocation techniques
- 1.2.4.c Stack frame
- 2 Data representation
- 2.1 Numbers
- 2.1.1 Number bases
- 2.1.1.a Binary
- 2.1.1.b Denary
- 2.1.1.c Hexadecimal
- 2.1.2 Units of measurement
- 2.1.2.a Binary numbers
- 2.1.2.b IEC binary prefixes
- 2.1.2.c SI decimal prefixes
- 2.1.3 Two’s complement representation of signed numbers
- 2.1.4 Fixed-point representation of signed fractional numbers
- 2.2 Binary arithmetic
- 2.2.1 Addition and subtraction
- 2.2.2 Bitwise manipulation
- 2.2.2.a Logical shift
- 2.2.2.b Arithmetic shift
- 2.2.2.c Bit masks
- 2.2.3 Overflow and underflow
- 2.3 Text
- 2.3.1 Character encoding systems
- 2.3.1.a ASCII/extended ASCII
- 2.3.1.b UTF-8/Unicode
- 3 Networks and encryption
- 3.1 Network fundamentals
- 3.1.1 Network components
- 3.1.1.a Network interface card (NIC)
- 3.1.1.b Switch
- 3.1.1.c Home router
- 3.1.1.d Modem
- 3.1.1.e Wireless access point (WAP)
- 3.1.1.f Transmission media
- 3.1.1.g Firewall
- 3.1.2 Bandwidth, transfer rate, latency and range
- 3.1.2.a Bandwidth
- 3.1.2.b Speed/transfer rate
- 3.1.2.c Latency
- 3.1.2.d Range
- 3.1.3 Network addressing
- 3.1.3.a Internet protocol (IP)
- 3.1.3.b Media access control (MAC)
- 3.2 Encryption
- 3.2.1 Encryption fundamentals
- 3.2.2 Methods of encryption
- 3.2.2.a Symmetric
- 3.2.2.b Asymmetric
- 3.2.3 Monoalphabetic substitution cipher
- 3.2.4 Vernam cipher algorithm
- 4 Structuring data
- 4.1 Relational databases
- 4.1.1 Entity-relationship model (ERM)
- 4.1.1.a Entity
- 4.1.1.b Attribute
- 4.1.1.c Key
- 4.1.1.d Relationship cardinality
- 4.1.1.e Ways of representing
- 4.1.2 Logical schema
- 4.1.2.a Table/relation
- 4.1.2.b Column/attribute
- 4.1.2.c Row/tuple
- 4.1.2.d Data types
- 4.1.2.e Integrity constraints
- 4.2 Data structures
- 4.2.1 Data structures
- 4.2.1.a Array
- 4.2.1.b List
- 4.2.1.c Dictionary
- 4.2.1.d Record
- 4.2.1.e Tuple
- 4.2.1.f Set
- 4.3 Abstract data types (ADTs)
- 4.3.1 Stack
- 4.3.1.a Structure
- 4.3.1.b Operations
- 4.3.2 Queue
- 4.3.2.a Structure
- 4.3.2.b Operations
- 5 Problem solving
- 5.1 Tools and techniques
- 5.1.1 Algorithms
- 5.1.2 Trace table
- 5.1.3 Recursion
- 5.2 Searching and sorting algorithms
- 5.2.1 Linear search algorithm
- 5.2.1.a Unsorted array
- 5.2.1.b Sorted array
- 5.2.2 Binary search algorithm
- 5.2.2.a Iterative
- 5.2.2.b Recursive
- 5.2.3 Bubble sort algorithm
- 5.2.4 Insertion sort algorithm
- 5.3 Boolean logic
- 5.3.1 Boolean expressions
- 5.3.1.a Boolean operators
- 5.3.1.b Order of precedence
- 5.3.2 Truth table
- 5.4 Programming paradigms
- 5.4.1 Procedural programming paradigm
- 5.4.2 Declarative programming paradigm
- 6 Enabling technologies
- 6.1 Data science
- 6.1.1 Big data
- 6.1.1.a Five Vs (volume, velocity, variety, veracity, value)
- 6.1.1.b Infrastructure
- 6.1.2 Tools and techniques of data science
- 6.1.2.a Collection
- 6.1.2.b Storage
- 6.1.2.c Web scraping
- 6.1.2.d Cleaning
- 6.1.2.e Analysis
- 6.1.2.f Visualisation
- 6.2 Artificial intelligence (AI)
- 6.2.1 Categories of AI
- 6.2.1.a Narrow
- 6.2.1.b General
- 6.2.1.c Super
- 6.2.2 Machine learning (ML)
- 6.2.2.a Supervised
- 6.2.2.b Unsupervised
- 6.2.3 Large language model (LLM)
- 6.2.3.a Context and query accuracy
- 6.2.3.b Knowledge limitations
- 6.2.3.c Bias/subjectivity
- 6.3 Tools
- 6.3.1 Integrated development environment (IDE)
- 6.3.1.a Text editor
- 6.3.1.b Autocomplete
- 6.3.1.c Syntax checker
- 6.3.1.d Debugger
- 6.3.1.e Memory inspection
- 6.3.2 Version control system (VCS)
- 6.3.3 Open-source technologies
- 6.3.4 Application programming interface (API)
U2 Practical Programming and Problem-solving
- 7 Programming
- 7.1 Constructs
- 7.1.1 Flow control constructs
- 7.1.1.a Sequence
- 7.1.1.b Selection
- 7.1.1.c Count-controlled iteration
- 7.1.1.d Condition-controlled iteration
- 7.1.1.e Exception handling for built-in exceptions
- 7.1.2 Variables and constants
- 7.1.2.a Creation
- 7.1.2.b Assignment
- 7.1.2.c Access
- 7.1.3 Operators
- 7.1.3.a Arithmetic
- 7.1.3.b Relational
- 7.1.3.c Boolean
- 7.1.3.d Bitwise
- 7.1.4 Subprograms
- 7.1.4.a Parameter
- 7.1.4.b Argument
- 7.1.4.c Function
- 7.1.4.d Procedure
- 8 Organising and handling data
- 8.1 Data types and structures
- 8.1.1 Data types
- 8.1.1.a Integer
- 8.1.1.b Real
- 8.1.1.c Character
- 8.1.1.d Boolean
- 8.1.1.e String
- 8.1.2 Data structures
- 8.1.2.a Array
- 8.1.2.b List
- 8.1.2.c Dictionary
- 8.1.2.d Record
- 8.1.2.e Tuple
- 8.1.2.f Set
- 8.2 Data handling methods
- 8.2.1 Methods to handle numeric data
- 8.2.1.a Rounding
- 8.2.1.b Truncation
- 8.2.1.c Randomisation
- 8.2.1.d Data type conversions
- 8.2.2 Methods to handle string data
- 8.2.2.a Length
- 8.2.2.b Indexing
- 8.2.2.c Formatting
- 8.2.2.d Examining
- 8.2.2.e Manipulating
- 8.2.3 Methods to handle text files
- 8.2.3.a Open
- 8.2.3.b Reading from a file
- 8.2.3.c Writing to a file
- 8.2.3.d Appending to a file
- 8.2.3.e Close
- 8.2.4 Methods to handle data structures
- 8.2.4.a Create
- 8.2.4.b Insert
- 8.2.4.c Update
- 8.2.4.d Retrieve
- 8.2.4.e Delete
- 8.2.4.f Traverse
- 8.2.5 Methods to represent and handle a stack implemented as a fixed-length list
- 8.2.5.a Create
- 8.2.5.b Push
- 8.2.5.c Pop
- 8.2.5.d IsEmpty
- 8.2.5.e IsFull
- 8.2.5.f Size
- 8.2.6 Methods to represent and handle a queue implemented as a fixed-length list
- 8.2.6.a Create
- 8.2.6.b Enqueue
- 8.2.6.c Dequeue
- 8.2.6.d IsEmpty
- 8.2.6.e IsFull
- 8.2.6.f Size
- 8.2.7 Methods to handle a set
- 8.2.7.a Membership
- 8.2.7.b Union
- 8.2.7.c Intersection
- 8.2.7.d Difference
- 8.3 Relational databases
- 8.3.1 Methods to administer an SQLite database
- 8.3.2 Methods to manipulate data from an SQLite database
- 8.3.3 Methods to retrieve data from an SQLite database
- 8.3.4 Methods to filter and refine data retrieved from an SQLite database
- 9 Best practice
- 9.1 Program design
- 9.1.1 Methods to produce correct outcomes
- 9.1.1.a Problem decomposition into component parts
- 9.1.1.b Clear and appropriate logic
- 9.1.1.c Variables, constants, data types and data structures appropriate to the problem
- 9.1.1.d Programming constructs appropriate to the problem
- 9.1.2 Methods to implement good practice in program design
- 9.1.2.a Modularity
- 9.1.2.b Separation of concerns
- 9.1.2.c Minimisation of side effects
- 9.1.2.d Scope isolation
- 9.1.2.e Fitness for purpose of input and output
- 9.1.2.f Efficient solutions in terms of execution time and memory usage
- 9.1.3 Methods to implement modularity in source code
- 9.1.3.a Blocked code
- 9.1.3.b User-defined subprograms
- 9.1.3.c Built-in subprograms
- 9.1.3.d Libraries of subprograms
- 9.1.3.e Files
- 9.1.3.f Procedures
- 9.1.3.g Functions
- 9.2 Clean code
- 9.2.1 Consistency
- 9.2.1.a Use of white space
- 9.2.1.b Line breaks layout
- 9.2.1.c Naming conventions
- 9.2.1.d Fixed line length
- 9.2.2 Readability
- 9.2.2.a Meaningful identifiers
- 9.2.2.b Informative comments
- 9.2.2.c Named constants
- 9.2.2.d Subprograms
- 9.2.3 Methods to control the behaviour of program code
- 9.2.3.a Boundary value analysis
- 9.2.3.b Exception handling
- 9.2.3.c Minimising nested conditionals
- 9.2.3.d Minimising loops
- 9.2.3.e Using guard clauses
- 9.2.3.f Managed conversion of data types
- 9.3 Functionality
- 9.3.1 Ensuring code is fit for purpose
- 9.3.1.a Testing and debugging
- 9.3.1.b Reviewing and refining
- 10 Computational thinking and algorithms
- 10.1 Computational thinking
- 10.1.1 Abstraction
- 10.1.2 Decomposition
- 10.1.3 Pattern recognition
- 10.1.4 Generalisation
- 10.2 Implementing algorithms
- 10.2.1 Create programmed solutions from algorithms
- 10.2.1.a Expressed in words
- 10.2.1.b Expressed in diagrams
- 10.2.1.c Expressed in flowcharts
- 10.3 Search and sort algorithms
- 10.3.1 Linear search algorithm
- 10.3.1.a Worst-case on unsorted list
- 10.3.1.b Early exit when found on unsorted list
- 10.3.1.c Early exit when found on sorted list
- 10.3.1.d Early exit when not in list on sorted list
- 10.3.2 Binary search algorithm
- 10.3.2.a Iterative
- 10.3.2.b Recursive
- 10.3.3 Bubble sort algorithm
- 10.3.3.a Worst case
- 10.3.3.b Exit with no swaps
- 10.3.3.c Reduce upper bound on each pass
- 10.3.4 In-place insertion sort algorithm
- 10.4 Recursion
- 10.4.1 Recursive algorithms
U3 Advanced Principles of Computer Science
- 11 Computer systems and data representation
- 11.1 Computer architecture
- 11.1.1 Harvard architecture
- 11.1.1.a Memory structure
- 11.1.1.b Difference between Harvard and von Neumann architecture
- 11.1.2 Complex instruction set (CISC) and reduced instruction set computer (RISC)
- 11.1.2.a Architecture
- 11.1.2.b Difference between RISC and CISC
- 11.1.3 Five-stage instruction pipelining
- 11.1.3.a Stages
- 11.1.3.b Branch hazards
- 11.1.4 Parallel processing
- 11.1.4.a Multicore processors
- 11.1.4.b Graphic processing units (GPUs)
- 11.1.5 Embedded systems
- 11.1.5.a Hardware components
- 11.1.5.b Software components
- 11.2 The operating system
- 11.2.1 Input/output (I/O) device management
- 11.2.1.a Role of device drivers
- 11.2.1.b Basic I/O system (BIOS)
- 11.2.1.c Role of buffering
- 11.2.1.d Role of caching
- 11.2.1.e Interrupt handling in device management
- 11.2.2 Virtualisation
- 11.2.2.a Containerisation
- 11.2.2.b Virtual machines
- 11.3 Data representation
- 11.3.1 Floating-point representation (IEEE-754)
- 12 Networks and cybersecurity
- 12.1 Networking
- 12.1.1 Open systems interconnection (OSI) reference model
- 12.1.1.a Layers
- 12.1.1.b Encapsulation/decapsulation
- 12.1.2 Protocol stacks
- 12.1.2.a TCP/IP
- 12.1.2.b SSL/TLS
- 12.1.3 Packet switching
- 12.1.3.a Packet components
- 12.1.3.b Internet router
- 12.1.3.c Protocols
- 12.1.4 Domain name system (DNS)
- 12.2 The Internet of Things (IoT)
- 12.2.1 The IoT stack
- 12.2.1.a Device hardware
- 12.2.1.b Device software
- 12.2.1.c Connectivity
- 12.2.1.d Cloud platform
- 12.2.1.e Cloud applications
- 12.3 Cybersecurity
- 12.3.1 CIA triad model
- 12.3.2 RSA encryption algorithm
- 12.3.2.a Prime numbers
- 12.3.2.b Key exchange
- 12.3.2.c Vulnerabilities
- 12.3.3 Error detection
- 12.3.3.a Parity bit
- 12.3.3.b Two-dimensional parity block
- 12.3.3.c Checksum
- 12.4 Computing paradigms
- 12.4.1 Cloud computing
- 12.4.1.a Infrastructure
- 12.4.1.b Services
- 12.4.2 Edge computing
- 12.4.2.a Infrastructure
- 12.4.2.b Services
- 13 Programming languages
- 13.1 Types of programming languages
- 13.1.1 Object-oriented programming (OOP) paradigm
- 13.1.1.a Concepts
- 13.1.1.b Unified modelling language (UML) class diagrams
- 13.1.2 Functional programming paradigm
- 13.1.2.a Concepts
- 13.1.3 Assembly language
- 13.1.3.a Mnemonics
- 13.1.3.b Instructions
- 13.1.3.c Addressing modes
- 13.1.3.d Operations
- 13.1.3.e Comments
- 14 Structuring data
- 14.1 Abstract data types (ADTs)
- 14.1.1 Linked list
- 14.1.1.a Structure
- 14.1.1.b Ways to represent
- 14.1.1.c Operations
- 14.1.2 Hash table
- 14.1.2.a Structure
- 14.1.2.b Ways to represent
- 14.1.2.c Operations
- 14.1.3 Graph
- 14.1.3.a Structure
- 14.1.3.b Ways to represent
- 14.1.3.c Types
- 14.1.3.d Operations
- 14.1.4 Tree
- 14.1.4.a Structure
- 14.1.4.b Types
- 14.1.4.c Operations
- 14.1.5 Circular queue
- 14.1.5.a Structure
- 14.1.5.b Operations
- 15 Problem solving
- 15.1 Algorithm design
- 15.1.1 Problem-solving techniques
- 15.1.1.a Brute force/exhaustive
- 15.1.1.b Divide and conquer
- 15.1.1.c Greedy algorithms
- 15.1.1.d Heuristics
- 15.1.1.e Backtracking
- 15.1.1.f Recursion
- 15.1.1.g Tracing algorithms
- 15.2 Algorithms
- 15.2.1 Merge sort algorithm
- 15.2.2 Quick sort algorithm
- 15.2.3 Shortest path algorithms
- 15.2.3.a Dijkstra’s algorithm
- 15.2.3.b A* algorithm
- 15.3 Algorithmic efficiency
- 15.3.1 Big O notation
- 15.3.1.a Time complexity
- 15.4 Boolean logic
- 15.4.1 Boolean algebra
- 15.4.1.a Commutative
- 15.4.1.b Associative
- 15.4.1.c Absorption
- 15.4.1.d Distributive
- 15.4.1.e De Morgan’s
- 15.4.1.f Double negation
- 15.4.2 Karnaugh map
- 16 Emerging technologies and professional practice
- 16.1 Emerging technologies
- 16.1.1 Encryption
- 16.1.1.a Digital signatures and certificates
- 16.1.1.b Hash digest and use of public/private keys
- 16.1.2 Blockchain
- 16.1.3 Quantum computing
- 16.1.3.a Qubits
- 16.1.3.b Principles
- 16.1.3.c Threat
- 16.1.3.d Cryptography
- 16.1.4 Deep learning
- 16.1.4.a Neural networks
- 16.2 Professionalism
- 16.2.1 Responsible practice
- 16.2.1.a Ethical issues
- 16.2.1.b Legal frameworks
- 16.2.1.c Codes of conduct
U4 Advanced Practical Programming and Problem-solving
- 17 Programming
- 17.1 Fundamental concepts
- 17.1.1 Select and use appropriate operators and flow control constructs
- 17.1.2 Select and use appropriate data types, variables and constants
- 17.1.3 Select and use appropriate one- and two-dimensional data structures
- 17.2 Creating solutions
- 17.2.1 Using computational thinking techniques
- 17.2.2 Using IDEs and other tools
- 17.2.3 Using libraries, files, modules and subprograms
- 18 Representing and handling data
- 18.1 Data handling methods
- 18.1.1 Methods to handle floating-point data
- 18.1.1.a Decimal module
- 18.1.1.b Rounding
- 18.1.1.c Decimal class
- 18.1.1.d Data type conversions
- 18.1.1.e Exception handling
- 18.1.1.f Compare
- 18.1.2 Methods to handle regular expressions (re)
- 18.1.2.a Finding
- 18.1.2.b Validating
- 18.1.3 Methods to handle numerical arrays (NumPy)
- 18.1.3.a Array
- 18.1.3.b Arithmetic
- 18.1.3.c Rounding
- 18.1.3.d Shape
- 18.1.3.e Load and save text files
- 18.1.4 Methods to handle data analysis (Pandas)
- 18.1.4.a Load CSV
- 18.1.4.b Measures of central tendency
- 18.1.4.c Information about data
- 18.1.4.d Clean data
- 18.1.4.e Load and save text files
- 18.2 Methods to represent and handle ADTs
- 18.2.1 Circular queues as fixed-length lists
- 18.2.1.a Create
- 18.2.1.b Enqueue
- 18.2.1.c Dequeue
- 18.2.1.d IsEmpty
- 18.2.1.e IsFull
- 18.2.2 Methods to represent and handle a linked list
- 18.2.2.a Represent
- 18.2.2.b Handle
- 18.2.3 Methods to represent and handle a hash table
- 18.2.3.a Represent
- 18.2.3.b Handle
- 18.2.4 Hash algorithm
- 18.2.5 Methods to handle collisions in a hash table
- 18.2.5.a Separate chaining
- 18.2.5.b Linear probing
- 18.2.5.c Rehashing
- 18.2.6 Methods to represent a graph
- 18.2.6.a Adjacency matrix
- 18.2.6.b Adjacency list
- 18.2.7 Methods to represent and handle a binary search tree
- 18.2.7.a Represent
- 18.2.7.b Handle
- 18.2.8 Recursive tree traversal algorithms
- 18.2.8.a Pre-order traversal
- 18.2.8.b In-order traversal
- 18.2.8.c Post-order traversal
- 19 Best practice
- 19.1 Program design
- 19.1.1 Methods to produce correct outcomes
- 19.1.1.a Problem decomposition into component parts
- 19.1.1.b Clear and appropriate logic
- 19.1.1.c Variables, constants, data types and data structures appropriate to the problem
- 19.1.1.d Programming constructs appropriate to the problem
- 19.1.2 Methods to implement good practice in program design
- 19.1.2.a Modularity
- 19.1.2.b Separation of concerns
- 19.1.2.c Minimisation of side effects
- 19.1.2.d Scope isolation
- 19.1.2.e Fitness for purpose of input and output
- 19.1.2.f Efficient solutions in terms of execution time and memory usage
- 19.1.3 Methods to implement modularity in source code
- 19.1.3.a Blocked code
- 19.1.3.b User-defined subprograms
- 19.1.3.c Built-in subprograms
- 19.1.3.d Libraries of subprograms
- 19.1.3.e Files
- 19.1.3.f Procedures
- 19.1.3.g Functions
- 19.2 Clean code
- 19.2.1 Consistency
- 19.2.1.a Use of white space
- 19.2.1.b Line breaks layout
- 19.2.1.c Naming conventions
- 19.2.1.d Fixed-line length
- 19.2.2 Readability
- 19.2.2.a Meaningful identifiers
- 19.2.2.b Informative comments
- 19.2.2.c Named constants
- 19.2.2.d Subprograms
- 19.2.3 Methods to control behaviour of program code
- 19.2.3.a Boundary value analysis
- 19.2.3.b Exception handling
- 19.2.3.c Minimising nested conditionals
- 19.2.3.d Minimising loops
- 19.2.3.e Using guard clauses
- 19.2.3.f Managed conversion of data types
- 19.3 Functionality
- 19.3.1 Ensuring code is fit for purpose
- 19.3.1.a Testing and debugging
- 19.3.1.b Reviewing and refining
- 20 Additional programming paradigms
- 20.1 Object-oriented programming (OOP) and functional programming
- 20.1.1 Methods for object-oriented programming (OOP)
- 20.1.1.a Classes
- 20.1.1.b Attributes
- 20.1.1.c Methods
- 20.1.1.d Objects (instance)
- 20.1.1.e Encapsulation
- 20.1.1.f Getters
- 20.1.1.g Setters
- 20.1.1.h Aggregation
- 20.1.1.i Composition
- 20.1.1.j Inheritance
- 20.1.1.k Polymorphism
- 20.1.2 Methods for functional programming
- 20.1.2.a Pure functions
- 20.1.2.b First-class functions
- 20.1.2.c Higher-order functions
- 20.1.2.d Immutable variables
- 20.1.2.e Avoid side effects
- 20.1.2.f Lazy evaluation
- 20.1.2.g Lambda functions
- 20.1.2.h Recursion
- 20.1.2.i Map
- 20.1.2.j Filter
- 20.1.2.k Reduce
- 20.1.2.l List comprehension
- 20.1.2.m Dictionary comprehension
- 20.1.2.n Zip
- 21 Algorithms
- 21.1 Sorting algorithms
- 21.1.1 Recursive merge sort algorithm
- 21.1.2 Recursive quick sort algorithm
- 21.2 Shortest path and compression
- 21.2.1 Dijkstra’s shortest path algorithm
- 21.2.2 Run-length encoding compression algorithm