Interactive scheme of work
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.10 5.11 5.12 5.13 5.14
4.1.1 Programming 
4.1.1.1 Data types 
Understand the concept of a data type. Understand and use the following appropriately: • integer • real/float • Boolean • character • string • date/time • pointer/reference • records (or equivalent) • arrays (or equivalent). 

Define and use userdefined data types based on languagedefined (builtin) data types. 

4.1.1.2 Programming concepts 
Use, understand and know how the following statement types can be combined in programs: • variable declaration • constant declaration • assignment • iteration • selection • subroutine (procedure/function). 

Use definite and indefinite iteration, including indefinite iteration with the condition(s) at the start or the end of the iterative structure. A theoretical understanding of condition(s) at either end of an iterative structure is required, regardless of whether they are supported by the language being used. 

Use nested selection and nested iteration structures. 

Use meaningful identifier names and know why it is important to use them. 

4.1.1.3 Arithmetic operations in a programming language 
Be familiar with and be able to use: • addition • subtraction • multiplication • real/float division • integer division, including remainders • exponentiation • rounding • truncation. 

4.1.1.4 Relational operations in a programming language 
Be familiar with and be able to use: • equal to • not equal to • less than • greater than • less than or equal to • greater than or equal to. 

4.1.1.5 Boolean operations in a programming language 
Be familiar with and be able to use: • NOT • AND • OR • XOR. 

4.1.1.6 Constants and variables in a programming language 
Be able to explain the differences between a variable and a constant. 

Be able to explain the advantages of using named constants. 

4.1.1.7 Stringhandling operations in a programming language 
Be familiar with and be able to use: • length • position • substring • concatenation • character → character code • character code → character • string conversion operations. 

4.1.1.8 Random number generation in a programming language 
Be familiar with, and be able to use, random number generation. 

4.1.1.9 Exception handling 
Be familiar with the concept of exception handling. 

Know how to use exception handling in a programming language with which students are familiar. 

4.1.1.10 Subroutines (procedures/functions) 
Be familiar with subroutines and their uses. 

Know that a subroutine is a named ‘out of line’ block of code that may be executed (called) by simply writing its name in a program statement. 

Be able to explain the advantages of using subroutines in programs. 

4.1.1.11 Parameters of subroutines 
Be able to describe the use of parameters to pass data within programs. 

Be able to use subroutines with interfaces. 

4.1.1.12 Returning a value/values from a subroutine 
Be able to use subroutines that return values to the calling routine. 

4.1.1.13 Local variables in subroutines 
Know that subroutines may declare their own variables, called local variables, and that local variables: • exist only while the subroutine is executing • are accessible only within the subroutine. 

Be able to use local variables and explain why it is good practice to do so. 

4.1.1.14 Global variables in a programming language 
Be able to contrast local variables with global variables. 

4.1.1.15 Role of stack frames in subroutine calls 
Be able to explain how a stack frame is used with subroutine calls to store: • return addresses • parameters • local variables. 

4.1.1.16 Recursive techniques 
Be familiar with the use of recursive techniques in programming languages (general and base cases and the mechanism for implementation). 

Be able to solve simple problems using recursion. 

4.1.2 Programming paradigms 
4.1.2.1 Programming paradigms 
Understand the characteristics of the procedural and objectoriented programming paradigms, and have experience of programming in each. 

4.1.2.2 Proceduraloriented programming 
Understand the structured approach to program design and construction. 

Be able to construct and use hierarchy charts when designing programs. 

Be able to explain the advantages of the structured approach. 

4.1.2.3 Objectoriented programming 
Be familiar with the concepts of: • class • object • instantiation • encapsulation • inheritance • aggregation • composition • polymorphism • overriding. 

Know why the objectoriented paradigm is used. 

Be aware of the following objectoriented design principles: • encapsulate what varies • favour composition over inheritance • program to interfaces, not implementation. 

Be able to write objectoriented programs 

Be able to draw and interpret class diagrams. 

4.2.1 Data structures and abstract data types 
4.2.1.1 Data structures 
Be familiar with the concept of data structures. I 

4.2.1.2 Single and multidimensional arrays 
Use arrays (or equivalent) in the design of solutions to simple problems. 

4.2.1.3 Fields, records and files 
Be able to read/write from/to a text file. 

Be able to read/write data from/to a binary (nontext) file. 

4.2.1.4 Abstract data types/data structures 
Be familiar with the concept and uses of a: • queue • stack • graph • tree • hash table • dictionary • vector. 

Be able to distinguish between static and dynamic structures and compare their uses, as well as explaining the advantages and disadvantages of each. 

Describe the creation and maintenance of data within: • queues (linear, circular, priority) • stacks • hash tables. 

4.2.2 Queues 
4.2.2.1 Queues 
Be able to describe and apply the following to linear queues, circular queues and priority queues: • add an item • remove an item • test for an empty queue • test for a full queue. 

