1.1 The characteristics of contemporary processors, input, output and storage devices
1.1.1 Structure and function of the processor
1.1.2 Types of processor (CISC, RISC, GPUs)
1.1.3 Processor performance (clock speed, cache, cores, pipelining)
1.1.4 Input devices, output devices
1.1.5 Primary, secondary, and tertiary storage
1.2 Software and software development
1.2.1 Classification of software (system software, application software)
1.2.2 Types of software (bespoke, off-the-shelf, open source, closed source)
1.2.3 Software development methodologies (waterfall, agile, extreme programming, spiral, RAD)
1.2.4 Programming languages (low-level vs high-level) and their translators (assemblers, compilers, interpreters)
Note: At AS Level, the concept of translators is introduced but the detailed stages of compilation (1.2.5) and linker/loader processes (1.2.6) are not required.
1.3 Programming
1.3.1 Programming paradigms (procedural, object-oriented, event-driven, declarative)
1.3.4 Handling errors and exceptions
Note: AS Level requires knowledge of procedural programming concepts (1.3.2) and IDE features (1.3.5). Object-oriented specifics (1.3.3) go beyond AS requirements.
1.4 Exchanging data
1.4.1 Data transmission methods (client–server, peer-to-peer)
1.4.2 Network topologies (bus, star, mesh), protocols and layers
1.4.4 Compression, encryption, hashing
1.4.5 Databases and database concepts (relational databases, normalisation, SQL)
Note: AS Level does include networks, database basics, and key concepts like SQL. Detailed web technologies (1.4.3) and client/server-side scripting (1.4.6) are A Level only.
1.5 Data types, data structures and algorithms
1.5.1 Primitive data types (integer, real, Boolean, char, string)
1.5.2 Complex data types (records) and data structures (arrays, stacks, queues, linked lists, trees)
1.5.3 Operations on data structures (insertion, deletion, traversal)
1.5.4 Algorithm basics (searching and sorting: linear search, binary search, bubble sort, insertion sort, merge sort)
Note: All of 1.5 is also part of the AS specification (some structures, such as trees, are often introduced briefly at AS, but explored in more depth at A Level).
1.6 Legal, moral, cultural and ethical issues
1.6.1 Relevant legislation (Data Protection, Computer Misuse, Copyright, etc.)
1.6.2 Ethical and cultural implications (privacy, hacking, censorship, digital divide)
1.6.3 Environmental considerations (e-waste, power consumption)
1.6.4 Stakeholders and the wider impact of computing
2.1 Elements of computational thinking
2.1.1 Thinking abstractly (abstraction)
2.1.2 Thinking ahead (inputs, outputs, preconditions)
2.1.3 Thinking procedurally (decomposition)
2.1.4 Thinking logically (conditions, decisions)
2.1.5 Thinking concurrently (concurrency and parallelisation)
2.2 Problem solving and programming
2.2.1 Strategies for problem solving (top-down design, stepwise refinement)
2.2.2 Writing and following pseudocode and flowcharts
2.2.3 Programming best practices (naming conventions, commenting, modularity)
2.2.4 Testing (black box, white box, alpha, beta)
2.3 Algorithms
2.3.1 Analysis and design of algorithms
2.3.2 Standard algorithms (searching and sorting)
2.3.3 Algorithm efficiency (time complexity, space complexity)
2.3.4 Comparing and improving algorithms
Note: All of 2.3 is included in AS and A Level (though algorithm complexity is covered in less depth at AS).
1.1 The characteristics of contemporary processors, input, output and storage devices
1.1.1 Structure and function of the processor
1.1.2 Types of processor (CISC, RISC, GPUs)
1.1.3 Processor performance (clock speed, cache, cores, pipelining)
1.1.4 Input devices, output devices
1.1.5 Primary, secondary, and tertiary storage
1.2 Software and software development
1.2.1 Classification of software (system software, application software)
1.2.2 Types of software (bespoke, off-the-shelf, open source, closed source)
1.2.3 Software development methodologies (waterfall, agile, extreme programming, spiral, RAD)
1.2.4 Programming languages (low-level vs high-level) and their translators (assemblers, compilers, interpreters)
1.2.5 Stages of compilation (lexical analysis, syntax analysis, code generation, optimisation)
1.2.6 Linkers and loaders; use of libraries
1.3 Programming
1.3.1 Programming paradigms (procedural, object-oriented, event-driven, declarative)
1.3.2 Features of procedural languages (variables, data types, control structures)
1.3.3 Object-oriented concepts (classes, objects, inheritance, polymorphism, encapsulation)
1.3.4 Handling errors and exceptions
1.3.5 Use of IDE tools (debugging, stepping, breakpoints)
1.4 Exchanging data
1.4.1 Data transmission methods (client–server, peer-to-peer)
1.4.2 Network topologies (bus, star, mesh), protocols and layers
1.4.3 Web technologies (HTML, CSS, JavaScript)
1.4.4 Compression, encryption, hashing
1.4.5 Databases and database concepts (relational databases, normalisation, SQL)
1.4.6 Client-side and server-side processing
1.5 Data types, data structures and algorithms
1.5.1 Primitive data types (integer, real, Boolean, char, string)
1.5.2 Complex data types (records) and data structures (arrays, stacks, queues, linked lists, trees)
1.5.3 Operations on data structures (insertion, deletion, traversal)
1.5.4 Algorithm basics (searching and sorting: linear search, binary search, bubble sort, insertion sort, merge sort)
1.6 Legal, moral, cultural and ethical issues
1.6.1 Relevant legislation (Data Protection, Computer Misuse, Copyright, etc.)
1.6.2 Ethical and cultural implications (privacy, hacking, censorship, digital divide)
1.6.3 Environmental considerations (e-waste, power consumption)
1.6.4 Stakeholders and the wider impact of computing
2.1 Elements of computational thinking
2.1.1 Thinking abstractly (abstraction)
2.1.2 Thinking ahead (inputs, outputs, preconditions)
2.1.3 Thinking procedurally (decomposition)
2.1.4 Thinking logically (conditions, decisions)
2.1.5 Thinking concurrently (concurrency and parallelisation)
2.2 Problem solving and programming
2.2.1 Strategies for problem solving (top-down design, stepwise refinement)
2.2.2 Writing and following pseudocode and flowcharts
2.2.3 Programming best practices (naming conventions, commenting, modularity)
2.2.4 Testing (black box, white box, alpha, beta)
2.3 Algorithms
2.3.1 Analysis and design of algorithms
2.3.2 Standard algorithms (searching and sorting)
2.3.3 Algorithm efficiency (time complexity, space complexity)
2.3.4 Comparing and improving algorithms
2.4 Regular languages
2.4.1 Definitions of regular languages
2.4.2 Finite state machines (FSMs)
2.4.3 Regular expressions
2.5 Regular expressions, context-free languages and rewriting systems
2.5.1 Context-free languages (CFGs)
2.5.2 Backus–Naur Form (BNF), syntax diagrams
2.5.3 Parsing techniques
2.6 Turing machines
2.6.1 The concept of a Turing machine
2.6.2 Turing machine architecture (tape, head, states, transition function)
2.6.3 Universal Turing machines
3.1 Practical programming project
Identification of a problem, stakeholder analysis
Planning and designing a solution
Developing and testing the solution iteratively
Evaluating the solution against the requirements