Examination Board Mapping Document

This page provides (my attempt) at mapping the content of AQA, OCR and Eduqas AS and A Level Computer Science topics to the crazy breakdown on The Computing Cafe. It also forms a useful checklist for revision!

- (A|AS/A) - Teach this topic at AS and A Level
- (A|A) - Teach this topic at A Level only

- (O|AS/A) - Teach this topic at AS and A Level
- (O|A) - Teach this topic at A Level only

- (E|AS/A) - Teach this topic at AS and A Level
- (E|A) - Teach this topic at A Level only

CS01 : What have I got myself into  █ 

When you start any new course, you need to spend some time getting familiar with the content and the resources you have to help you. It's also a good time to remind yourself why you chose to study the subject!

Gather suitable resources to help us with the rest of the course;
Fully understand what is required for success in this subject;
Develop an understanding of the importance of CS.
  1. (A|AS/A) (O|AS/A) (E|AS/A) A-Z of Computer Science
  2. (A|AS/A) (O|AS/A) (E|AS/A) Why do you want to study computing?
  3. (A|AS/A) (O|AS/A) (E|AS/A) What are computers good at?
  4. (A|AS/A) (O|AS/A) (E|AS/A) Course handbook and specification
  5. (A|AS/A) (O|AS/A) (E|AS/A) Current topics in computing
  6. (A|AS/A) (O|AS/A) (E|AS/A) Videos!
  7. Extension Activities

CS02 : Data exchange █  

In this section, we take a look at the different ways what data can be 'exchanged' between computer systems and the outside world.

Describe the ways in which data can be captured
Describe the principles of operation of data input and output devices
- barcode reader
- digital camera
- laser printer
Explain the difference between analogue and digital data and signals
Describe the principles of operation of analogue to digital (ADC) and digital to analogue (DAC) converters
State some application applications of ADCs
Discuss the ways in which manipulated data can be presented
Assess the suitability of input and output devices for different situations
Describe the applications of voice control
- Direct communication with computers
- The natural language interface
- The issue of ambiguity
- Voice commands and dictation
  1. (A|AS/A) (O|AS/A) (E|AS/A) Methods of capturing data
    Manual methods (input devices)
    Automatic methods (sensors)
  2. (A|AS/A) Principles of operation
    Barcode reader
    RFID Tag
    Digital Camera
    Laser Printer
  3. (A|AS/A) ADC / DAC
  4. (A|AS/A) (O|AS/A) (E|AS/A) Sensors and Actuators
  5. (A|AS/A) (O|AS/A) (E|AS/A) IPSO Facto (Input / Processing / Storage / Output)
  6. (E|A) Contemporary input devices (Voice control)
  7. Extension Activities

CS03 : What does data look like?  █  

Data floods into computer systems. It takes many forms; well, not that many actually. In this section, we take a look at the 'appearance' of data, how is is structured and how it is stored. A brief introduction to databases and file handling.

Describe where data comes from and what it looks like ...
- Data types (integer, real, boolean, character, string, datetime, record / dictionary, array)
- Typecasting
- Introduction to variable scope
- Pointer data type
- Big Data
Demonstrate an understanding of variables and constants
- The concept of a variable
- The concept of a constant
- Naming conventions for variables and constants
Describe abstract / user defined data structures ...
- General concept of a data structure
- Introduction to queues, stacks, lists, tuples, graphs, trees, hash tables, dictionaries, vectors
Know about the fundamentals of databases;
- Types of databases
- Key features of databases
Justify the need for data security.
  1. (A|AS/A) (O|AS/A) (E|AS/A) The hierarchy of wisdom
  2. (A|A) Big Data
    Variable and constants
    Naming variables and constants
    Variable scope
    Advanced data structures
  5. (A|AS/A) (O|AS/A) (E|AS/A) Databases - an introduction
    Keeping data safe from accidental or deliberate loss
  7. Extension Activities

CS04 : Different ways of counting  █ █ 

Numbers aren't simply numbers. They can be categorised and this always helps computer scientists and mathematicians to make sense of them.

Explain the features of different number systems ...
- Natural numbers
- Integer numbers
- Rational numbers
- Irrational numbers
- Ordinal numbers
Describe simple set theory
- Set notation
- Finite / Infinite sets
- Set comprehension (in Python)
- Compact set representation
- Set operations (cartesian product, membership, union, intersection, difference)
- Subsets, proper subsets, countable sets
- Permutations
  1. (A|AS/A) Different sets of number
  2. (A|A) Set Theory
    Set comprehension
    Finite and infinite sets
    Empty sets and empty strings
    Compact set notation
    Set operations
    Set comprehensions in Python
    Set permutations
  3. Extension Activities

CS05 : It's all about the base   █ 

Computers don't count in denary like we do. They are made a switches and don't have any fingers. They count in Base 2 or Binary. Part of being a computer scientists is being able to count in different number bases than the one that we normally count in.

Describe the format of number systems
- The concept of a number base
- Writing numbers to include their base, nB
Describe and use the denary number system
Describe and use the binary number system
Discuss the concept of binary coding
Represent unsigned denary numbers in binary format and vice versa
Describe and use the hexadecimal number system
Perform base conversions.
  1. (A|AS/A) (O|AS/A) (E|AS/A) The format of number systems
    Counting on your fingers
  3. (A|AS/A) (O|AS/A) (E|AS/A) Binary - Denary Conversions
    Binary to Denary
    Denary to Binary
    Binary to hexadecimal conversion
    Hexadecimal to binary conversion
  5. Extension Activities

CS06 : Maths with two fingers   █ 

So we add, subtract, multiply and divide using our fingers and the beautiful, if slightly familiar, base 10 number system. What about computers? They count in binary so how do you do maths with that?