4.2.3 Stacks 
4.2.3.1 Stacks 
Be able to describe and apply the following operations: • push • pop • peek or top • test for empty stack • test for stack full. 

4.2.4 Graphs 
4.2.4.1 Graphs 
Be aware of a graph as a data structure used to represent more complex relationships. 

Be familiar with typical uses for graphs. 

Be able to explain the terms: • graph • weighted graph • vertex/node • edge/arc • undirected graph • directed graph. 

Know how an adjacency matrix and an adjacency list may be used to represent a graph. 

Be able to compare the use of adjacency matrices and adjacency lists. 

4.2.5 Trees 
4.2.5.1 Trees (including binary trees) 
Know that a tree is a connected, undirected graph with no cycles. 

Know that a rooted tree is a tree in which one vertex has been designated as the root. A rooted tree has parentchild relationships between nodes. The root is the only node with no parent and all other nodes are descendants of the root. 

Know that a binary tree is a rooted tree in which each node has at most two children. 

Be familiar with typical uses for rooted trees. 

4.2.6 Hash tables 
4.2.6.1 Hash tables 
Be familiar with the concept of a hash table and its uses. 

Be able to apply simple hashing algorithms. 

Know what is meant by a collision and how collisions are handled using rehashing. 

4.2.7 Dictionaries 
4.2.7.1 Dictionaries 
Be familiar with the concept of a dictionary. 

Be familiar with simple applications of dictionaries, for example information retrieval, and have experience of using a dictionary data structure in a programming language. 

4.2.8 Vectors 
4.2.8.1 Vectors 
Be familiar with the concept of a vector and the following notations for specifying a vector: • [2.0, 3.14159, 1.0, 2.718281828] • 4vector over ℝ written as ℝ4 • function interpretation • 0 ↦ 2.0 • 1 ↦ 3.14159 • 2 ↦ 1.0 • 3 ↦ 2.718281828 • ↦ means maps to That all the entries must be drawn from the same field, eg ℝ. 

Dictionary representation of a vector. 

List representation of a vector. 

1D array representation of a vector 

Visualising a vector as an arrow. 

Vector addition and scalarvector multiplication. 

Convex combination of two vectors, u and v 

Dot or scalar product of two vectors. 

Applications of dot product. 

4.3.1 Graphtraversal 
4.3.1.1 Simple graphtraversal algorithms 
Be able to trace breadthfirst and depthfirst search algorithms and describe typical applications of both. 

4.3.2 Treetraversal 
4.3.2.1 Simple treetraversal algorithms 
Be able to trace the treetraversal algorithms: • preorder • postorder • inorder. 

Be able to describe uses of treetraversal algorithms. 

4.3.3 Reverse Polish 
4.3.3.1 Reverse Polish – infix transformations 
Be able to convert simple expressions in infix form to Reverse Polish notation (RPN) form and vice versa. Be aware of why and where it is used. 

4.3.4 Searching algorithms 
4.3.4.1 Linear search 
Know and be able to trace and analyse the complexity of the linear search algorithm. 

4.3.4.2 Binary search 
Know and be able to trace and analyse the time complexity of the binary search algorithm. 

4.3.4.3 Binary tree search 
Be able to trace and analyse the time complexity of the binary tree search algorithm. 

4.3.5 Sorting algorithms 
4.3.5.1 Bubble sort 
Know and be able to trace and analyse the time complexity of the bubble sort algorithm. 

4.3.5.2 Merge sort 
Be able to trace and analyse the time complexity of the merge sort algorithm. 

4.3.6 Optimisation algorithms 
4.3.6.1 Dijkstra’s shortest path algorithm 
Understand and be able to trace Dijkstra’s shortest path algorithm. 

Be aware of applications of shortest path algorithm. 

4.4.1 Abstraction and automation 
4.4.1.1 Problemsolving 
Be able to develop solutions to simple logic problems. 

Be able to check solutions to simple logic problems. 

4.4.1.2 Following and writing algorithms 
Understand the term algorithm. 

Be able to express the solution to a simple problem as an algorithm using pseudocode, with the standard constructs: • sequence • assignment • selection • iteration. 

Be able to handtrace algorithms 

Be able to convert an algorithm from pseudocode into high level language program code. 

Be able to articulate how a program works, arguing for its correctness and its efficiency using logical reasoning, test data and user feedback. 

4.4.1.3 Abstraction 
Be familiar with the concept of abstraction as used in computations and know that: • representational abstraction is a representation arrived at by removing unnecessary details • abstraction by generalisation or categorisation is a grouping by common characteristics to arrive at a hierarchical relationship of the 'is a kind of' type. 

4.4.1.4 Information hiding 
Be familiar with the process of hiding all details of an object that do not contribute to its essential characteristics 

4.4.1.5 Procedural abstraction 
Know that procedural abstraction represents a computational method. 

4.4.1.6 Functional abstraction 
Know that for functional abstraction the particular computation method is hidden. 

