About the Course

This web page contains the topics in the order given by the exam board. If you are new to programming please read through the GCSE course programming paper topics first.

Full Course Specification

Click here to download the full specification from OCR.

Past Papers

Click here for past papers and mark schemes from OCR.


Paper 1: Computer Systems

1.1 Structure and function of the processor

1.1.1 The characteristics of contemporary processors, input, output and storage device

(a) The Arithmetic and Logic Unit; ALU, Control Unit and Registers (Program Counter; PC, Accumulator; ACC, Memory Address Register; MAR, Memory Data Register; MDR, Current Instruction Register; CIR). Buses: data, address and control: how this relates to assembly language programs.

(b) The Fetch-Decode-Execute Cycle; including its effects on registers.

(c) The factors affecting the performance of the CPU: clock speed, number of cores, cache.

(d) The use of pipelining in a processor to improve efficiency.

(e) Von Neumann, Harvard and contemporary processor architecture


1.1.2 Types of processor

(a) The differences between and uses of CISC and RISC processors.

(b) GPUs and their uses (including those not related to graphics).

(c) Multicore and Parallel systems.


1.1.3 Input, output and storage

(a) How different input, output and storage devices can be applied to the solution of different problems.

(b) The uses of magnetic, flash and optical storage devices.

(c) RAM and ROM.

(d) Virtual storage.

STRUCTUREAND FUNCTION OF THE PROCESSOR

1.2 Software and Software Development

1.2.1 Systems Software

(a) The need for, function and purpose of operating systems.

(b) Memory Management (paging, segmentation and virtual memory).

(c) Interrupts, the role of interrupts and Interrupt Service Routines (ISR), role within the Fetch-Decode-Execute Cycle.

(d) Scheduling: round robin, first come first served, multi-level feedback queues, shortest job first and shortest remaining time.

(e) Distributed, embedded, multi-tasking, multi-user and Real Time operating systems.

(f) BIOS.

(g) Device drivers.

(h) Virtual machines, any instance where software is used to take on the function of a machine, including executing intermediate code or running an operating system within another.

Systems software


1.2.2 Applications Generation

(a) The nature of applications, justifying suitable applications for a specific purpose.

(b) Utilities.

(c) Open source vs closed source.

(d) Translators: Interpreters, compilers and assemblers.

(e) Stages of compilation (lexical analysis, syntax analysis, code generation and optimisation).

(f) Linkers and loaders and use of libraries.

Application Generation


1.2.3 Software Development

(a) Understand the waterfall lifecycle, agile methodologies, extreme programming, the spiral model and rapid application development.

(b) The relative merits and drawbacks of different methodologies and when they might be used.

(c) Writing and following algorithms.

SOFTWARE DEVELOPMENT


1.2.4 Types of Programming Language

(a) Need for and characteristics of a variety of programming paradigms.

(b) Procedural languages.

(c) Assembly language (including following and writing simple programs with the Little Man Computer instruction set). See appendix 5d.

(d) Modes of addressing memory (immediate, direct, indirect and indexed).

(e) Object-oriented languages (see appendix 5d for pseudocode style) with an understanding of classes, objects, methods, attributes, inheritance, encapsulation and polymorphism.


1.3 Exchanging data


1.3.1 Compression, Encryption and Hashing

(a) Lossy vs Lossless compression.

(b) Run length encoding and dictionary coding for lossless compression.

(c) Symmetric and asymmetric encryption.

(d) Different uses of hashing.

Compression, Encryption and Hashing


1.3.2 Databases

(a) Relational database, flat file, primary key, foreign key, secondary key, entity relationship modelling, normalisation and indexing. See appendix 5f of the specification.

(b) Methods of capturing, selecting, managing and exchanging data.

(c) Normalisation to 3NF.

(d) SQL – Interpret and modify. See appendix 5d of the specification.

(e) Referential integrity.

(f) Transaction processing, ACID (Atomicity, Consistency, Isolation, Durability), record locking and redundancy.

DATABASES


1.3.3 Networks

(a) Characteristics of networks and the importance of protocols and standards.

(b) The internet structure:

  • The TCP/IP Stack.
  • DNS
  • Protocol layering.
  • LANs and WANs.
  • Packet and circuit switching.

(c) Network security and threats, use of firewalls, proxies and encryption.

(d) Network hardware.

(e) Client-server and peer to peer.

NETWORKS


1.3.4 Web Technologies

(a) HTML, CSS and JavaScript. See appendix 5d of the specification.

(b) Search engine indexing.

(c) PageRank algorithm.

(d) Server and client side processing.

Web Technologies


1.4 Data types, data structures and algorithms

1.4.1 Data Types