Describe unsigned binary
Represent signed binary
- two's complement
- sign and magnitude
Represent fractions in binary using fixed point notation
About representing fractions using floating point notation
- Normalisation
- Advantage / disadvantages of fixed and floating point notation (range, precision, speed of calculation)
- Two's complement mantissa and exponent
State the range of a binary number
Perform binary mathematics
- Unsigned binary (addition, multiplication)
- Signed binary (subtraction)
- Floating point arithmetic (signed / unsigned - addition / subtraction)
  1. (A|AS/A) (O|AS/A) (E|AS/A) Unsigned binary is simple
  2. (A|AS/A) (O|AS/A) (E|AS/A) Negative numbers - signed binary
    Two's complement
    (O|AS/A) Sign and magnitude
  3. (A|AS/A) (O|AS/A) (E|AS/A) Representing fractional numbers using fixed point format
    Fixed point binary
    Range versus accuracy
  4. (A|A) (O|AS/A) (E|AS/A) Representing fractional numbers using floating point format
  5. (A|AS/A) (O|AS/A) (E|AS/A) Same string, different meanings
    Addition of fixed point numbers
    (O|A) Addition of floating point numbers
  7. (A|AS/A) (O|A) (E|AS/A) Multiplication 
    Fixed point numbers
    (O|A) Subtraction of floating point numbers
  10. Extension Activities

CS07 : A bit of this and a bit of that   █ 

A bit is a really tiny thing. A tiny bit, as it were. Most useful amounts of data storage contain millions, billions or even trillions of bits. However, computer scientists don't like writing long numbers; they use prefix multipliers to group bits together.

Describe the bit as the fundamental unit of information
State that a group of 8 bits is called a byte
State that half a byte is called a nybble
State that n bits of information can be configured in / used to represent 2n different values
Represent quantities of data in powers of 10 and in powers of 2
- Base 10 : kilo, mega, giga, tera
- Base 2 : kibi, mebi, gibi, tebi
Discuss the reasons why historically, the terms kilobyte, megabyte, etc have been used when kibibyte, mebibyte, etc are meant - the hard drive problem.
  1. (A|AS/A) (O|AS/A) (E|AS/A) Fundamental measures of data
  2. (A|AS/A) (O|AS/A) (E|AS/A) Groups of data
  3. (A|AS/A) (O|AS/A) (E|AS/A) My hard drive is broken
  4. Extension Activities

CS08 : I am not a number   █ 

With some bizarre reference to the 1960's TV series 'The Prisoner', we enter the world of character encoding.

Differentiate between the character code representation of a decimal digit and it's pure binary representation
Describe ASCII and Unicode systems for coding character data
Explain why Unicode was introduced
Use relational operators with characters
Have practical experience in the use of string manipulation functions in programming
  4. (A|AS/A) (O|AS/A) (E|AS/A) No standard for us! 
  6. (A|AS/A) (O|AS/A) (E|AS/A) Character (and string) functions
  7. (A|AS/A) (O|AS/A) (E|AS/A) Character codes are ordinal
  10. Extension Activities

CS09 : Painting by numbers  █ █ 


Describe how images are represented as bitmaps
State the meanings of resolution, colour depth and image size
- resolution can be expressed as pixel dimensions or pixel density
Calculate storage requirements for images
Discuss metadata that is commonly stored with images.
  1. (A|AS/A) What is a 'bitmap?
  2. (A|AS/A) Pixel dimensions and resolution
  3. (A|AS/A) Colour depth
  4. (A|AS/A) Encoding and decoding images
  5. (A|AS/A) Calculating file size
  6. (A|AS/A) Steganography
  7. (A|AS/A) File formats
  8. Extension Activities

CS10 : Hear, hear!  █ █ 

Apart from images, text and numbers, computers can also store sound. Not in analogue format like we hear it but in digital format. How does this work? How is an analogue wave converted into a digital signal? Fascinating.

Describe the principles of storage of sound waves using sampling techniques
State the difference between analogue and digital data
Describe how the ADC works and its application to sound sampling
Describe how the DAC works and its application to sound reproduction
Understand the concepts of sampling rate and sampling resolution
Calculate the size of a sound sample
Calculate the size of a raw sound file
Describe the purpose of MIDI and how it works
Describe the advantages and disadvantages of using MIDI to represent music.
  1. (A|AS/A) Binary data
  2. (A|AS/A) What is sound?
  3. (A|AS/A) The analogue to digital converter
  4. (A|A) The Digital to Analogue converter
  5. (A|AS/A) Investigating a sound
  6. (A|AS/A) Sound sampling
  7. (A|AS/A) Calculating the size of a sound file
  8. (A|AS/A) Sound synthesis
    Speech synthesis
  9. Extension Activities

CS11 : Saving more space   █ 

A file sizes increase, streaming movie and audio services become the norm, compression techniques are used to make sure we don't run out of space (or patience).

Describe compression techniques used for compressing sound, images and text
Describe the difference between lossless and lossy compression
Apply the rules of specific lossless compression techniques
- Run length encoding
- Dictionary encoding
Compare characteristics of compression techniques
- Compression ratio
- Compression / decompression time
    (O|A) Run length encoding
    (O|A) Other compression techniques (Huffman, Lempel-Ziv-Welch compression, ZIP)
  3. Extension Activities

CS12 : Why are we doing maths?   █ 

Computer are really good at maths. They do maths really quickly. Most of the maths that computers do is ordinary maths like we do. See?

Use familiar arithmetic operators - addition, subtraction, multiplication
Apply the two types of division - real / float division and integer division
Use exponentiation
Use incrementation and decrementation operators
Apply precedence rules and use brackets to alter them
Use rounding and truncation in appropriate circumstances
Use the DIV and MOD operations and describe their application in programming
  2. (A|AS/A) (O|AS/A) (E|AS/A) Incrementation, decrementation and other assignments
  4. (A|AS/A) (O|AS/A) (E|AS/A) Rounding and truncation
  5. Extension Activities

CS13 : Everything is relative  █ 

One of the most important aspects of computer programming is the ability to make decisions. Making decisions requires the computer to be able to compare things.

Use relational operators ...
Understand what the 'answer' to comparisons 'looks like' and what it means.
  1. (A|AS/A) (O|AS/A) (E|AS/A) Standard relational operators
  2. (A|AS/A) (O|AS/A) (E|AS/A) Your own examples
  3. Extension Activities

CS14 : That is logical, captain   █ 

