The whole course, area by area
All 77 units of OCR H446 in teaching order, across Paper 1, Paper 2 and the project. Open a unit to see what it asks you to do.
Computational thinking Paper 2 · Algorithms and programming · 1 of 4 taught
- Lesson
A tour of A-level Computer Science
- Integer arithmetic, negative values, powers of two and quotient/remainder
- Algebraic substitution, functions and explicit input/output contracts
- Sets, Boolean propositions and interpreting a small truth table
- Read tables, indexed positions and simple graphs; distinguish data from claims
- Explain a causal mechanism and compare the same feature on both sides
- 2.1.1(a), 2.1.1(b), 2.1.1(c), 2.1.1(d)Coming
Abstraction and model limits
- Explain abstraction as selection of relevant detail
- Justify why abstraction helps solve this problem
- Identify what an abstract model omits and how that limits its use
- Devise and validate an abstract model for a new situation
- 2.1.2(a), 2.1.2(b), 2.1.2(d)Coming
Inputs, outputs, preconditions and reusable components
- Specify inputs and outputs precisely
- State preconditions for a valid solution
- Specify a reusable component contract
- 2.1.3(a), 2.1.3(b), 2.1.3(c), 2.1.3(d), 2.2.2(a), 2.2.2(b), 2.2.2(c), 2.2.2(e)Coming
Decomposition and procedural planning
- Decompose a problem into meaningful parts
- Assign a solution responsibility to each part
- Order the required steps and identify dependencies
- Define subprocedures and their interfaces
- Decide whether a problem has computable inputs, rules and outputs
- Recognise the actual problem and distinguish symptoms from requirements
- Decompose and recombine a computational solution
- Use abstraction without discarding necessary constraints
Programming Paper 2 · Algorithms and programming · 5 of 8 taught
- 2.1.4(a), 2.1.4(b), 2.1.4(c)LessonPractice
Decisions and Boolean conditions
- Locate the decisions required in a solution
- Derive Boolean conditions including boundary cases
- Trace how decisions alter program flow
- 2.2.1(a), 1.2.3(c), 1.2.4(b)LessonPractice
Sequence, selection and iteration
- Trace and write sequence, selection and count/condition-controlled iteration
- Write and follow a solution algorithm before implementation
- Design a procedural solution with a clear control flow
- 1.4.1(a), 2.2.1(a), 1.4.2(a)LessonPractice
Types, strings, files and array indexing
- Choose integer, real, character, string or Boolean and explain the choice
- Process strings, arrays and files using appendix 5d conventions
- Trace 1D, 2D and 3D arrays, records, lists and tuples
- 2.2.1(c), 2.2.1(d)LessonPractice
Functions, procedures, scope and parameters
- Trace local and global scope and variable lifetime
- Use functions, procedures and modular contracts
- Trace parameter passing by value and by reference
- 2.2.1(e)Coming
Debugging in an IDE
- Use IDE breakpoints, stepping and watches to diagnose syntax, runtime and logic errors
- 2.2.1(b)LessonPractice
Recursion and iteration
- Trace recursive calls, base case and return values
- Compare a recursive solution with an iterative alternative
- 1.2.4(e), 2.2.1(f)Coming
Classes and objects
- Distinguish classes, objects, methods and attributes
- Implement classes, constructors, attributes and methods using object-oriented techniques
- 1.2.4(e), 2.2.1(f)Coming
Encapsulation, inheritance and polymorphism
- Use encapsulation, inheritance and polymorphism in an appropriate model
- Implement inheritance and encapsulation using object-oriented techniques
Data representation Paper 1 · Computer systems · 4 of 5 taught
- 1.4.1(b), 1.4.1(e), 1.4.1(f)LessonPractice
Unsigned binary, hexadecimal and denary
- Represent an unsigned integer at an explicit binary width
- Represent an unsigned integer in hexadecimal
- Convert binary, hexadecimal and denary without a calculator
- 1.4.1(c), 1.4.1(d)LessonPractice
Signed binary and integer arithmetic
- Encode and decode sign-and-magnitude and two's-complement integers
- Add and subtract binary integers and identify overflow
- 1.4.1(g)LessonPractice
Floating-point representation and normalisation
- Decode a binary mantissa/exponent format with explicit sign convention
- Normalise positive and negative binary floating-point values
- 1.4.1(h)Coming
Floating-point arithmetic and precision
- Align exponents and add or subtract positive and negative floating-point values
- Explain range, precision, rounding and overflow for a stated format
- 1.4.1(i), 1.4.1(j)LessonPractice
Shifts, masks and character sets
- Apply logical or arithmetic shifts as specified and interpret bit loss
- Apply AND, OR and XOR masks to set, clear, toggle or extract bits
- Explain ASCII and Unicode character encodings and character/code distinction
Boolean algebra and logic Paper 1 · Computer systems · 3 of 3 taught
- 1.4.3(a), 1.4.3(d)LessonPractice
Boolean expressions, truth tables and gates
- Translate a decision requirement into a Boolean expression
- Construct and check truth tables against logic-gate diagrams
- 1.4.3(b), 1.4.3(c)LessonPractice
Boolean laws and Karnaugh maps
- Simplify with a Karnaugh map using valid adjacency and wraparound
- Derive equivalent expressions using De Morgan, distribution, association, commutation and double negation
- 1.4.3(e)LessonPractice
Adders and D-type flip-flops
- Trace a D-type flip-flop and distinguish sequential from combinational logic
- Derive half-adder and full-adder sum and carry outputs
Processors, software and development Paper 1 · Computer systems
- 1.1.1(a), 1.1.1(b)Coming
CPU components, buses and fetch/decode/execute
- Explain ALU and control-unit roles and distinguish PC, ACC, MAR, MDR and CIR
- Trace data, address and control buses alongside an assembly instruction
- Trace register changes through fetch, decode and execute
- 1.1.1(c), 1.1.1(d), 1.1.1(e)Coming
Architecture, performance and processor pipelines
- Explain clock, cores and cache effects with workload limits
- Model a pipeline and explain throughput, latency and hazards
- Compare Von Neumann, Harvard and contemporary combined architectures
- 1.1.2(a), 1.1.2(b), 1.1.2(c)Coming
RISC, CISC, GPUs, multicore and parallel systems
- Choose RISC or CISC using instruction and implementation trade-offs
- Match a GPU to graphics and non-graphics parallel workloads
- Distinguish multicore hardware from parallel execution and justify a use
- 1.2.4(a), 1.2.4(c), 1.2.4(d)Coming
LMC tracing, programming and addressing
- Explain why different programming paradigms suit different tasks
- Trace an LMC program using memory, accumulator, branches and I/O
- Write and repair an LMC program with labelled data locations
- Resolve immediate, direct, indirect and indexed operands
- 1.1.3(a), 1.1.3(b), 1.1.3(c), 1.1.3(d)Coming
Input/output, storage, RAM, ROM and virtual storage
- Choose input and output devices and explain their use in the stated problem
- Compare magnetic, flash and optical storage against capacity, speed, cost and durability
- Distinguish RAM and ROM by role and persistence
- Explain virtual storage and distinguish it from virtual memory
- 1.2.1(a), 1.2.1(b), 1.2.1(f), 1.2.1(g)Coming
OS roles, memory, BIOS and drivers
- Explain OS responsibilities rather than naming a generic benefit
- Trace paging, segmentation and virtual-memory access
- Explain the BIOS role during startup
- Explain why an OS needs a device driver
- 1.2.1(c), 1.2.1(e)Coming
Interrupts and OS categories
- Trace interrupt detection, saved state, ISR execution and resumption
- Select distributed, embedded, multitasking, multi-user or real-time OS behaviour
- 1.2.1(d)Coming
Scheduling algorithms
- Trace round robin and first come first served with waiting-time consequences
- Trace shortest job first and shortest remaining time including pre-emption
- Explain priority movement and time slices in a multilevel feedback queue
- 1.2.1(h), 2.1.2(c)Coming
Virtual machines and caching
- Explain virtual hardware and intermediate-code virtual machines
- Evaluate caching using hit rate, stale data, memory and computation trade-offs
- 1.2.2(a), 1.2.2(b), 1.2.2(c)Coming
Applications, utilities and source/licence choices
- Justify an application category against a user requirement
- Match a utility to its precise maintenance or protection function
- Evaluate source-access, licence, support and modification trade-offs
- 1.2.2(d), 1.2.2(e), 1.2.2(f)Coming
Translators, compiler stages, linking and loading
- Compare compilation, interpretation and assembly
- Trace lexical analysis, syntax analysis, code generation and optimisation
- Explain linking, loading and the use of libraries
- 1.2.3(a), 1.2.3(b)Coming
Development methodologies
- Model waterfall, agile, extreme programming, spiral and rapid application development
- Choose a methodology using uncertainty, feedback, risk and delivery constraints
Exchanging data Paper 1 · Computer systems
- 1.3.1(a), 1.3.1(b)Coming
Compression: lossy, run length and dictionary coding
- Choose lossy or lossless compression for a stated fidelity requirement
- Encode and decode run-length data and calculate a size comparison
- Trace dictionary coding and distinguish dictionary entries from literals
- 1.3.1(c), 1.3.1(d)Coming
Encryption and hashing
- Explain symmetric and asymmetric key roles in a communication scenario
- Distinguish hashing uses for integrity, passwords and indexing from encryption
- 1.3.2(a)Coming
Relational modelling, keys, relationships and indexing
- Distinguish flat files, relational tables, records and fields
- Identify primary, foreign and secondary keys and explain an index
- Draw and interpret entity relationships and cardinalities
- 1.3.2(b), 1.3.2(c)Coming
Data capture and normalisation to 3NF
- Choose methods for capturing, selecting, managing and exchanging data
- Normalise to 1NF, 2NF and 3NF using keys and dependencies
- 1.3.2(d)Coming
SQL filters, wildcards and joins
- Interpret and modify SELECT, filters, wildcards and inner joins
- 1.3.2(d), 1.3.2(e)Coming
Nested SQL, data changes and referential integrity
- Interpret and modify nested SELECT, INSERT, DELETE and DROP in a disposable database
- Explain referential integrity and valid update/delete consequences
- 1.3.2(f)Coming
Transactions, ACID, locking and redundancy
- Apply ACID, record locking and redundancy to a transaction scenario
- 1.3.3(a), 1.3.3(d), 1.3.3(e)Coming
Network standards, hardware and client/server models
- Explain why compatible protocols and standards are needed
- Choose and explain network hardware roles
- Compare client-server and peer-to-peer against a scenario
- 1.3.3(b)Coming
TCP/IP, DNS, layering and switching
- Trace a message through TCP/IP layers and explain encapsulation
- Explain DNS resolution, internet structure, LAN and WAN
- Compare packet and circuit switching for a stated workload
- 1.3.3(c)Coming
Network threats and protections
- Explain specific network threats and how firewall, proxy and encryption mitigate them
- 1.3.4(a)Coming
HTML, CSS and JavaScript
- Read and modify the specified HTML elements and attributes
- Apply inline or external CSS with element, class and ID selectors
- Trace and write basic JavaScript that processes given input and changes output
- 1.3.4(b), 1.3.4(c), 1.3.4(d)Coming
Search indexing, PageRank and client/server processing
- Explain crawling and search-engine indexing
- Explain PageRank using inbound links and their relative importance
- Choose client-side or server-side processing using trust, speed and resource constraints
Data structures and algorithms Papers 1 and 2 · 3 of 11 taught
- 1.4.2(b), 1.4.2(c)Coming
Stacks, queues and linked lists
- Represent linked lists with links and a start pointer
- Represent stacks and queues using indices or links
- Create, traverse, insert into and delete from a linked list
- Implement stack push/pop and queue enqueue/dequeue with full and empty cases
- 1.4.2(b), 1.4.2(c)Coming
Graphs, trees, BSTs and hash tables
- Represent directed and undirected graphs and explain graph terminology
- Distinguish trees, binary search trees and hash tables
- Insert, find, traverse and remove values in a tree or binary search tree
- Insert, find and remove hash entries while resolving collisions
- Operate on graph representations and preserve edge direction
- 2.3.1(a), 2.3.1(b), 2.3.1(c), 2.3.1(d)Coming
Algorithm design, time/space and Big O
- Design and justify an algorithm for an unfamiliar specification
- Choose an algorithm by input conditions, time and memory
- Classify constant, logarithmic, linear, polynomial and exponential growth
- Measure operations and distinguish empirical timing from asymptotic complexity
- Compare complexities while stating input size and best/average/worst assumptions
- 2.3.1(e)Coming
Data-structure algorithms and tree traversals
- Design and trace stack, queue and linked-list algorithms
- Trace depth-first post-order and breadth-first tree traversal
- 2.3.1(f)LessonPractice
Linear and binary search
- Trace and implement binary search with sorted-input precondition
- Trace and implement linear search with found/not-found outcomes
- 2.3.1(f)LessonPractice
Bubble and insertion sort
- Trace and implement bubble sort with a justified stopping condition
- Trace and implement insertion sort including shift operations
- 2.3.1(f), 2.2.2(d)LessonPractice
Merge sort, quicksort and divide and conquer
- Trace and implement merge sort with split and merge stages
- Trace and implement quicksort with a stated partition/pivot convention
- Apply divide and conquer and explain recombination costs
- 2.3.1(f)Coming
Dijkstra and A*
- Trace Dijkstra using distance, predecessor and visited state
- Trace A* using g, h and f with an explicit tie-break rule
- 2.1.5(a), 2.1.5(b), 2.2.2(f)Coming
Concurrency and pipelining as computational methods
- Identify independent and dependent parts of a problem
- Evaluate time savings, coordination overhead and shared-state risks
- Apply pipelining to a process and distinguish latency from throughput
- 2.2.2(f)Coming
Backtracking, heuristics and computational method choice
- Trace backtracking choices, failure and reversal
- Use a heuristic and explain its quality/optimality limits
- 2.2.2(f)Coming
Data mining, performance modelling and visualisation
- Choose data mining for patterns rather than claiming causation
- Build and interpret a performance model with assumptions
- Choose a visualisation that exposes a relevant pattern or state
Law, ethics and society Paper 1 · Computer systems
- 1.5.1(a), 1.5.1(b), 1.5.1(c), 1.5.1(d)Coming
Computing legislation and exam/current-law distinction
- Apply the syllabus-named Data Protection Act 1998 principles to an exam scenario and label its historical status
- Apply Computer Misuse Act 1990 categories to a computing scenario
- Apply Copyright, Designs and Patents Act 1988 to software and digital content
- Explain the syllabus scope of Regulation of Investigatory Powers Act 2000
- 1.5.2: workforce, 1.5.2: decisions, 1.5.2: aiComing
Ethics: workforce, automated decisions and AI
- Evaluate workforce displacement, new roles and unequal impacts
- Evaluate automated decision making using fairness, responsibility and contestability
- Evaluate AI opportunities and risks in a concrete deployment
- 1.5.2: environment, 1.5.2: censorship, 1.5.2: monitoring, 1.5.2: personal-dataComing
Ethics: environment, censorship, monitoring and data
- Compare energy, materials, e-waste and lifecycle impacts
- Evaluate censorship and internet access from several stakeholder positions
- Evaluate monitoring of behaviour against privacy and safety
- Evaluate personal-information analysis, consent and potential harm
- 1.5.2: communications, 1.5.2: accessComing
Ethics: communications, culture and accessibility
- Distinguish piracy and offensive communications from adjacent legal and ethical issues
- Evaluate layout, colour conventions and character sets for cultural and accessible use
Programming project Component 03/04 · 20%
- 3.1.1(a), 3.1.1(b)Coming
NEA: Problem identification
- Justify computationally solvable features of the learner's own problem
- Explain why a computational solution suits that problem
- 3.1.2(a)Coming
NEA: Stakeholders
- Identify real stakeholder groups or personas and link needs to the proposed solution
- 3.1.3(a), 3.1.3(b), 3.1.3(c)Coming
NEA: Research the problem
- Compare relevant existing approaches and justify independent design decisions
- Explain which essential solution features follow from the research
- Explain limitations and their practical consequences
- 3.1.4(a), 3.1.4(b)Coming
NEA: Specify the proposed solution
- Justify functional and appropriate hardware/software requirements
- Write measurable success criteria traceable to stakeholder needs
- 3.2.1(a)Coming
NEA: Decompose the problem
- Justify a decomposition into implementable responsibilities
- 3.2.2(a), 3.2.2(b), 3.2.2(c), 3.2.2(d)Coming
NEA: Describe the solution
- Explain and justify complete solution structure
- Specify accurate algorithms and show how they form a complete solution
- Justify usable interaction and interface features
- Justify variables, structures, classes and validation
- 3.2.3(a)Coming
NEA: Describe the approach to testing
- Justify iterative and final test data including boundaries and invalid inputs
- 3.3.1(a), 3.3.1(b)Coming
NEA: Iterative development process
- Record each development stage with learner-authored evidence, review and justified decisions
- Retain prototype evidence and connect each change to a need or finding
- 3.3.2(a), 3.3.2(b)Coming
NEA: Testing to inform development
- Record predicted and observed test outcomes at each meaningful stage
- Document actual failed tests, repairs and retests with reasons
- 3.4.1(a), 3.4.1(b)Coming
NEA: Testing to inform evaluation
- Evidence final functional and robustness tests
- Evidence genuine usability tests and user feedback
- 3.4.2(a)Coming
NEA: Success of the solution
- Evaluate every success criterion against identified test evidence
- 3.4.3(a)Coming
NEA: Describe the final product
- Evaluate the effectiveness of evidenced usability features
- 3.4.4(a), 3.4.4(b)Coming
NEA: Maintenance and development
- Explain maintainability using concrete code and documentation evidence
- Propose justified further work for limitations or unmet criteria
Exam skills Papers 1 and 2
- 3hComing
Point answers, comparisons and trace repairs
- Meet the command word and every explicit prompt requirement
- Explain an accurate mechanism with linked cause and consequence
- Use the particular scenario constraints to support a claim
- Trace, test and justify a program independently of its surface syntax
- 3hComing
9-mark discussion workshop
- Meet the command word and every explicit prompt requirement
- Explain an accurate mechanism with linked cause and consequence
- Use the particular scenario constraints to support a claim
- Compare matching dimensions and develop trade-offs
- Justify a conclusion from the analysis when the task calls for it
- Communicate a coherent, relevant line of reasoning
- 3hComing
12-mark evaluation workshop
- Meet the command word and every explicit prompt requirement
- Explain an accurate mechanism with linked cause and consequence
- Use the particular scenario constraints to support a claim
- Compare matching dimensions and develop trade-offs
- Justify a conclusion from the analysis when the task calls for it
- Communicate a coherent, relevant line of reasoning
- 1.1.1(b), 1.1.1(c), 1.3.2(d), 1.4.1(h), 1.5.2: aiComing
Paper 1 timed integration
- Trace register changes through fetch, decode and execute
- Explain clock, cores and cache effects with workload limits
- Interpret and modify SELECT, filters, wildcards and inner joins
- Align exponents and add or subtract positive and negative floating-point values
- Explain range, precision, rounding and overflow for a stated format
- Evaluate AI opportunities and risks in a concrete deployment
- 2.2.1(a), 2.2.1(d), 2.2.1(f), 2.3.1(a), 2.3.1(b), 2.3.1(f)Coming
Paper 2 scenario integration
- Trace and write sequence, selection and count/condition-controlled iteration
- Process strings, arrays and files using appendix 5d conventions
- Use functions, procedures and modular contracts
- Trace parameter passing by value and by reference
- Implement classes, constructors, attributes and methods using object-oriented techniques
- Design and justify an algorithm for an unfamiliar specification
- Choose an algorithm by input conditions, time and memory
- Trace and implement binary search with sorted-input precondition