# A-level Computing/OCR/Glossary
## A

Accumulator (ACC) - Register that stores the results of calculations in the arithmetic logic unit.
ACID Rules - A set of rules that protect the integrity of a database. These are atomicity, consistency, isolation and durability.
Address Bus - The pathway along which the memory address being loaded from or saved to is transported.
Adjacency List - A list of all the nodes that make up a graph that tells you which other nodes it connects to directly and the lengths of the paths to them.
Agile Software Development - A method of developing software that aims to deliver rapid and flexible responses to change as well as strong team cohesion and communication.
Algorithm - A set of instructions that can be carried out to solve a problem.
Analysis - The third stage of the waterfall model, in which research is done into the current system and a new system is proposed, along with its requirements.
Application Layer - The part of the TCP/IP stack that is responsible for getting the data and encoding it.
Arithmetic Logic Unit (ALU) - The CPU component responsible for performing mathematical calculations and logical comparisons.
Array/Vector Processor - A processor which allows one instruction to be applied to multiple pieces of data at once. This is also known as Single Instruction Multiple Data processing, or SIMD for short.
Assembler - Software that translates assembly language into machine code.
Assembly Language - A low-level programming language where instructions have a one-to-one relationship with machine code and are made up of opcodes and operands.
Asymmetric Encryption - Encrypting data using two keys, one public and one private, so only the intended recipient of data can decrypt it even if someone were to intercept messages whilst the keys are being set up.
Atomicity - A transaction in a database will either be fully carried out or not carried out at all.
Attribute - A variable linked to an object, found in object oriented code.

## B

Basic Input Output System (BIOS) - A small program stored on read-only memory, used when the computer is turning on. It is responsible for POST (Power On Self Test) and loads the kernel into memory.
Binary Search - A searching algorithm that acts on an ordered list of data, repeatedly dividing it in half and determining which half the value it is searching for is in.
Boolean - Data type that stores one of two states: true or false.
Boot File - Stores settings that are needed when the OS is loading.
Bubble Sort - A sorting algorithm that involves making passes through the list, inspecting two elements at once and swapping them if they're out of order.
Bus - A collection of wires along which data is transmitted between components of a computer.
Bus Network - A network in which signals travel along a central backbone that all nodes are connected to and which has terminators at each end.

## C

Cache Memory - Very high speed memory built into the CPU. A form of primary storage.
Circuit Switching - A way of sending data by which a physical connection is made between two nodes, locking down the nodes on the path between them, and data is sent in a continuous stream.
Class - A template for an object, found in object oriented code.
Client-Server Network - A network where a server performs services for client computers.
Character - Data type that stores a single letter, digit or other character.
Clock Speed - The number of FDE cycles that a CPU can perform per second.
Closed Source - Compiled code is provided to the user so that they can't see the source code.
Co-processor - An additional processor that runs alongside the CPU, which is optimized for a specific task.
Compiler - Software that translates a whole program into an executable program, which can be run without the need for a translator.
Complex Instruction Set Computing (CISC) - A wide array of instructions are available, including those that take multiple clock cycles.
Consistency - A transaction in a database will always take the database from one valid state to another.
Control Unit (CU) - The CPU component that decodes instructions and coordinates components of the computer.
Control Bus - The pathway along which the control unit sends signals to keep components in sync.
CRUD - The four basic functions to perform on a database: create, read, update and delete.
Current Instruction Register (CIR) - Register used to store the most recently fetched instruction while it is being decoded and executed.

## D

Database - A persistent, organised store of data.
Database Management System (DBMS) - A piece of software used to create and manage a database. Among other things it allows CRUD and enforces ACID rules.
Database Normalisation - The process of organising a database to minimise redundant data and improve data integrity.
Data Bus - Half-duplex path along which data is transmitted to and from the CPU.
Data Encapsulation - When, in object oriented programming, attributes of an object can only be changed through the use of its public methods.
Declarative Programming - A programming paradigm in which the programmer tells the computer what to do, but not how to do it.
Design - The fourth stage of the waterfall model, in which how the new system will be created and how it will work is planned.
Device Driver - Software used to communicate with peripheral devices.
Dictionary Encoding - A form of lossless compression that involves creating a dictionary key with which to encode the data. This saves space where data is repeated.
Direct Addressing - A type of memory addressing in which the operand represents the location of the data in memory.
Distributed OS - An operating system that controls and coordinates multiple computers to work together.
Domain Name System (DNS) - The system by which you can input a user-friendly URL and have it converted to an IP address so that you can access a website.
Durability - Once a transaction in a database is complete, it will be permanently stored, even if, for example, power is lost.

## E

Embedded OS - An operating system that is optimised for a specific, narrow task within an embedded system.
Encryption - The process that is performed on data to make it so that only the intended recipient can read it.
Evaluation - The fifth stage of the waterfall model, in which the system is tested.
Extreme Programming (XP) - An iterative method of developing software in which a user is always present to provide 'user stories'. Pair programming is utilised.

## F