Be familiar with the operations ...
- NOT (negation)
- AND (conjunction - pessimistic)
- OR (disjunction - optimistic)
- XOR (exclusive disjunction)
Appreciate that logic operations have precedence
State / draw logic gate representations of atomic logical operations
Apply compound logical operations NAND and NOR
Construct simple truth tables for atomic and compound logical operations
Write Boolean expressions for logic circuits (and vice versa)
Draw and implement physical electronic logic gates using transistors (theoretically, not electrically!)
- Half adder
- Full adder
- Edge triggered D-Type flip-flop (memory unit)
  5. (A|AS/A) (O|AS/A) (E|AS/A) Boolean expressions from logic statements
  6. (O|A) (A|A) Physical logic circuits
  7. (O|A) (A|A) Half and Full Adders
  8. (O|A) (A|A) Flip-Flop
    Level Triggered D-Type Flip-Flop
    Edge Triggered D-Type Flip-Flop
  9. Extension Activities

CS15 : Mr Boole, I presume   █ 

So we should have learnt about logic gates and be able to cope quite well with those. However, sometimes, the logic circuits that we make are simply too complicated. They cost too much money and the same logical output could be achieved using less gates - a simplified circuit.

State the Boolean identities
State De Morgan's laws, distribution, association, commutation, double negation
Manipulate and simplify Boolean expressions
Construct more complex logical expressions / logic gate diagrams / truth tables
Understand that logic gates translate Boolean concepts into physical uses.
  1. (A|AS/A) (O|AS/A) (E|AS/A) Deriving Boole's Identities
    AND / OR / NOT
    (A|AS/A) (E|AS/A) (O|A) Boolean laws
    (A|AS/A) (E|AS/A) (O|A) Factorisation (The Absorption Law)
  2. (A|AS/A) (E|A) (O|A) De Morgan's Theorem
  3. (A|AS/A) (O|AS/A) (E|AS/A) Practice makes perfect!
    (O|AS/A) Karnaugh maps
  4. (A|AS/A) (O|AS/A) (E|AS/A) Truth tables to simplified logical expressions
  5. The Power of NAND and NOR
  6. Extension Activities

CS16 : Start ... All Programs   █ 

This section is about the distinction between hardware and software and the different types of software that computer systems use.

Describe the difference between hardware and software
Recall the simple classification of software
- System software (OS, utility, libraries, translators)
- Application software
Describe the difference between open source, closed source, off-the-shelf, bespoke software, expert systems
State examples of different types of software
Apply rules about program version management
Decsribe the applications of bespoke software
- weather forecasting
- computer aided design
- robotics
- computer generated graphics / animation
Discuss the advantages and disadvantages of Bespoke Software
Discuss the operation of expert systems
    (E|A) Software Version Management
  2. (E|AS/A) Special purpose software, bespoke software and expert systems
    Expert systems
  3. Extension Activities

CS17 : Keeping things ticking over   █ 

Without an operating system, your computer would never get past the black screen that tells you who made the motherboard and how much memory you have. Not a lot of use really.

Describe the role of the operating system in managing resources
State what types of operating system there are
- Distributed
- Embedded
- Batch processing
- Real time (control / transaction)
- Single user / multi user
- Multi tasking / multiprogramming
Describe the concept of a Virtual Machine
Describe other operating system functions
- Memory management (paging, segmentation, virtual memory, partitioning)
- Hardware management (BIOS, device drivers, buffers)
- File management
- Provision of a user interface
- Interrupts (Interrupt Service Routines, conditions leading to interrupts, priorities)
- Scheduling (round robin, first come first served, multi-level feedback queues, shortest job first, shortest remaining time)
- Processes (running, ready, blocked)
- Time slicing, polling, threading
  1. (A|AS/A) (O|AS/A) (E|AS/A) Operating systems through the ages
  2. (O|AS/A) (E|AS/A) Types of operating system
  3. (A|AS/A) (O|AS/A) (E|AS/A) Functions of the operating system
  4. Extension Activities

CS18 : Translation, please!   █ 

In this section, we will learn more about system software but specifically the software which allows us to give computers instructions.

State the different generations of programming language (low and high level)
- Advantages of low and high level languages
- Standardisation and portability
- Intermediate languages (bytecode)
Explain the operation of different language translators (interpreters, compilers, assemblers)
- Features and differences
- Source code and object (executable) code
Discuss IDE's and their features
Discuss the different systems which convert programming languages into machine code
- Lexical analysis, symbol table construction, syntax analysis, semantic analysis, code generation and optimisation, linkers, loaders and libraries
  1. (A|AS/A) (O|AS/A) (E|AS/A) Programming language generations
    Integrated development environments
    (O|A) Stages of compilation
  3. Extension Activities

CS19 : Round and round   █ 

In this section, we will briefly look at the different software development methodologies available to software developers before considering the main stages involved in all of them.

Describe different software development methodologies;
Describe and implement analysis techniques;
Describe and implement design techniques;
Describe and implement development techniques;
Describe and implement testing techniques;
Describe and implement evaluative techniques;
Be a good software developer.
  1. (O|AS/A) (E|A) Software Development Methodologies
    Focus on : Agile Software Development
  2. (O|AS/A) (E|A) Stages in software development
    Software installation methods
  3. Extension Activities

CS20 : How to solve it - better!   █ 

In this topic, we are learning how to solve problems. We will formalise the techniques used by computer scientists to help them to automate the solutions to, often complex, problems in the real world.

Develop and check solutions to logic problems
Describe the techniques of abstraction
- Representation
- Generalisation / categorisation
- Functional
- Divide and conquer
Discuss the concept of Information hiding
Describe the technique of decomposition / composition
Design interfaces
Understand the need for automation.
Apply patterns for problem solving
- Backtracking
- Data mining
- Heuristics
- Caching
- Performance modelling
- Pipelining
- Visualisation to solve problems (mental models)
  1. (A|AS/A) (O|AS/A) (E|AS/A) Problem Solving Techniques
    Representation abstraction
    Generalisation abstraction
    Functional abstraction
    Procedural abstraction
    Data abstraction
  3. (A|AS/A) (O|AS/A) (E|AS/A) Information hiding, encapsulation and interfaces
    Information hiding in practice - The Enigma Machine
  4. (A|AS/A) (O|AS/A) (E|AS/A) Modelling techniques / Automation
  5. (O|A) Patterns
  6. (O|AS/A) Thinking
    Thinking abstractly
    Thinking ahead
    Thinking procedurally
    Thinking logically
    (O|A) Thinking concurrently
  7. Extension Activities