4.4.1.7 Data abstraction 
Know that details of how data are actually represented are hidden, allowing new kinds of data objects to be constructed from previously defined types of data objects. 

4.4.1.8 Problem abstraction/reduction 
Know that details are removed until the problem is represented in a way that is possible to solve, because the problem reduces to one that has already been solved. 

4.4.1.9 Decomposition 
Know that procedural decomposition means breaking a problem into a number of subproblems, so that each subproblem accomplishes an identifiable task, which might itself be further subdivided. 

4.4.1.10 Composition 
Know how to build a composition abstraction by combining procedures to form compound procedures. 

Know how to build data abstractions by combining data objects to form compound data, for example tree data structure. 

4.4.1.11 Automation 
Understand that automation requires putting models (abstraction of real world objects/ phenomena) into action to solve problems. This is achieved by: • creating algorithms • implementing the algorithms in program code (instructions) • implementing the models in data structures • executing the code. 

4.4.2 Regular languages 
4.4.2.1 Finite state machines (FSMs) with and without output 
Be able to draw and interpret simple state transition diagrams and state transition tables for FSMs with no output and with output (Mealy machines only). 

4.4.2.2 Maths for regular expressions 
Be familiar with the concept of a set and the following notations for specifying a set: A = {1, 2, 3, 4, 5 } or set comprehension: A = {x  x ∈ ℕ ∧ x ≥ 1 } where A is the set consisting of those objects x such that x ∈ ℕ and x ≥ 1 is true. Know that the empty set, {}, is the set with no elements. Know that an alternative symbol for the empty set is Ø. 

Be familiar with the compact representation of a set, for example, the set {0n1 n  n ≥ 1}. This set contains all strings with an equal number of 0 s and 1s 

Be familiar with the concept of: • finite sets • infinite sets • countably infinite sets • cardinality of a finite set • Cartesian product of sets. 

Be familiar with the meaning of the term: • subset • proper subset • countable set. 

Be familiar with the set operations: • membership • union • intersection • difference. 

4.4.2.3 Regular expressions 
Know that a regular expression is simply a way of describing a set and that regular expressions allow particular types of languages to be described in a convenient shorthand notation. 

Be able to form and use simple regular expressions for string manipulation and matching. 

Be able to describe the relationship between regular expressions and FSMs. 

Be able to write a regular expression to recognise the same language as a given FSM and vice versa. 

4.4.2.4 Regular language 
Know that a language is called regular if it can be represented by a regular expression. 

4.4.3 Contextfree languages 
4.4.3.1 BackusNaur Form (BNF)/syntax diagrams 
Be able to check language syntax by referring to BNF or syntax diagrams and formulate simple production rules. 

Be able to explain why BNF can represent some languages that cannot be represented using regular expressions. 

4.4.4 Classification of algorithms 
4.4.4.1 Comparing algorithms 
Understand that algorithms can be compared by expressing their complexity as a function relative to the size of the problem. Understand that the size of the problem is the key issue. 

Understand that some algorithms are more efficient: • timewise than other algorithms • spacewise than other algorithms 

4.4.4.2 Maths for understanding Big0 notation 
Be familiar with the mathematical concept of a function as a mapping from one set of values, the domain, to another set of values, drawn from the codomain, for example ℕ → ℕ. 

Be familiar with the concept of: • a linear function, for example y = 2x • a polynomial function, for example y = 2x2 • an exponential function, for example y = 2 x • a logarithmic function, for example y = log10 x. 

Be familiar with the notion of permutation of a set of objects or values, for example, the letters of a word and that the number of permutations of n distinct objects is n factorial (n!). 

4.4.4.3 Order of complexity 
Be familiar with BigO notation to express time complexity and be able to apply it to cases where the running time requirements of the algorithm grow in: • constant time • logarithmic time • linear time • polynomial time • exponential time. 

Be able to derive the time complexity of an algorithm. 

4.4.4.4 Limits of computation 
Be aware that algorithmic complexity and hardware impose limits on what can be computed. 

4.4.4.5 Classification of algorithmic problems 
Know that algorithms may be classified as being either: • tractable  problems that have a polynomial (or less) time solution are called tractable problems. • intractable  problems that have no polynomial (or less) time solution are called intractable problems. 

4.4.4.6 Computable and noncomputable problems 
Be aware that some problems cannot be solved algorithmically. 

4.4.4.7 Halting problem 
Describe the Halting problem (but not prove it), that is the unsolvable problem of determining whether any program will eventually stop if given particular input. 

Understand the significance of the Halting problem for computation. 

4.4.5 A model of computation 
4.4.5.1 Turing machine 
Be familiar with the structure and use of Turing machines that perform simple computations. 

Know that a Turing machine can be viewed as a computer with a single fixed program, expressed using: • a finite set of states in a state transition diagram • a finite alphabet of symbols • an infinite tape with markedoff squares • a sensing readwrite head that can travel along the tape, one square at a time. One of the states is called a start state and states that have no outgoing transitions are called halting states. 