Feasibility Study - The second stage of the waterfall model, in which whether the project's aims are possible to achieve.
Fetch-decode-execute Cycle (FDE) - The process of retrieving an instruction from memory, decoding it and performing it, which computers must perform many times every second.
Field - A column in a database, which represents one aspect of the thing about which data is being stored, such as name or age.
File Allocation Table (FAT) - A map of where files are stored, along with metadata about them.
First Come First Serve - A scheduling algorithm that places jobs into a queue to get to the running state.
Firewall - Hardware or software that controls what is allowed into and out of a network.
Fixed Length Fields - A field that is always the same number of bytes long, even if some of these bits are redundant.
Flash Memory - Very fast, but expensive memory that can be written to and read from electronically.
Flat File Database - A database made up of just one table.
Foreign Key - What we call the primary key of one table when it is used in another table.
Functional Programming - A declarative programming paradigm in which functions have no side effects, so given the same parameters, will always give the same output.

## G

Graphics processing unit (GPU) - A specialised processor optimized to perform graphics calculations.

## H

Harvard Architecture - A computer architecture in which data and instructions are stored in separate locations, with separate buses to carry each.
Hashing Algorithms - A one-way process that can be applied to a plain-text password, returning an irreversible hash.
Hash Function - An algorithm that generates a memory address, from an identifier, to store an item of data.
Highest Priority First - A scheduling algorithm by which jobs are assigned priorities and the one with the highest priority is done first.
Hub - A hardware component that acts within a network, copying packets and sending them to all possible destinations.

## I

Immediate Addressing - A type of memory addressing in which the operand is the data, so nothing needs to be fetched from memory.
Indexed Addressing - A type of memory addressing in which the operand must be added to the contents of the index register to get the memory location of the data.
Indexing - The process of dividing up a sequential file into sections and producing a file that tells the computer where each section begins so the file can be searched faster.
Indirect Addressing - A type of memory addressing in which the operand gives a memory location that holds the memory location of the data.
Inheritance - The ability of a class in object oriented code to take attributes and methods from a parent class.
Input and Output Devices - The medium by which a computer gets information from the user and gives the user information back.
Insertion Sort - A sorting algorithm that involves creating a new list and putting items into their correct relative position one by one.
Installation - The sixth stage of the waterfall model, in which the new system is brought into use.
Integer - Data type that stores a whole number.
Internet Layer - The part of the TCP/IP stack that is responsible for IP addressing and packet routing.
Interpreter - Software that translates code line-by-line as it is run.
Interrupt - A signal sent to the CPU telling it to stop its current task and instead perform the Interrupt Service Routine (ISR).
IP Addressing - Giving each device on a network a unique address so that messages get to their intended recipient.
Isolation - Transactions in a database must happen one at a time, they cannot interfere with each other.

## K

Kernel - The lowest level of the operating system, which interacts directly with the hardware.

## L

Layering - Organising a problem into layers that only communicate with the layers immediately below and above them. This is frequently used in networking, for which the layers could be application, network and physical.
Library - Repository of pre-written code which developers can reuse.
Linear Search - A searching algorithm that steps through a list of values one by one until it finds the correct one.
Linker - Software that enables libraries to be used in compiled code. Static linkers combine the libraries with code when it is compiled, whereas dynamic linkers load the libraries when the code is run.
Link Layer - The part of the TCP/IP stack that is responsible for passing data to and from the physical network.
Loader - Software responsible for loading a program into memory.
Local Area Network (LAN) - A network that is contained within a single geographical location.
Logical View - The database view that looks at the tables, queries and reports that make up a database.
Lossless Compression - Making a file smaller in such a way that no data is lost and the original file can be reproduced exactly from the compressed file.
Lossy Compression - Making a file smaller in such a way that some data is lost, meaning the original file cannot be recovered.

## M

MAC Address - The unique identifier given to a device by its manufacturer which is used when communicating on a network.
Magnetic Storage - High capacity storage medium that uses tiny magnets to hold data.
Maintenance - The final stage of the waterfall model, in which the project is improved upon, updated or fixed.
Memory Address Register (MAR) - Register used to hold the address of the memory location currently being fetched from or stored to.
Memory Data Register (MDR) - Register used to hold the data or instruction that is about to be used in the CPU or stored in memory. Acts as a buffer between the CPU and storage.
Method - A procedure associates with an object, found in object oriented code.
Metropolitan Area Network (MAN) - A city-wide network.
Multi-level Feedback Queues - A scheduling algorithm in which multiple queues are used with different priorities and jobs can move between queues.
Multi-tasking OS - An operating system that allows multiple tasks to be carried out seemingly simultaneously.
Multi-user OS - An operating system that allows multiple users to access the system at once.

## N

Network - A collection of connected computers.
Network Interface Controller (NIC) - The hardware component that connects a device to a network, allowing it to send and receive data.
Non-volatile Memory - Data stored persists even when power is lost.
Number of Cores - The number of distinct processing units within a CPU, which can process instructions concurrently.

## O