(a) Primitive data types: integer, real/floating point, character, string and Boolean.

(b) Represent positive integers in binary.

(c) Use of sign and magnitude and two’s complement to represent negative numbers in binary.

(d) Addition and subtraction of binary integers.

(e) Represent positive integers in hexadecimal.

(f) Convert positive integers between binary, hexadecimal and denary.

(g) Representation and normalisation of floating point numbers in binary.

(h) Floating point arithmetic, positive and negative numbers, addition and subtraction.

(i) Bitwise manipulation and masks: shifts, combining with AND, OR, and XOR.

(j) How character sets (ASCII and UNICODE) are used to represent text.


1.4.2 Data Structures

(a) Arrays (of up to 3 dimensions), records, lists, tuples.

(b) The following structures to store data: linked-list, graph (directed and undirected), stack, queue, tree, binary search tree, hash table.

(c) How to create, traverse, add data to and remove data from the data structures mentioned above. (NB this can be either using arrays and procedural programming or an object-oriented approach).

Data Structures


1.4.3 Boolean Algebra

(a) Define problems using Boolean logic. See appendix 5d.

(b) Manipulate Boolean expressions, including the use of Karnaugh maps to simplify Boolean expressions.

(c) Use the following rules to derive or simplify statements in Boolean algebra: De Morgan’s Laws, distribution, association, commutation, double negation.

(d) Using logic gate diagrams and truth tables. See appendix 5d.

(e) The logic associated with D type flip flops, half and full adders.

BOOLEAN ALGEBRA


1.5 Legal, moral, cultural and ethical issues

(a) The Data Protection Act 1998.

(b) The Computer Misuse Act 1990.

(c) The Copyright, Design and Patents Act 1988.

(d) The Regulation of Investigatory Powers Act 2000.

1.5.2 Moral and Ethical Issues

The individual moral, social, ethical and cultural opportunities and risks of digital technology:

  • Computers in the workforce.
  • Automated decision making.
  • Artificial intelligence.
  • Environmental effects.
  • Censorship and the Internet.
  • Monitor behaviour.
  • Analyse personal information.
  • Piracy and offensive communications.
  • Layout, colour paradigms and character sets. LEGAL, MORAL AND ETHICAL

Paper 2: Algorithms and Programming

2.1.1 Thinking Abstractly

(a) The nature of abstraction.

(b) The need for abstraction.

(c) The differences between an abstraction and reality.

(d) Devise an abstract model for a variety of situations.

2.1.2 Thinking Ahead

(a) Identify the inputs and outputs for a given situation.

(b) Determine the preconditions for devising a solution to a problem.

(c) The nature, benefits and drawbacks of caching.

(d) The need for reusable program components.

2.1.3 Thinking Procedurally

(a) Identify the components of a problem.

(b) Identify the components of a solution to a problem.

(c) Determine the order of the steps needed to solve a problem.

(d) Identify sub procedures necessary to solve a problem.

2.1.4 Thinking Logically

(a) Identify the points in a solution where a decision has to be taken.

(b) Determine the logical conditions that affect the outcome of a decision.

(c) Determine how decisions affect flow through a program.

2.1.5 Thinking Concurrently

(a) Determine the parts of a problem that can be tackled at the same time.

(b) Outline the benefits and trade offs that might result from concurrent processing in a particular situation.

Find out more..

text

Find out more on my Computational Thinking webpage or Isaac Computer Science.


2.2.1 Programming Techniques

(a) Programming constructs: sequence, iteration, branching.

(b) Recursion, how it can be used and compares to an iterative approach.

(c) Global and local variables.

(d) Modularity, functions and procedures, parameter passing by value and by reference.

(e) Use of an IDE to develop/debug a program.

(f) Use of object-oriented techniques including Polymorphism.


2.2.2 Computational Methods

(a) Features that make a problem solvable by computational methods.

(b) Problem recognition.

(c) Problem decomposition.

(d) Use of divide and conquer.

(e) Use of abstraction.

(f) Learners should apply their knowledge of:

  • backtracking
  • data mining
  • heuristics
  • performance modelling
  • pipelining
  • visualisation to solve problems

text


2.3.1 Algorithms

(a) Analysis and design of algorithms for a given situation.

(b) The suitability of different algorithms for a given task and data set, in terms of execution time and space.

(c) Big O notation (constant, linear, polynomial, exponential and logarithmic complexity).

(d) Comparison of the complexity of algorithms.

(e) Algorithms for the main data structures:

(f) Standard algorithms (bubble sort, insertion sort, merge sort, quick sort), Dijkstra’s shortest path algorithm, A* algorithm, binary search and linear search).


Excellent Websites for Revision and Example Code

text text