Understand the equivalence between a transition function and a state transition diagram. 

Be able to: • represent transition rules using a transition function • represent transition rules using a state transition diagram • handtrace simple Turing machines. 

Be able to explain the importance of Turing machines and the Universal Turing machine to the subject of computation. 

4.5.1 Number systems 
4.5.1.1 Natural numbers 
Be familiar with the concept of a natural number and the set ℕ of natural numbers (including zero). 

4.5.1.2 Integer numbers 
Be familiar with the concept of an integer and the set ℤ of integers. 

4.5.1.3 Rational numbers 
Be familiar with the concept of a rational number and the set ℚ of rational numbers, and that this set includes the integers. 

4.5.1.4 Irrational numbers 
Be familiar with the concept of an irrational number. 

4.5.1.5 Real numbers 
Be familiar with the concept of a real number and the set ℝ of real numbers, which includes the natural numbers, the rational numbers and the irrational numbers. 

4.5.1.6 Ordinal numbers 
Be familiar with the concept of ordinal numbers and their use to describe the numerical positions of objects. 

4.5.1.7 Counting and measurement 
Be familiar with the use of: • natural numbers for counting • real numbers for measurement. 

4.5.2 Number bases 
4.5.2.1 Number base 
Be familiar with the concept of a number base, in particular: • decimal (base 10) • binary (base 2) • hexadecimal (base 16). 

Convert between decimal, binary and hexadecimal number bases. 

Be familiar with, and able to use, hexadecimal as a shorthand for binary and to understand why it is used in this way. 

4.5.3 Units of information 
4.5.3.1 Bits and bytes 
Know that: • the bit is the fundamental unit of information • a byte is a group of 8 bits. 

Know that the 2n different values can be represented with n bits. 

4.5.3.2 Units 
Know that quantities of bytes can be described using binary prefixes representing powers of 2 or using decimal prefixes representing powers of 10, eg one kibibyte is written as 1KiB = 210 B and one kilobyte is written as 1 kB = 103 B. Know the names, symbols and corresponding powers of 2 for the binary prefixes: • kibi, Ki  210 • mebi, Mi  220 • gibi, Gi  230 • tebi, Ti  240 Know the names, symbols and corresponding powers of 10 for the decimal prefixes: • kilo, k  103 • mega, M  106 • giga, G  109 • tera, T  1012 

4.5.4 Binary number system 
4.5.4.1 Unsigned binary 
Know the difference between unsigned binary and signed binary 

Know that in unsigned binary the minimum and maximum values for a given number of bits, n, are 0 and 2n 1 respectively. 

4.5.4.2 Unsigned binary arithmetic 
Be able to: • add two unsigned binary integers • multiply two unsigned binary integers. 

4.5.4.3 Signed binary using two’s complement 
Know that signed binary can be used to represent negative integers and that one possible coding scheme is two’s complement. 

Know how to: • represent negative and positive integers in two’s complement • perform subtraction using two’s complement • calculate the range of a given number of bits, n. 

4.5.4.4 Numbers with a fractional part 
Know how numbers with a fractional part can be represented in: • fixed point form in binary in a given number of bits • floating point form in binary in a given number of bits. 

Be able to convert for each representation from: • decimal to binary of a given number of bits • binary to decimal of a given number of bits. 

4.5.4.5 Rounding errors 
Know and be able to explain why both fixed point and floating point representation of decimal numbers may be inaccurate. 

4.5.4.6 Absolute and relative errors 
Be able to calculate the absolute error of numerical data stored and processed in computer systems. 

Be able to calculate the relative error of numerical data stored and processed in computer systems. 

Compare absolute and relative errors for large and small magnitude numbers, and numbers close to one. 

4.5.4.7 Range and precision 
Compare the advantages and disadvantages of fixed point and floating point forms in terms of range, precision and speed of calculation. 

4.5.4.8 Normalisation of floating point form 
Know why floating point numbers are normalised and be able to normalise unnormalised floating point numbers with positive or negative mantissas. 

4.5.4.9 Underflow and overflow 
Explain underflow and overflow and describe the circumstances in which they occur. 

4.5.5 Information coding systems 
4.5.5.1 Character form of a decimal digit 
Differentiate between the character code representation of a decimal digit and its pure binary representation. 

4.5.5.2 ASCII and Unicode 
4.5.5.2 ASCII and Unicode 

4.5.5.3 Error checking and correction 
Describe and explain the use of: • parity bits • majority voting • checksums • check digits. 

4.5.6 Representing images, sound and other data 
4.5.6.1 Bit patterns, images, sound and other data 
Describe how bit patterns may represent other forms of data, including graphics and sound. 

4.5.6.2 Analogue and digital 
Understand the difference between analogue and digital: • data • signals. 