Object - An instance of a class, found in object oriented code. It has methods and attributes.
Object Code - The name given to code once it has been compiled.
Object Oriented Programming - A programming paradigm in which a program is made up of objects that interact with each other and have methods and attributes. Inheritance, polymorphism and overloading are used.
Opcode - The part of an instruction that tells the computer what data an action should be performed on, for example '5' in 'LDA 5'.
Open Source - Source code is public.
Open Systems Interconnection (OSI) Model - A model for the different layers of a communication system: application, presentation, session, transport, network, data link and physical.
Operating System (OS) - Software that manages the operation of the computer, including managing hardware, programs, security and the user interface.
Optical Storage - Cheap storage medium that uses small marks that can be read by a laser to hold data.
Overloading - When a method in object oriented code will have a different effect depending on the type of data supplied to it.

## P

Packet Switching - A way of sending data in which it is split up into packets which take many routes through a network and is reassembled at the receiving end.
Paging - The process by which memory is split up into equal-sized sections and programs assigned as many pages of memory as they need.
Pair programming - Programmers work in pairs, with one coding whilst the other evaluates the code written.
Peer-to-Peer Network - A network in which each computer has the same status.
Personal Area Network (PAN) - A network that links devices over a very small area, such as Bluetooth headphones.
Physical View - The database view of the how the data is stored.
Pipelining - When the CPU begins fetching and decoding subsequent instructions whilst the current one is being executed.
Polymorphism - When multiple objects act consistently when the same method name is called on them.
Primary Key - A unique identifier for a record in a database
Problem Definition - The first stage of the waterfall model, which involves carefully identifying the problem.
Procedural Programming - An programming paradigm in which instructions are given in sequence and selection, iteration and procedures are used.
Program Counter (PC) - Register that stores the address of the next instruction to be executed.

## Q

Quick Sort - A sorting algorithm that works by repeatedly selecting a pivot value and dividing the list into elements that are greater than the pivot and those that are less than the pivot.

## R

Rapid Application Development (RAD) - An iterative method of developing software which involves producing prototypes with partial functionality and improving upon them based on user feedback.
Random Access Memory (RAM) - Volatile memory in which running programs, including the operating system, are kept.
Read Only Memory (ROM) - Non-volatile memory that cannot be written to.
Real/Float - Data type that stores a number that isn't necessarily a whole number.
Real-time OS - An operating system that will always perform an action within a guaranteed time-frame.
Record - An object, person or action about which data is stored in a database.
Reduced Instruction Set Computing (RISC) - Only a small numbers of instructions are available, each only taking one clock cycle to perform.
Relational Database - A database made up of multiple tables, which are linked by relationships.
Ring Network - A network in which each computer is connected to two others, forming a ring, and data is sent in one direction around them.
Round Robin - A scheduling algorithm in which each job is given a time slice before returning to the back of the queue.
Router - Hardware that connects networks, forwarding packets from one network to another.
Run Length Encoding - A form of lossless compression that involves replacing runs of the same piece of data with the piece of data and the length of the run.

## S

Scalar Processor - A processor that performs one instruction at a time on one piece of data at a time. This is known as Single Instruction Single Data processing, or SISD for short.
Scheduling - The process by which the operating system decides what tasks to give CPU time.
Secondary Key - A non-unique key for a record in a database, used for searching and sorting.
Segmentation - The process by which memory is divided up into sections of varying sizes depending on the size of what's being stored.
Serial File - A file in which records are stored one after the other and are not ordered.
Sequential File - A file in which records are stored in an order, which allows for faster searching.
Shortest Job First - A scheduling algorithm in which the job that will take the least amount of time will be done first.
Shortest Remaining Time - A scheduling algorithm in which the job that is the least time from complete is done first.
Source Code - Code that can be read by humans, generally written in a high level language.
Spiral Model - An iterative method of developing software that focuses on handling risk.
Star Network - A network in which all nodes connect to a central hub or switch.
Storage Area Network (SAN) - A network used for large scale data storage in data-centres.
String - Data type that stores multiple characters.
Structured Query Language (SQL) - A programming language used to manage databases.
Switch - A hardware component that forwards packets within a network towards their destination.

## T

Table - A collection of related data held in a database. It is made up of rows (records) and columns (fields).
TCP/IP Stack - A set of protocols that govern data transmission over a network. It is made up of the application, transport, internet and link layers.
Translator - Software used to convert source code to object code.
Transmission Media - The physical pathway along which data is sent on a network, which is often copper cable, fibre-optic cable or wireless.
Transport Layer - The part of the TCP/IP stack that is responsible for establishing a connection between nodes.

## U

User View - The appearance of a database as seen by the end user.
Utility Program - A small program used to analyse, configure, optimise or maintain a computer. Part of the system software.

## V

Variable Length Field - A field that has no predetermined length.
Virtual Machine - Software with the functionality of a physical machine.
Virtual Memory - An area of the hard drive assigned as 'extra RAM' when there isn't enough RAM to store all running programs.
Virtual Storage - Data is stored on an external server and can be accessed from anywhere. Commonly known as 'cloud storage'.
Volatile Memory - Data stored is lost when power is lost.
Von Neumann Architecture - A computer architecture with a single control unit, using the FDE cycle and with data and instructions stored together.

## W

Waterfall Model - A method of developing software that involves working linearly through a number of stages.
Wide Area Network (WAN) - A network that spans a large geographical area.