CS21 : Algorithm development  █  

In this section, we look at the big picture of programming. Tying together all the work we have done so far on programming and looking also towards more advanced topics that we have yet to meet.

Consider each part of the 'big picture' when we are preparing to code
Use the standard coding constructs with confidence
Communicate algorithms to other people / programmers
Code in a professional and clear manner
Be confident that any algorithm we develop will run correctly.
Become a good programmer!
  1. (A|AS/A) (O|AS/A) (E|AS/A) The BIG picture!
  3. (A|AS/A) (O|AS/A) (E|AS/A) What is an algorithm?
  7. Extension Activities

CS22 : Break it down   █ 

This section introduces all the major programming paradigms and considers why they may be needed. Then we move on to look at procedural programming in particular and why programmers break problems down into smaller, more manageable parts.

Describe different programming paradigms
Understand that computational problems can be broken down into smaller, more manageable parts
Use structure charts to represent the flow of data
State the two types of subroutine and the differences between them
State the difference between local and global variables.
Describe the effect of passing variables by reference and by value
  1. (A|A) (O|A) (E|A) What is a programming paradigm
    Why so many?
  2. (A|AS/A) (O|AS/A) (E|AS/A) Top down design / stepwise refinement
    "Are we nearly there yet?"
    Yipee, maths!
    Yum, dinner!
    Subroutines, parameters and return values
    Local and global variables
    By Reference / By Value / By George!
    Features of structured programming
  4. Extension Activities

CS23 : How long is a piece of string?   █ 

In this section, we will be learning some simple skills in the field of string handling. That's it.

Determine characteristics of strings
- Length
- type of data contained in the string
Split strings up and join them together
- An understanding of position
- Substrings
- Concatenation
Understand the character encoding methods used in strings
- Character to character code
- Character code to character
Perform string conversions
- string, integers, floats, datetime
  1. (A|AS/A) (O|AS/A) (E|AS/A) Basic Python string methods
  2. (A|AS/A) (O|AS/A) (E|AS/A) Date and time
  3. Extension Activities

CS24 : That's a bit random!   █ 

One of the most interesting feature of computers is the immense power they have to model real world events. The real world is inherently random - hence, computers need to be able to simulate this.

Understand how random numbers are generated
Use random number generation in real world modelling situations.
  1. (A|AS/A) (O|AS/A) (E|AS/A) Random number generation
  2. (A|AS/A) (O|AS/A) (E|AS/A) Uses of random number generation
    Focus on computational modelling
  3. Extension Activities

CS25 : How do I stop things going wrong?   █ 

Defensive programming techniques expect users to push buttons they are not meant to push and type words that shouldn't be typed. Prevention is often better then cure but sometimes, you just can think of everything!

Describe the types of errors that can occur in computer programs
Understand what verification involves
Describe validation techniques using practical examples
Use exception handling
Describe how parity detects errors
Apply majority voting techniques
Derive check digits and understand their applications
Describe the applications of checksums
  1. (A|AS/A) (O|AS/A) (E|AS/A) Errors in computer programs
    Syntax errors
    Runtime errors
    Exception handling
    Handling exception errors
    Semantic Errors
  2. (A|AS/A) (O|AS/A) (E|AS/A) Error detection schemes
    Majority Voting
    Check Digits
  3. (O|A) (A|A) Checksums
  4. Extension Activities

CS26 : Don't reinvent the wheel!  █ 

With so many problems and so many solutions, there's bound to be an algorithm around which will solve yours. The most common problems to solve involve searching and sorting, but also record storage and route finding.

Show appreciation of the fact that there are lots of standard algorithms already written and that each particular situation in terms of data can affect the most suitable choice to solve a problem
Describe, trace and implement standard searching algorithms :
- Linear search
- Binary search (iterative and recursive)
Describe, trace and implement standard sorting algorithms :
- Bubble sort
- Insertion sort
- Merge sort
- Quicksort
Describe uses of hashing
- Design hashing tables
- Apply simple hashing algorithms
- Handle collisions
Graphs and trees / Route finding algorithms
- Describe Dijkstra's shortest path algorithm and its applications
- Describe the A* algorithm
  1. (A|AS/A) (O|AS/A) (E|AS/A) Why standard algorithms? (All exam boards)
    Linear search
    Binary search
    Bubble sort
    Insertion sort
    (O|A) Merge sort
    (O|A) Quick sort
  4. (A|A) (O|A) Hashing
    Associative arrays
    Handling collisions
  5. Extension activities

CS27 : Fodszqujpo!   █ 

Since the dawn of time, man has wished to communicate in secret. In ancient Roman times, men used to shave their heads and have secret messages tattooed onto them, in the second world war, Germany communicated with the Enigma machine. In modern times, cryptography is crucial to the operation of the Internet.

Describe Cryptography
Explain how to implement the Caesar cipher (poor)
Explain how to implement the Vernam cipher (excellent)
Compare encryption techniques to assess their effectiveness.
  1. (A|AS/A) (O|A) (E|A) What is cryptography?
  2. (A|AS/A) (O|A) (E|A) The Caesar cipher
  3. (A|AS/A) (O|A) (E|A) The Vernam Cipher
  4. (A|AS/A) (O|A) (E|A) Cipher strength
  5. Extension activities

CS28 : Who is this little man?   █ 

The lowest level language used for communicating an algorithm to a computer is Binary or Machine Code. Humans aren't very good at binary because they are not machines so Computer Scientists developed languages which are close to machine code, but are a little more 'humanlike'.

State that processors have an instruction set
Describe the format of instructions as an opcode and an operand
Describe the different addressing modes in use in modern processors
- Immediate, direct, indirect and indexed addressing
Understand simple assembly language instructions and use them to write programs
- load, add, subtract, store, branching, comparison, bitwise operations, logical shifts, halt
Write simple programs in assembly language
    Structure of a machine code instruction
    (A|AS/A) (O|A) (E|AS/A) Addressing modes
  2. (A|AS/A) (O|AS/A) (E|AS/A) The Little Man Computer (LMC)
  3. (A|AS/A) (O|AS/A) (E|AS/A) Assembly code programming challenges
  4. Extension activities