4.5.6.3 Analogue/digital conversion 
Describe the principles of operation of: • an analogue to digital converter (ADC) • a digital to analogue converter (DAC). 

Know that ADCs are used with analogue sensors. 

Know that the most common use for a DAC is to convert a digital audio signal to an analogue signal. 

4.5.6.4 Bitmapped graphics 
Explain how bitmaps are represented 

Explain the following for bitmaps: • resolution • colour depth • size in pixels. 

Calculate storage requirements for bitmapped images and be aware that bitmap image files may also contain metadata. 

Be familiar with typical metadata. e 

4.5.6.5 Vector graphics 
Explain how vector graphics represents images using lists of objects. 

Give examples of typical properties of objects. 

Use vector graphic primitives to create a simple vector graphic 

4.5.6.6 Vector graphics versus bitmapped graphics 
Compare the vector graphics approach with the bitmapped graphics approach and understand the advantages and disadvantages of each. 

Be aware of appropriate uses of each approach. 

4.5.6.7 Digital representation of sound 
Describe the digital representation of sound in terms of: • sample resolution • sampling rate and the Nyquist theorem. 

4.5.6.8 Musical Instrument Digital Interface (MIDI) 
Describe the purpose of MIDI and the use of event messages in MIDI. 

Describe the advantages of using MIDI files for representing music. 

4.5.6.9 Data compression 
Know why images and sound files are often compressed and that other files, such as text files, can also be compressed. 

Understand the difference between lossless and lossy compression and explain the advantages and disadvantages of each. 

Explain the principles behind the following techniques for lossless compression: • run length encoding (RLE) • dictionarybased methods. 

4.5.6.10 Encryption 
Understand what is meant by encryption and be able to define it. 

Be familiar with Caesar cipher and be able to apply it to encrypt a plaintext message and decrypt a ciphertext. Be able to explain why it is easily cracked. 

Be familiar with Vernam cipher or onetime pad and be able to apply it to encrypt a plaintext message and decrypt a ciphertext. Explain why Vernam cipher is considered as a cypher with perfect security. 

Compare Vernam cipher with ciphers that depend on computational security. 

4.6.1 Hardware and software 
4.6.1.1 Relationship between hardware and software 
Understand the relationship between hardware and software and be able to define the terms: • hardware • software. 

4.6.1.2 Classification of software 
Explain what is meant by: • system software • application software. 

Understand the need for, and attributes of, different types of software. 

4.6.1.3 System software 
Understand the need for, and functions of the folowing system software: • operating systems (OSs) • utility programs • libraries • translators (compiler, assembler, interpreter). 

4.6.1.4 Role of an operating system (OS) 
Understand that a role of the operating system is to hide the complexities of the hardware. 

Know that the OS handles resource management, managing hardware to allocate processors, memories and I/O devices among competing processes. 

4.6.2 Classification of programming languages 
4.6.2.1 Classification of programming languages 
Show awareness of the development of types of programming languages and their classification into lowand highlevel languages. 

Know that lowlevel languages are considered to be: • machinecode • assembly language. 

Know that highlevel languages include imperative highlevel language. 

Describe machinecode language and assembly language. 

Understand the advantages and disadvantages of machinecode and assembly language programming compared with highlevel language programming. 

Explain the term ‘imperative highlevel language’ and its relationship to lowlevel languages. 

4.6.3 Types of program translator 
4.6.3.1 Types of program translator 
Understand the role of each of the following: • assembler • compiler • interpreter. Explain the differences between compilation and interpretation. Describe situations in which each would be appropriate. 

Explain why an intermediate language such as bytecode is produced as the final output by some compilers and how it is subsequently used. 

Understand the difference between source code and object (executable) code. 

4.6.4 Logic gates 
4.6.4.1 Logic gates 
Construct truth tables for the following logic gates: • NOT • AND • OR • XOR • NAND • NOR 

Be familiar with drawing and interpreting logic gate circuit diagrams involving one or more of the above gates. 

Complete a truth table for a given logic gate circuit. 

Write a Boolean expression for a given logic gate circuit. 

Draw an equivalent logic gate circuit for a given Boolean expression. 

Recognise and trace the logic of the circuits of a halfadder and a fulladder. 

Construct the circuit for a halfadder 

Be familiar with the use of the edgetriggered Dtype flipflop as a memory unit. 

4.6.5 Boolean algebra 
4.6.5.1 Using Boolean algebra 
Be familiar with the use of Boolean identities and De Morgan’s laws to manipulate and simplify Boolean expressions. 

4.7.1 Internal hardware components of a computer 
4.7.1.1 Internal hardware components of a computer 
Have an understanding and knowledge of the basic internal components of a computer system. 

Understand the role of the following components and how they relate to each other: • processor • main memory • address bus • data bus • control bus • I/O controllers. 

Understand the need for, and means of, communication between components. In particular, understand the concept of a bus and how address, data and control buses are used. 

Be able to explain the difference between von Neumann and Harvard architectures and describe where each is typically used. 

