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! AQA - (A|AS/A) - Teach this topic at AS and A Level - (A|A) - Teach this topic at A Level only OCR - (O|AS/A) - Teach this topic at AS and A Level - (O|A) - Teach this topic at A Level only Eduqas - (E|AS/A) - Teach this topic at AS and A Level - (E|A) - Teach this topic at A Level only
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.
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 - RFID - 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
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.
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
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.
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)
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.
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
Ah, yes. A wildly pixelated Ben introduces us to the colourful world of bitmap images and bitmap encoding. 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.
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.
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
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
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 ... - equal, not equal, less than, greater than, less than or equal to , greater than or equal to Understand what the 'answer' to comparisons 'looks like' and what it means.
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)
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.
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
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
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
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.
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)
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!
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
In this section, we will be learning some simple skills in the field of string handling. That's it. - 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
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.
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
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. 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
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. Explain how to implement the Caesar cipher (poor) Explain how to implement the Vernam cipher (excellent) Compare encryption techniques to assess their effectiveness.
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'. 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
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
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). - 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)
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. Explain Interrupt Service Routines (ISR)
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 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
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. - 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 - SSID - 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
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. - 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
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. Explain the need for computer languages to have an unambiguous syntax
The way we do maths is not the way that computers do it. In this topic, I'll change the way you think ... Convert simple infix expressions into RPN (postfix) and vice versa
Defining formal languages is a tricky business. We need another language to do it; a metalanguage. Crazy. Formulate simple production rules Explain why BNF can represent some languages that cannot be representing with regular expressions
A regular expression is a shorthand way of representing a set of strings which fit within a certain language. 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
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! 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
A famous online encyclopedia once said, "For recursion, see recursion". - General case - Base case Be able to solve problems using recursive techniques
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. - 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
Stacks and queues exist in all walks of life. We see them everywhere. They are also very useful in computer science as we are all about to learn. Perform operations on stacks - Push - Pop - Peek or top - Test for empty stack - Test for full stack Understand how the stack frame is used to store return addresses, parameters and local variable values 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
In this section we will consider two very important data structures - graphs and trees. - 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
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 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.
Humans are always searching for more efficient ways of solving problems. Enter BigO ... 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
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. 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.
Vectors - it's a bit maths. - 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
Bitmap images are OK but sometimes, only a vectorised one will do! - 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
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.
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
It's OK connecting computers together in a local environment, but it's much more fun (and potentially quite dangerous) communicating with other computers around the globe. But how does that even work? 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
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) - TCP - DHCP - UDP 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
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
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
|