CS29 : I want Moore machines!  █ █ 

Construct simple Finite State Machines without output (technically Finite State Automata)
Construct simple Finite State Machines with output on the transitions - Mealy Machines
To construct simple Finite State Machines with output on the state - Moore machines
  1. (A|AS/A) Applications first, please!
  2. (A|AS/A) Representing FSMs
    Definitions / components
    Representing Finite State Machines

  3. Extension activities

CS30 : Looking under the bonnet   █ 

In this modern world of computing, it's easy to forget that a) it didn't always used to be like this and b) there is a lot more going on 'under the bonnet' than first meets the eye (or ear).

Describe the fundamental types of computer architecture
- Von Neumann and Harvard architectures
Describe the different components of a computer system and how they relate to each other
- Processor
- Main memory (1° storage) including different types (RAM, ROM, cache)
- System bus (address bus, data bus, control bus)
- I/O controllers
Virtual memory
Explain the concept of memory addressing and how it operates
Describe the different components of the processor and their functions
- Arithmetic logic unit
- Control unit
- Clock
- Dedicated registers (PC, CIR, MAR, MBR, SR)
- General purpose registers
Describe different processor architectures and the way it's affects performance.
- Multicore processors / parallel processing
- Cache memory
- Clock speed
- Word length
- Address bus width and it's effect on maximum addressable memory
- Data bus width
- Pipelining
State the meaning and applications of CISC and RISC systems
Describe the purpose of GPUs in graphical and non-graphical applications (modelling / data mining)
- Explain the benefits of GPUs (specialist instructions, multiple cores and SIMD processing)
    Harvard Architecture
    Von Neumann Architecture
    (O|AS/A) CISC and RISC architectures
    (O|A) Graphic Processing Units
  2. (A|AS/A) (O|AS/A) (E|AS/A) Components of computer systems
    Virtual memory
  3. (A|AS/A) (O|AS/A) (E|AS/A) Processor architecture and it's effect on performance
    Focus on the Status Register
    Factors affecting processor performance
    (O|A) Pipelining
  4. Extension activities

CS31 : This is so repetitive   █ 

A central processing unit leads probably the most repetitive existence know to man (or woman). It does the same thing, nanosecond after nanosecond, never gets tired and never makes a mistake. Amazing. In this lesson, we investigate the cycle of its life.

State and describe the stages in the Fetch, Decode, eXecute (FDX) cycle
Explain Interrupt Service Routines (ISR)
  1. (A|AS/A) (O|AS/A) (E|AS/A) The fetch (decode) execute cycle
    (A|A) (E|A) (O|AS/A) Focus on Interrupts
  2. Extension activities

CS32 : Who switched the lights off?   █ 

When the lights go out and your computer screen goes black, what happens to all the data that was flowing around the little wires? This section focuses on the operation of the main types of secondary storage media.

Describe the principles of operation of a magnetic storage device
Describe the principles of operation of an optical storage device
Describe the principles of operation of solid state storage
Virtual storage (cloud storage)
Access the suitability of different storage devices for different situations
  1. (A|AS/A) (O|AS/A) (E|AS/A) Secondary storage devices
  2. (A|AS/A) (O|AS/A) (E|AS/A) Virtual (cloud) storage
  3. Extension activities

CS33 : It's a connected world   █ 

In the days before networks were commonly available, the world of computing was a little dull. Nowadays, computers are fastened together by default. In this section, we will learn some of the basic methods by which computers are fastened together and the characteristics of how they operate.

Describe networking topologies and standards
- Star, bus
- Handshaking
- Carrier Sense Multiple Access with Collision Detection (CSMA/CD(A))
- Request To Send / Clear To Send (RTS / CTS)
Explain the operation of the WiFi protocol
- Wireless security
Describe communication methods
- Serial and parallel
- Simplex, half-duplex and full duplex
- Multiplexing and switching
- Synchronous and asynchronous transmission / starts and stop bits
State and explain the characteristics of communication
- Bit rate / Baud rate
- Bandwidth
- Latency
- Protocols
- Calculate data transfer rates on a network
Explain the difference between peer-to-peer and client-server networks
- Explain the terms 'peer-to-peer' and 'client-server'
Discuss thick and thin client systems
  2. (A|AS/A) (O|AS/A) (E|AS/A) Connecting computers together
    Data is transmitted in binary form, though not like water in a pipe
    Networking topologies
    (O|A) Networking hardware
    (O|A) Hubs and switches
    (A|AS/A) (E|A) Wireless networks (WLAN and WWAN)
    Physical (and software) networking protocols
    (A|AS/A) (E|AS/A) Networking collisions and CSMA/CD and CSMA/CA
    Network segmentation
    Data Transfer Rate
    Logical and physical network topology
  3. (A|AS/A) (O|AS/A) (E|AS/A) Peer-to-peer and client server networks
  4. (A|AS/A) (O|AS/A) (E|AS/A) Thick and thin clients
  5. (A|AS/A) (O|A) (E|AS/A) Communication methods
    Serial data transmission
    Simplex, half and full duplex
    Parallel data transmission
    Synchronous and asynchronous transmission
  6. (A|AS/A) (O|A) (E|AS/A) Characteristics of communication
    Baud rate
    Bit rate
    Attenuation and distortion
  7. Extension activities

CS34 : Deep impact    █ 

We do not live in a world devoid of responsibility and computer technology has exposed both benefits and risks in the areas of individual (moral), social (ethical), legal and cultural responsibility. This topic explores these areas.

Write about the moral, social, ethical and cultural implications of the use of computer systems
- Codes of conduct
- Computers in the workplace
- Automated decision making
- Artificial intelligence
- Environmental effects
- Censorship and the Internet
- Monitoring behaviour
- Invasive technology
- Storing and analysing personal data
- Piracy and offensive communications
- Layout, colour paradigms and character sets
- Use and overuse of data
- Reliance on technology and the impact of globalisation
Write about the legal implications of the use of computer systems
- The Data Protection Act
- Health and safety (display screen equipment)
- The Computer Misuse Act
- The Copyrights, Designs and Patents Act
- The Regulation of Investigatory Powers Act
  1. (A|AS/A) (O|AS/A) (E|AS/A) Moral, ethical, social and cultural - what?
  4. (A|AS/A) (O|AS/A) (E|AS/A) Codes of conduct
  5. Extension activities