Understand the concept of addressable memory. 

4.7.2 The stored program concept 
4.7.2.1 The meaning of the stored program concept 
Be able to describe the stored program concept: machine code instructions stored in main memory are fetched and executed serially by a processor that performs arithmetic and logical operations. 

4.7.3 Structure and role of the processor and its components 
4.7.3.1 The processor and its components 
Explain the role and operation of a processor and its major components: • arithmetic logic unit • control unit • clock • generalpurpose registers • dedicated registers, including: • program counter • current instruction register • memory address register • memory buffer register • status register. 

4.7.3.2 The FetchExecute cycle and the role of registers within it 
Explain how the FetchExecute cycle is used to execute machine code programs including the stages in the cycle (fetch, decode, execute) and details of registers used. 

4.7.3.3 The processor instruction set 
Understand the term ‘processor instruction set’ and know that an instruction set is processor specific. 

Know that instructions consist of an opcode and one or more operands (value, memory address or register) 

4.7.3.4 Addressing modes 
Understand and apply immediate and direct addressing modes. 

4.7.3.5 Machinecode/assembly language operations 
Understand and apply the basic machinecode operations of: • load • add • subtract • store • branching (conditional and unconditional) • compare • logical bitwise operators (AND, OR, NOT, XOR) • logical • shift right • shift left • halt. Use the basic machinecode operations above when machinecode instructions are expressed in mnemonic form assembly language, using immediate and direct addressing. 

4.7.3.6 Interrupts 
Describe the role of interrupts and interrupt service routines (ISRs); their effect on the FetchExecute cycle; and the need to save the volatile environment while the interrupt is being serviced. 

4.7.3.7 Factors affecting processor performance 
Explain the effect on processor performance of: • multiple cores • cache memory • clock speed • word length • address bus width • data bus width. 

4.7.4 External hardware devices 
4.7.4.1 Input and output devices 
Know the main characteristics, purposes and suitability of the devices and understand their principles of operation. 

4.7.4.2 Secondary storage devices 
Explain the need for secondary storage within a computer system. 

Know the main characteristics, purposes, suitability and understand the principles of operation of the following devices: • hard disk • optical disk • solidstate disk (SSD). 

Compare the capacity and speed of access of various media and make a judgement about their suitability for different applications. 

4.8.1 Individual (moral), social (ethical), legal and cultural issues and opportunities 
Show awareness of current individual (moral), social (ethical), legal and cultural opportunities and risks of computing. Understand that: • developments in computer science and the digital technologies have dramatically altered the shape of communications and information flows in societies, enabling massive transformations in the capacity to: • monitor behaviour • amass and analyse personal information • distribute, publish, communicate and disseminate personal information. • computer scientists and software engineers therefore have power, as well as the responsibilities that go with it, in the algorithms that they devise and the code that they deploy. • software and their algorithms embed moral and cultural values. • the issue of scale, for software the whole world over, creates potential for individual computer scientists and software engineers to produce great good, but with it comes the ability to cause great harm. Be able to discuss the challenges facing legislators in the digital age. 

4.9.1 Communication 
4.9.1.1 Communication methods 
Define serial and parallel transmission methods and discuss the advantages of serial over parallel transmission. 

Define and compare synchronous and asynchronous data transmission. 

4.9.1.2 Communication basics 
Define: • baud rate • bit rate • bandwidth • latency • protocol. 

Differentiate between baud rate and bit rate. 

Understand the relationship between bit rate and bandwidth. 

4.9.2 Networking 
4.9.2.1 Network topology 
Understand: • physical star topology • logical bus network topology and: • differentiate between them • explain their operation 

4.9.2.2 Types of networking between hosts 
Explain the following and describe situations where they might be used: • peertopeer networking • clientserver networking. 

4.9.2.3 Wireless networking 
Explain the purpose of WiFi. 

Be familiar with the components required for wireless networking. 

Be familiar with how wireless networks are secured. 

Explain the wireless protocol Carrier Sense Multiple Access with Collision Avoidance (CSMA/CA) with and without Request to Send/ Clear to Send (RTS/CTS). 

Be familiar with the purpose of Service Set Identifier (SSID). 

4.9.3 The Internet 
4.9.3.1 The Internet and how it works 
Understand the structure of the Internet. 

Understand the role of packet switching and routers. 

Know the main components of a packet. 

Define: • router • gateway. Consider where and why they are used. 

Explain how routing is achieved across the Internet. 

Describe the term 'uniform resource locator' (URL) in the context of internetworking. 

Explain the terms ‘fully qualified domain name’ (FQDN), ‘domain name’ and ‘IP address’ 

Describe how domain names are organised. 

Understand the purpose and function of the domain service and its reliance on the Domain Name Server (DNS) system. 

Explain the service provided by Internet registries and why they are needed. 

4.9.3.2 Internet security 
Understand how a firewall works (packet filtering, proxy server, stateful inspection). 

Explain symmetric and asymmetric (private/ public key) encryption and key exchange. 

Explain how digital certificates and digital signatures are obtained and used. 

Discuss worms, trojans and viruses, and the vulnerabilities that they exploit. 

Discuss how improved code quality, monitoring and protection can be used to address worms, trojans and viruses. 

4.9.4 The Transmission Control Protocol/Internet Protocol (TCP/IP) protocol 
4.9.4.1 TCP/IP 
Describe the role of the four layers of the TCP/IP stack (application, transport, network, link). 

Describe the role of sockets in the TCP/IP stack. 

Be familiar with the role of MAC (Media Access Control) addresses. 

Explain what the wellknown ports and client ports are used for and the differences between them. 

4.9.4.2 Standard application layer protocols 
Be familiar with the following protocols: • FTP (File Transfer Protocol) • HTTP (Hypertext Transfer Protocol) • HTTPS (Hypertext Transfer Protocol Secure) • POP3 (Post Office Protocol (v3)) • SMTP (Simple Mail Transfer Protocol) • SSH (Secure Shell). 

Be familiar with FTP client software and an FTP server, with regard to transferring files using anonymous and nonanonymous access. 

Be familiar with how SSH is used for remote management. 

Know how an SSH client is used to make a TCP connection to a remote port for the purpose of sending commands to this port using application level protocols such as GET for HTTP, SMTP commands for sending email and POP3 for retrieving email. 

Be familiar with using SSH to log in securely to a remote computer and execute commands. 

Explain the role of an email server in retrieving and sending email. 

Explain the role of a web server in serving up web pages in text form. 

Understand the role of a web browser in retrieving web pages and web page resources and rendering these accordingly. 

4.9.4.3 IP address structure 
Know that an IP address is split into a network identifier part and a host identifier part. 

4.9.4.4 Subnet masking 
Know that networks can be divided into subnets and know how a subnet mask is used to identify the network identifier part of the IP address. 

4.9.4.5 IP standards 
Know that there are currently two standards of IP address, v4 and v6. 

Know why v6 was introduced. 

4.9.4.6 Public and private IP addresses 
Distinguish between routable and nonroutable IP addresses. 

4.9.4.7 Dynamic Host Configuration Protocol (DHCP) 
Understand the purpose and function of the DHCP system. 

4.9.4.8 Network Address Translation (NAT) 
Explain the basic concept of NAT and why it is used. 

4.9.4.9 Port forwarding 
Explain the basic concept of port forwarding and why it is used. 

4.9.4.10 Client server model 
Be familiar with the client server model. 

Be familiar with the Websocket protocol and know why it is used and where it is used. 

Be familiar with the principles of Web CRUD Applications and REST: • CRUD is an acronym for: • C – Create • R – Retrieve • U – Update • D – Delete. • REST enables CRUD to be mapped to database functions (SQL) as follows: • GET → SELECT • POST → INSERT • DELETE → DELETE • PUT → UPDATE. 

Compare JSON (Java script object notation) with XML. 

4.9.4.11 Thin versus thickclient computing 
Compare and contrast thinclient computing with thickclient computing. 

4.10.1 Conceptual data models and entity relationship modelling 
Produce a data model from given data requirements for a simple scenario involving multiple entities. 

Produce entity relationship diagrams representing a data model and entity descriptions in the form: Entity1 (Attribute1, Attribute2, .... ). 

4.10.2 Relational databases 
Explain the concept of a relational database. 

Be able to define the terms: • attribute • primary key • composite primary key • foreign key. 

4.10.3 Database design and normalisation techniques 
Normalise relations to third normal form. 

Understand why databases are normalised. 

4.10.4 Structured Query Language (SQL) 
Be able to use SQL to retrieve, update, insert and delete data from multiple tables of a relational database. 

Be able to use SQL to define a database table 

4.10.5 Client server databases 
Know that a client server database system provides simultaneous access to the database for multiple clients. Know how concurrent access can be controlled to preserve the integrity of the database. 

4.11.1 Big Data 
Know that 'Big Data' is a catchall term for data that won't fit the usual containers. Big Data can be described in terms of: • volume  too big to fit into a single server • velocity  streaming data, milliseconds to seconds to respond • variety  data in many forms such as structured, unstructured, text, multimedia. 

Know that when data sizes are so big as not to fit on to a single server: • the processing must be distributed across more than one machine • functional programming is a solution, because it makes it easier to write correct and efficient distributed code. Know what features of functional programming make it easier to write: • correct code • code that can be distributed to run across more than one server. 

Be familiar with the: • factbased model for representing data • graph schema for capturing the structure of the dataset • nodes, edges and properties in graph schema. 

4.12.1 Functional programming paradigm 
4.12.1.1 Function type 
Know that a function, f, has a function type f: A → B (where the type is A → B, A is the argument type, and B is the result type). Know that A is called the domain and B is called the codomain. Know that the domain and codomain are always subsets of objects in some data type. 