CS35 : Speaking formally   

Computers aren't like us. They (or rather the programmers that instruct them) find it very difficult  to interpret free speech. Formal language definitions are needed to help them a little.

Identify ambiguity in natural language
Explain the need for computer languages to have an unambiguous syntax
  1. (E|A) Grammar
  2. (E|A) Formal languages
  3. Extension activities

CS36 : Witaj!  █ █ 

The way we do maths is not the way that computers do it. In this topic, I'll change the way you think ...

Understand why RPN is better. Just better.
Convert simple infix expressions into RPN (postfix) and vice versa
  1. (A|A) Isn't that how we do maths anyways? (RPN / postfix)
    What's postfix?
  2. (A|A) How do computers actually carry out postfix calculations?
  3. Extension activities

CS37 : John and Peter  █ █ 

Defining formal languages is a tricky business. We need another language to do it; a metalanguage. Crazy.

Check language syntax be referring to BNF productions or syntax diagrams
Formulate simple production rules
Explain why BNF can represent some languages that cannot be representing with regular expressions
  1. (A|A) (E|A) Metasymbols
  2. (A|A) (E|A) Parse Trees
  3. (A|A) (E|A) Extended Backus-Naur Form
  4. (A|A) (E|A) Syntax diagrams
  5. (A|A) (E|A) EBNF Visualiser
  6. Extension activities

CS38 : Just a regular guy █ █  


State that regular expressions are a simple way to represent a set
Describe simple languages using regular expressions
Use regular expressions for string matching
Describe the relationship between a regular expression and a finite state automata
  1. (A|A) (E|A) What are regular expressions?
  2. (A|A) (E|A) Developing and testing regular expressions
  3. (A|A) (E|A) The relationship between regular expression and finite state machines
    Regular expressions to FSA
    FSA to regular expressions
  4. Extension activities

CS39 : Programming with objects   █ 

This section is about programming paradigms and how to program using objects and, to be honest, is probably one of the most important sections in this year since all the other programming stuff uses the concepts you will learn here. Pay attention!