4.12.1.2 Firstclass object 
Know that a function is a firstclass object in functional programming languages and in imperative programming languages that support such objects. This means that it can be an argument to another function as well as the result of a function call. 

4.12.1.3 Function application 
Know that function application means a function applied to its arguments. 

4.12.1.4 Partial function application 
Know what is meant by partial function application for one, two and three argument functions and be able to use the notations shown opposite. 

4.12.1.5 Composition of functions 
Know what is meant by composition of functions. 

4.12.2 Writing functional programs 
4.12.2.1 Functional language programs 
Show experience of constructing simple programs in a functional programming language. 

Higherorder functions. A f 

Have experience of using the following in a functional programming language: • map • filter • reduce or fold. 

4.12.3 Lists in functional programming 
4.12.3.1 List processing 
Be familiar with representing a list as a concatenation of a head and a tail. Know that the head is an element of a list and the tail is a list. Know that a list can be empty. Describe and apply the following operations: • return head of list • return tail of list • test for empty list • return length of list • construct an empty list • prepend an item to a list • append an item to a list. Have experience writing programs for the list operations mentioned above in a functional programming language or in a language with support for the functional paradigm. 

4.13.1 Aspects of software development 
4.13.1.1 Analysis 
Be aware that before a problem can be solved, it must be defined, the requirements of the system that solves the problem must be established and a data model created. Requirements of system must be established by interaction with the intended users of the system. The process of clarifying requirements may involve prototyping/agile approach. 

4.13.1.2 Design 
Be aware that before constructing a solution, the solution should be designed and specified, for example planning data structures for the data model, designing algorithms, designing an appropriate modular structure for the solution and designing the human user interface. 

Be aware that design can be an iterative process involving a prototyping/agile approach. 

4.13.1.3 Implementation 
Be aware that the models and algorithms need to be implemented in the form of data structures and code (instructions) that a computer can understand. 

Be aware that the final solution may be arrived at using an iterative process employing prototyping/an agile approach with a focus on solving the critical path first 

4.13.1.4 Testing 
Be aware that the implementation must be tested for the presence of errors, using selected test data covering normal (typical), boundary and erroneous data. 

It should also undergo acceptance testing with the intended user(s) of the system to ensure that the intended solution meets its specification. 

4.13.1.5 Evaluation 
Know the criteria for evaluating a computer system. 

4.14.1 Overview 
4.14.1.1 Purpose of the project 
The project allows students to develop their practical skills in the context of solving a realistic problem or carrying out an investigation. The project is intended to be as much a learning experience as a method of assessment; students have the opportunity to work independently on a problem of interest over an extended period, during which they can extend their programming skills and deepen their understanding of computer science. The most important skill that should be assessed through the project is a student's ability to create a programmed solution to a problem or investigation. This is recognised by allocating 42 of the 75 available marks to the technical solution and a lower proportion of marks for supporting documentation to reflect the expectation that reporting of the problem, its analysis, the design of a solution or plan of an investigation and testing and evaluation will be concise. 

4.14.1.2 Types of problem/investigation 
Students are encouraged to choose a problem to solve or investigate that will interest them and that relates to a field that they have some knowledge of. There are no restrictions on the types of problem/investigation that can be submitted or the development tools (for example programming 96 Visit aqa.org.uk/7517 for the most uptodate specification, resources, support and administration language) that can be used. The two key questions to ask when selecting a problem/investigation are: • Does the student have existing knowledge of the field, or are they in a position to find out about it? • Is a solution to the problem/investigation likely to give the student the opportunity to demonstrate the necessary degree of technical skill to achieve a mark that reflects their potential? Some examples of the types of problem to solve or investigate are: • a simulation for example, of a business or scientific nature, or an investigation of a wellknown problem such as the game of life • a solution to a data processing problem for an organisation, such as membership systems • the solution of an optimisation problem, such as production of a rota, shortestpath problems or route finding • a computer game • an application of artificial intelligence • a control system, operated using a device such as an Arduino board • a website with dynamic content, driven by a database backend • an app for a mobile phone or tablet • an investigation into an area of computing, such as rendering a threedimensional world on screen • investigating an area of data science using, for example, Twitter feed data or online public data sets • investigating machine learning algorithms. There is an expectation that within a centre, the problems chosen by students to solve or investigate will be sufficiently different to avoid the work of one student informing the work of another because they are working on the same problem or investigation. Teachers will be required to record on the Candidate Record Form for each student that they have followed this guideline. If in any doubt on whether problems chosen by students have the potential to raise this issue, please contact your AQA advisor. Table 1 and Table 2 show the technical skills and coding styles required for an Alevel standard project. If a problem/investigation is selected that is not of Alevel standard then the marks available in each section will be restricted. 

4.14.1.3 Project documentation structure 
The project is assessed in five sections. The table below lists the maximum available mark for each section of the project: 