List / describe examples of and the need for different programming paradigms
Understand the specific characteristics of object oriented programming paradigms
Be familiar with the concept of
- Class
- Object
- Instantiation
- Encapsulation
- Inheritance
- Public, private and protected specifiers
- Polymorphism
- Aggregation (association and composition)
- Overriding
- Abstract, virtual and static methods
Be familiar with OOP design principles
- Encapsulate what varies
- Favour composition over inheritance
- Program to interfaces, not implementation
Write object oriented programs
Draw and interpret class diagrams
- Single inheritance
- Public, private (-) and protected (#) specifiers
  1. (A|A) (O|A) (E|AS/A) What is a programming paradigm (and can I use some)?
    Imperative programming
    Declarative programming
    Functional programming
  2. (A|A) (O|A) (E|AS/A) Thinking objectively
    Inheritance and polymorphism
    Abstract, virtual and static methods
    OOP Design principles
  3. Extension activities

CS40 : For recursion, see recursion ...  █  

A famous online encyclopedia once said, "For recursion, see recursion".

Show familiarity with recursive techniques
- General case
- Base case
Be able to solve problems using recursive techniques
  1. (A|A) (O|A) (E|A) Classic recursive thinking
    Sum of n numbers
    Factorial of n
    Power calculations
  3. (A|A) (O|A) (E|A) Contrived examples
    Searching through a list of characters
  4. (A|A) (O|A) (E|A) Consequences of recursion and when to use it
  5. Extension activities

CS41 : Writing lists and using dictionaries  █  

Two common data structures which are used as the basis of many others are the list and the dictionary. In this topic, we will see examples of both.

Be familiar with the concept of the dictionary as a key : value pair
- Know some applications of dictionaries
- Create, access, add, remove and update data in a dictionary
Be familiar with the concept of lists and linked lists
- Represent linked lists using pointers and arrays
- Create, traverse, add, remove and update data in linked lists
  1. (A|A) (O|A) (E|A) Linear Lists
    Multidimensional lists
    Other list operations

    Dictionary operations
  3. (A|A) (O|A) (E|A) Linked Lists
    Linked list operations
    The heap
  4. Extension activities



Understand the structure and representation of stacks and queues
Perform operations on stacks
- Push
- Pop
- Peek or top
- Test for empty stack
- Test for full stack
Perform operations on queues (shuffle, circular, priority)
- Add an item
- Remove an item
- Test for an empty queue
- Test for a full queue
- Peek at the next item
    (O|AS/A) Basic stack operations
    Stack Frames and the Call Stack
    Command history
    Reversing the order of a list
    (O|AS/A) Basic queue operations
    Linear queue or Shuffle queue
    Circular queue
    Priority Queue
  3. Extension activities

CS43 : How many gardeners do you know?  █  

In this section we will consider two very important data structures - graphs and trees.

Represent graphs as data structures
- representing complex relationships
- typical uses
- terms
Represent graphs
- Adjacency matrix and adjacency list
- Advantages and disadvantages of both
Apply breadth first and depth first graph traversal algorithms and describe typical applications of both
- depth first : navigating a maze
- breadth first : shortest path for unweighted graph
Describe and represent trees
- Connected, undirected graph with no cycles
- Rooted tree where every vertex is directed away from the root
Describe binary trees
- Binary tree (rooted tree with <= 2 children per node)
- Representing binary trees using pointers
- Typical uses
Trace tree traversal algorithms and their applications
- pre-order
- in-order
- post-order
Describe and implement route / pathfinding algorithms
- Dijkstras shortest path algoritm
- A* algorithm
  1. (A|A) (O|A) (E|A) A challenge?
  2. (A|A) (O|A) (E|A) About graphs (and trees)
  3. (A|A) (O|A) (E|A) Representing complex relationships
    Chain links and the Oracle of Bacon
    Diverse systems
    Vertex and Edge Sets
    Adjacency list vs adjacency matrix
    Graph traversal / searching
  5. (A|A) (O|A) (E|A) Trees
    Binary search trees
    A practical binary search tree
    Binary tree traversal / searching
    Applications of tree traversals
  6. Route / Path finding algorithms
    (A|A) (E|A) (O|A) Dijkstra's algorithm
    (O|A) A* algorithm
  7. Extension activities

CS44 : Saving it for later  █  

Have practical experiences handle files;
- Describe different access methods for files
- Handle simple text files
- Define a file in terms of records and fields (delimited)
- Distinguish between master and transaction files
- Describe serial, sequential / indexed sequential and direct (random) file access
- Experience handling binary files
Produce a data model from given data requirements for a simple scenario involving multiple entities
Produce entity relationship diagrams for a data model in standard format
- entity ( PK, FK, NKA, ... )
Explain the concept of a relational database
- Data consistency
- Data redundancy
- Data independence
Define terms associated with databases
- Entity
- Attribute
- Primary key
- Composite key
- Foreign key
- Multi-level indices
Understand why databases are normalised
- Normalise relations to third normal form
Use SQL to :
- Define relations
- Retrieve, update, insert and delete data from multiple tables in a relational database
- Manage issues of referential integrity
Describe the function of a database management system
Understand the benefits and drawbacks of client server databases
- Simultaneous access for multiple clients
- Update anomalies due to concurrent access and methods of resolution (record locks, serialisation, timestamp ordering, commitment ordering)
- ACID (Atomicity, Consistency, Isolation, Durability)
Show familiarity with
- Fact-based models for representing big data
- Graph schema for capturing the structure of a dataset (nodes, edges and properties)
- Use of distributed systems for managing big data.
  1. (A|AS/A) (O|AS/A) (E|AS/A) Practical file handling techniques (NEW SECTION)
    Text files
    Delimited files
    (E|AS/A) (O|A) Transaction files
    Binary files
  2. (A|A) (O|AS/A) (E|AS/A) What is a database? 
  3. (A|A) (O|AS/A) (E|AS/A) Data models 
    Entity occurrences
    More on relationships
    More about attributes
    Resolving the many to many relationship problem
    Investigating complex relationships
    A simple, flat data structure
    Composite keys
    The problem with flat file databases
  5. (A|A) (E|A) (O|A) Functions of the RDBMS 
    Maintaining data integrity
    Functions of the RDBMS
    Referential integrity
    What is a 'schema'?
    ACID Compliance
  6. (A|A) (O|AS/A) (E|AS/A) Learn SQL, flipped fashion 
    A practical database with SQLite
    (A|A) (O|A) (E|A) Altering data in the database
  7. (A|A) Managing BIG data 
    Fact Based Modelling
    What's the big deal?
    Managing Big Data
    Big Data is Immutable
    Functional programming (and it's connection to Big Data)
  8. Extension activities

CS45 : Which one is best?  █  

Humans are always searching for more efficient ways of solving problems. Enter BigO ...

Understand that we can compare algorithms using their time and space complexity as a function of the size of the problem / input.
Understand that the same problem can be solved using different algorithms having different complexities
Use BigO notation to express worst time complexity for algorithms in the following categories :
- Constant (linear search)
- Logarithmic (binary search, merge sort, quick sort) (y = log10x)
- Linear (y = 2x)
- Polynomial (bubble sort) (y = 2x2)
- Exponential (y = 2x)
- Factorial
Be able to derive the time complexity of an algorithm through analysis
Show awareness that algorithmic complexity and hardware impose limits on what can be computed
  1. (A|A) (O|A) (E|A) What is an algorithm?
  2. (A|A) (O|A) (E|A) Different methods, same answer
  3. (A|A) (O|A) (E|A) Complexity Theory
  4. (A|A) (O|A) (E|A) Constant Complexity
  5. (A|A) (O|A) (E|A) Logarithmic Complexity
  6. (A|A) (O|A) (E|A) Linear Complexity
  7. (A|A) (O|A) (E|A) Polynomial Complexity
  8. (A|A) (O|A) (E|A) Exponential Complexity
  9. (A|A) (O|A) (E|A) Factorial Complexity
  10. (A|A) (O|A) (E|A) Summary
  11. Extension Activities

CS46 : The good, the bad and the ugly  █  

Some problem can't be solved by a computer no matter how much power you throw at them. Some problems can, but not always efficiently.

Be aware that some problems can't be solved algorithmically / computationally
Describe algorithms as either being
- Tractable (problems with a polynomial, or less, time solution)
- Intractable (problems that have no polynomial, or less, time solution)
State that heuristics are often used when tackling intractable problems
Describe the Halting Problem and understand it's significance.
  1. (A|A) (O|A) Unsolvable problems
  2. (A|A) (O|A) Decision problems
    The Tiling Problem
  3. (A|A) (O|A) Can the solvable actually be solved?
    Optional, proper hard bit (which you don't have to do)
  4. (A|A) (O|A) The Halting Problem
  5. Extension Activities

CS47 : Which way are you pointing?  █ █  

Vectors - it's a bit maths.

Be familiar with the concept of a vector and how to specify them
- Dictionary representation
- List representation
- 1-D array representation
- Visualising a vector as an arrow
Perform vector addition and scalar-vector multiplication
Perform convex combination of two vectors, u and v
Perform dot or scalar product of two vectors
- Application of dot product
  1. (A|A) What is a vector and what is not?
    A vector is a one-dimensional dynamic array
    A vector is an object with both direction and magnitude
  2. (A|A) Vector operations
    Vector addition
    Scalar multiplication
    Dot / scalar product (algebraic and geometric)
    Convex combinations
  3. Extension Activities

CS48 : Drawing shapes █ █  

Bitmap images are OK but sometimes, only a vectorised one will do!

Explain how vector images represent images using a list of objects
- Give examples of typical properties of those objects
Use vector graphic primitives to create a simple vector graphic
Compare vector and bitmap graphics and their appropriate uses
  1. (A|A) Vector Graphics
  2. (A|A) Vector VS Bitmap
  3. Extension Activities

CS49 : Alans' dream ... █ █  

Alan Turing gave his life in the pursuit of mathematics and computer science. Without him, we may not have won the Second World War, the modern computer might look and behave very differently and Bletchley Park might not be quite so famous.

Know that Turing Machines can be viewed as a computer with a single, fixed program expressed using :
- A finite set of states in a state transition diagram with a start state and halting states
- A finite alphabet of symbols
- An infinite tape (in one direction only) marked off in squares
- A sensing read-write head
Represent Turing Machines using
- A tape
- A Transition function (which represents the state transition diagram)
Be familiar with the structure of Turing Machines that perform simple computations
- Be able to hand-trace simple Turing Machines
Explain the significance of the Turing Machine and the Universal Turing Machine to the subject of computation.
  1. (A|A) What is a 'Turing Machine'?
    A Turing Machine computation
  2. (A|A) Practical Turing Machines
    Worked examples
    Tracing machine execution
  3. (A|A) Universal Turing Machines (UTM)
  4. Extension activities

CS50 : It's functional! █ █  

Yet another programming language, but it's OK because we'll be using Python as well as Haskell :)

State the format of a function as f : A → B
- A → B is the function type
- A is called the argument type or domain
- B is called the result type or co-domain
- A and B are always subsets of objects
Functions map one set of values (domain) to another set of values (drawn from codomain)
Describe a function as a first class object in functional programming
State that a function application means a function applied to it's arguments
State what is meant by partial function application for one, two and three argument functions
State what is meant by composition of functions
Show experience of constructing simple programs in a functional programming language
- Map
- Filter
- Reduce / fold
Higher order functions
Be familiar with representing a list as a concatenation of a head and a tail
- The head is an element of a list
- The tail is a list
- The list can be empty
- Operations (return head, return tail, test for empty list, return length of list, construct empty list, prepend an item to a list, append an item to a list)
- Have experience writing programs for list operations in functional programming language
Application of functional programming to big data / distributed code
  1. (A|A) Functions
    Function type
  2. (A|A) Functional programming
    Function application
    Practical functional programming
    First class objects / values
    Lambda functions
  3. (A|A) Map, filter and fold
    Reduce / Fold
  4. (A|A) List operations
  5. Extension Activities

CS51 : The grid   █ 


Describe the physical structure of the Internet
- Cable infrastructure
- Routers / switches
Describe methods of data transfer
- Circuit switching
- Packet switching
- The role of IP Addresses
- The role of Internet Registrars
- Uniform Resource Locator (URL)
- The Domain Name System and the use of domain names
  1. (A|A) (O|AS/A) (E|AS/A) The Physical Structure of the Internet
    Circuit switching
    Packet Switching
  2. (A|A) (O|AS/A) (E|AS/A) Addressing the Internet
    IP Addresses
    Public and Private IP Addresses
    What's the point?
    The end-to-end principle
    One man
  4. (A|A) (O|AS/A) (E|AS/A) URLs, URIs and the DNS
    URLs and URNs
  5. The Dark Net (and the Dark Web)
  6. Extension Activities 

CS52 : The MAIN protocol!  █  

With so many computers accessing the Internet, there have to be rules for communication. The TCP/IP protocol stack is, well, a stack of such protocols which all networked computers must understand and comply with, or else.

Describe the role of the 4 layers in the TCP/IP stack
- Application
- Transport
- Network
- Link
Application Layer protocols
- File Transfer Protocol (FTP)
- Hypertext Transfer Protocol (HTTP)
- Post Office Protocol (POP3)
- Internet Mail Access Protocol (IMAP)
- Simple Mail Transfer Protocol (SMTP)
- Secure Shell (SSH)
Transport Layer Protocol
- The role of sockets (well known server ports, role of client ports, NAT and port forwarding)
Network Layer Protocols
- Standards (IPv4 and IPv6)
- Use of subnet masks
- Routable and non-routable IP addresses
Link Layer Protocols
- The role of MAC addresses
  1. (A|A) (O|A) (E|AS/A) The stack, the whole stack and nothing but the stack
  2. (A|A) (O|A) (E|AS/A) The Application layer 
  3. (A|A) (O|A) (E|AS/A) The Transport layer
  4. (A|A) (O|A) (E|AS/A) The Network layer / Internet Layer
  5. (A|A) (O|A) (E|AS/A) The Link layer
  6. Extension Activities

CS53 : Clients and servers    

A complex and totally open-ended introduction to the world of the client / server model. Yikes!

Create simple HTML, CSS and Javascript pages
- Understand their structure
Search engine indexing
Describe the concept of clients and servers and set up some simple servers
- HTTP server
- Websockets server
- Database server
Create simple serverside scripts (PHP)
- Assess the benefits / drawbacks of client side and server side scripting
Access content in databases using serverside scripts
- CRUD (Create / Retrieve / Update / Delete)
- REST enables CRUD to be mapped to database functions
Use AJAX to add interactivity to webpages
Use JSON and XML
- Describe the differences between them
Use the Websocket protocol to implement simple client server systems
  1. (O|AS/A) HTML, CSS and Javascript
  2. (O|A) Search engines
  3. (A|A) (O|A) (E|A) Clients and Servers 
    Application Programming Interface
  4. (A|A) Websockets 
    CRUD and REST Protocols
    (O|A) JSON and XML
  5. Extension activities

CS54 : Keeping computers safe █  

Describe how firewalls work
- packet filtering
- proxy servers
- stateful inspection
Discuss hacking
- Black hat
- White hat
- Penetration testing
Describe the process of symmetric and asymmetric (private / public) key exchange
Explain how digital certificates and digital signatures are obtained and used
Discuss worms, trojans and viruses, denial of service,spyware, SQL injection, phishing / pharming
- The vulnerabilities they exploit
- How code quality, monitoring and protection and be used to address these issues
Describe security methods that can be used to protect networks
- Biometric technology
  1. (E|AS/A) (A|A) (O|A) Threats - an introduction
  2. (E|A) (A|A) (O|A) Firewalls 
  3. (E|A) (A|A) (O|A) Hacking 
  4. (E|A) (A|A) (O|A) Symmetric and Asymmetric Encryption
  5. (E|A) (A|A) (O|A) Malware 
  6. (E|A) (A|A) (O|A) Biometric Security 
  7. Extension Activities