Source: https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-16-linkers-loaders-and-libraries

[Revision notes](https://senecalearning.com/en-gb/revision-notes.md) › [A Level](https://senecalearning.com/en-gb/revision-notes/a-level.md) › [Computer Science](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science.md) › [OCR](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr.md) › Linkers, Loaders & Libraries

# Linkers, Loaders & Libraries

Computer Science: OCR A Level, topic 2.2.16

## Linkers, Loaders & Libraries

When programming, we often use libraries built into programming languages to make coding solutions quicker and easier. These are linked in, by linkers, and loaded by loaders when your code runs.

### Libraries

![Libraries](https://image-v2.cdn.app.senecalearning.com/2019-07/5a298ebc-8b4d-4b5f-9c31-2d9901c1b6ae/library-1147815_1920.jpg)

- Libraries exist in most programming languages and offer shorthand ways to achieve a task.
- These libraries are pre-written, compiled, tested and checked pieces of code that developers can rely on to help shorten code.
- Libraries give developers shortcuts to achieve what they want without keep repeating code.
 - For example, the print function in python.

### Linkers

![Linkers](https://image-v2.cdn.app.senecalearning.com/2019-07/01f30b9e-0eef-436a-bb1f-346b6a4679d9/chain-3481377_1920.jpg)

- Linkers are the software responsible for linking libraries to code that uses them. 
 - Libraries can be statically linked or dynamically linked.
- Statically linked libraries are included in the object or machine code when it is compiled.
- This increases the binary footprint of the code, but the library becomes built into the code meaning an end user doesn’t need it to be installed.

### Dynamically linked libraries

![Dynamically linked libraries](https://image-v2.cdn.app.senecalearning.com/2020-08/2ebdd77e-ca6e-4088-b006-67b0b8232043/update-download-computer.jpg)

- Dynamically linked libraries are not built into the code.
- These libraries are loaded in when the object or machine code is passed to the CPU to run, just when it needs it. 
- Dynamically linked libraries mean your binary footprint is smaller, but the library needs to be installed on the computer.

### Loaders

![Loaders](https://image-v2.cdn.app.senecalearning.com/2020-08/1090f27e-cb77-4ef1-9321-3f8263c8b5af/download.png)

- Loaders are a type of program that loads the program you're trying to run.
- Loaders are a part of the operating system that find a good place for object or machine code to sit in memory.
- For statically linked libraries all of the code and the library are loaded into memory, which takes up more room. 
- For dynamically linked libraries, the loader will load the library into memory when the program needs it.

## Test yourself on Linkers, Loaders & Libraries

- Which type of library takes more space in memory when loaded by a loader?

[Practise this topic for free](https://app.senecalearning.com/classroom/course/0427a30a-fd38-4222-9775-2d193021a4a1/section/d28d6150-ab6b-4221-af74-71c9daa7d680/session)

- Previous topic: [2.2.15 Compilation Stages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-15-compilation-stages.md)
- Next topic: [2.3.1 Algorithmic Thinking](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-1-algorithmic-thinking.md)

## Computer Science: OCR A Level contents

### 1 Components of a Computer
- 1.1 Structure & Function of  the Processor
  - [1.1.1 Von Neumann Architecture](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-1-von-neumann-architecture.md)
  - [1.1.2 Registers](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-2-registers.md)
  - [1.1.3 Buses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-3-buses.md)
  - [1.1.4 Fetch, Decode, Execute Cycle](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-4-fetch-decode-execute-cycle.md)
  - [1.1.5 Factors Affecting CPU Performance](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-5-factors-affecting-cpu-performance.md)
  - [1.1.6 Pipelining](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-6-pipelining.md)
  - [1.1.7 CPU Architecture](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-1-7-cpu-architecture.md)
- 1.2 Types of Processors
  - [1.2.1 CISC & RISC](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-2-1-cisc-and-risc.md)
  - [1.2.2 GPUs & Their Uses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-2-2-gpus-and-their-uses.md)
  - [1.2.3 Multicore & Parallel Systems](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-2-3-multicore-and-parallel-systems.md)
- 1.3 Input, Output & Storage
  - [1.3.1 Elements of Computer Systems](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-1-elements-of-computer-systems.md)
  - [1.3.2 Types of Computer Systems](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-2-types-of-computer-systems.md)
  - [1.3.3 How Magnetic Storage Works](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-3-how-magnetic-storage-works.md)
  - [1.3.4 Properties of Magnetic Storage](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-4-properties-of-magnetic-storage.md)
  - [1.3.5 Examples of Magnetic Storage](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-5-examples-of-magnetic-storage.md)
  - [1.3.6 How Optical Storage Works](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-6-how-optical-storage-works.md)
  - [1.3.7 Properties of Optical Storage](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-7-properties-of-optical-storage.md)
  - [1.3.8 Examples of Optical Storage](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-8-examples-of-optical-storage.md)
  - [1.3.9 Types of Optical Disc](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-9-types-of-optical-disc.md)
  - [1.3.10 Random Access Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-10-random-access-memory.md)
  - [1.3.11 Read Only Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-11-read-only-memory.md)
  - [1.3.12 Uses of Flash Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-12-uses-of-flash-memory.md)
  - [1.3.13 Properties of Flash Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-13-properties-of-flash-memory.md)
  - [1.3.14 What to do When We Run Out of Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-14-what-to-do-when-we-run-out-of-memory.md)
  - [1.3.15 How Virtual Memory Works](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/1-3-15-how-virtual-memory-works.md)

### 2 Software & Software Development
- 2.1 Systems Software
  - [2.1.1 Operating Systems](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-1-operating-systems.md)
  - [2.1.2 Managing Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-2-managing-memory.md)
  - [2.1.3 Paging](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-3-paging.md)
  - [2.1.4 Segmentation](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-4-segmentation.md)
  - [2.1.5 Device Management & Drivers](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-5-device-management-and-drivers.md)
  - [2.1.6 Interrupts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-6-interrupts.md)
  - [2.1.7 Interrupt Service Routine (ISR)](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-7-interrupt-service-routine-isr.md)
  - [2.1.8 Scheduling](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-8-scheduling.md)
  - [2.1.9 Types of Scheduling](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-9-types-of-scheduling.md)
  - [2.1.10 Types of Operating System](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-10-types-of-operating-system.md)
  - [2.1.11 BIOS](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-11-bios.md)
  - [2.1.12 Virtual Machines](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-1-12-virtual-machines.md)
- 2.2 Applications Generation
  - [2.2.1 Applications Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-1-applications-software.md)
  - [2.2.2 Utilities](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-2-utilities.md)
  - [2.2.3 Encryption Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-3-encryption-software.md)
  - [2.2.4 Defragmentation Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-4-defragmentation-software.md)
  - [2.2.5 Data Compression Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-5-data-compression-software.md)
  - [2.2.6 Backup Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-6-backup-software.md)
  - [2.2.7 Open Source Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-7-open-source-software.md)
  - [2.2.8 Proprietary Software](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-8-proprietary-software.md)
  - [2.2.9 Licensing Issues](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-9-licensing-issues.md)
  - [2.2.10 Compilers](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-10-compilers.md)
  - [2.2.11 Interpreters](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-11-interpreters.md)
  - [2.2.12 Assemblers](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-12-assemblers.md)
  - [2.2.13 Compiling a Program](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-13-compiling-a-program.md)
  - [2.2.14 Lexical Analysis](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-14-lexical-analysis.md)
  - [2.2.15 Compilation Stages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-15-compilation-stages.md)
  - [2.2.16 Linkers, Loaders & Libraries](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-2-16-linkers-loaders-and-libraries.md)
- 2.3 Software Development
  - [2.3.1 Algorithmic Thinking](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-1-algorithmic-thinking.md)
  - [2.3.2 Waterfall Lifecycle](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-2-waterfall-lifecycle.md)
  - [2.3.3 Waterfall Lifecycle - Strengths & Weaknesses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-3-waterfall-lifecycle-strengths-and-weaknesses.md)
  - [2.3.4 Agile Methodology](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-4-agile-methodology.md)
  - [2.3.5 Agile Methodology - Strengths & Weaknesses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-5-agile-methodology-strengths-and-weaknesses.md)
  - [2.3.6 Extreme Programming](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-6-extreme-programming.md)
  - [2.3.7 Extreme Programming - Strengths & Weaknesses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-7-extreme-programming-strengths-and-weaknesses.md)
  - [2.3.8 Spiral Methodology](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-8-spiral-methodology.md)
  - [2.3.9 Spiral Methodology - Strengths & Weaknesses](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-9-spiral-methodology-strengths-and-weaknesses.md)
  - [2.3.10 Rapid Application Development](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-10-rapid-application-development.md)
  - [2.3.11 RAD - Strengths & Weaknesse](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-3-11-rad-strengths-and-weaknesse.md)
- 2.4 Types of Programming Language
  - [2.4.1 High Level Programming Languages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-1-high-level-programming-languages.md)
  - [2.4.2 Low Level Programming Languages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-2-low-level-programming-languages.md)
  - [2.4.3 Programming Paradigms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-3-programming-paradigms.md)
  - [2.4.4 Procedural Programming Languages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-4-procedural-programming-languages.md)
  - [2.4.5 Assembly](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-5-assembly.md)
  - [2.4.6 Machine Code](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-6-machine-code.md)
  - [2.4.7 Modes of Addressing Memory](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-7-modes-of-addressing-memory.md)
  - [2.4.8 Object-Oriented Languages](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-8-object-oriented-languages.md)
  - [2.4.9 Classes](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-9-classes.md)
  - [2.4.10 Objects](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-10-objects.md)
  - [2.4.11 Encapsulation](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-11-encapsulation.md)
  - [2.4.12 Polymorphism](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/2-4-12-polymorphism.md)

### 3 Exchanging Data
- 3.1 Compression, Encryption & Hashing
  - [3.1.1 Compression](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-1-compression.md)
  - [3.1.2 Run Length Encoding](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-2-run-length-encoding.md)
  - [3.1.3 Dictionary Coding](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-3-dictionary-coding.md)
  - [3.1.4 Encryption](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-4-encryption.md)
  - [3.1.5 Symmetric Encryption](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-5-symmetric-encryption.md)
  - [3.1.6 Hashing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-1-6-hashing.md)
- 3.2 Databases
  - [3.2.1 Records](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-1-records.md)
  - [3.2.2 Databases](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-2-databases.md)
  - [3.2.3 Relational Databases](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-3-relational-databases.md)
  - [3.2.4 Entity Relationship Modelling](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-4-entity-relationship-modelling.md)
  - [3.2.5 Managing Databases](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-5-managing-databases.md)
  - [3.2.6 Normalisation](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-6-normalisation.md)
  - [3.2.7 SQL](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-7-sql.md)
  - [3.2.8 Principles of Data Storage](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-8-principles-of-data-storage.md)
  - [3.2.9 Atomicity, Consistency, Isolation & Durability](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-2-9-atomicity-consistency-isolation-and-durability.md)
- 3.3 Networks
  - [3.3.1 The Benefits of Networks](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-1-the-benefits-of-networks.md)
  - [3.3.2 Network Performance](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-2-network-performance.md)
  - [3.3.3 Types of Networks](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-3-types-of-networks.md)
  - [3.3.4 Network Protocols](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-4-network-protocols.md)
  - [3.3.5 Transmission Protocols](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-5-transmission-protocols.md)
  - [3.3.6 What is the Internet?](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-6-what-is-the-internet.md)
  - [3.3.7 Uniform Resource Locators](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-7-uniform-resource-locators.md)
  - [3.3.8 Domain Name Service](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-8-domain-name-service.md)
  - [3.3.9 Web Hosting](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-9-web-hosting.md)
  - [3.3.10 Layering Concepts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-10-layering-concepts.md)
  - [3.3.11 TCP &. OSI Models](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-11-tcp-and-osi-models.md)
  - [3.3.12 The Advantages of Layering](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-12-the-advantages-of-layering.md)
  - [3.3.13 What's in a Packet?](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-13-whats-in-a-packet.md)
  - [3.3.14 How do Packets get Routed?](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-14-how-do-packets-get-routed.md)
  - [3.3.15 Did my Data Arrive Safely?](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-15-did-my-data-arrive-safely.md)
  - [3.3.16 Network Hardware](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-16-network-hardware.md)
  - [3.3.17 Transmission Media](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-17-transmission-media.md)
  - [3.3.18 Firewalls](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-18-firewalls.md)
  - [3.3.19 Proxies](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-19-proxies.md)
  - [3.3.20 Client-Server Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-20-client-server-model.md)
  - [3.3.21 Advantages of the Client Server Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-21-advantages-of-the-client-server-model.md)
  - [3.3.22 Disadvantages of the Client Server Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-22-disadvantages-of-the-client-server-model.md)
  - [3.3.23 Peer-to-Peer Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-23-peer-to-peer-model.md)
  - [3.3.24 Advantages of the Peer-to-Peer Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-24-advantages-of-the-peer-to-peer-model.md)
  - [3.3.25 Disadvantages of the Peer-to-Peer Model](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-3-25-disadvantages-of-the-peer-to-peer-model.md)
- 3.4 Web Technologies
  - [3.4.1 HTML](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-1-html.md)
  - [3.4.2 CSS](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-2-css.md)
  - [3.4.3 JavaScript](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-3-javascript.md)
  - [3.4.4 Search Engine Indexing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-4-search-engine-indexing.md)
  - [3.4.5 PageRank Algorithm](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-5-pagerank-algorithm.md)
  - [3.4.6 Server & Client-Side Processing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/3-4-6-server-and-client-side-processing.md)

### 4 Data Types, Data Structures & Algorithms
- 4.1 Data Types
  - [4.1.1 Data Types](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-1-data-types.md)
  - [4.1.2 Casting](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-2-casting.md)
  - [4.1.3 Arrays](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-3-arrays.md)
  - [4.1.4 2D Arrays](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-4-2d-arrays.md)
  - [4.1.5 Strings](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-5-strings.md)
  - [4.1.6 Binary](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-6-binary.md)
  - [4.1.7 Sign & Magnitude](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-7-sign-and-magnitude.md)
  - [4.1.8 Binary Addition](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-8-binary-addition.md)
  - [4.1.9 Binary Shifts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-9-binary-shifts.md)
  - [4.1.10 Hexadecimal](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-10-hexadecimal.md)
  - [4.1.11 Using Hexadecimal](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-11-using-hexadecimal.md)
  - [4.1.12 Converting Binary & Hexadecimal](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-12-converting-binary-and-hexadecimal.md)
  - [4.1.13 Converting Denary & Hexadecimal](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-13-converting-denary-and-hexadecimal.md)
  - [4.1.14 Floating Points in Binary](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-14-floating-points-in-binary.md)
  - [4.1.15 Normalisation of Floating Points](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-15-normalisation-of-floating-points.md)
  - [4.1.16 Floating Point Addition](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-16-floating-point-addition.md)
  - [4.1.17 Floating Point Subtraction](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-17-floating-point-subtraction.md)
  - [4.1.18 Bitwise Manipulation - Shifts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-18-bitwise-manipulation-shifts.md)
  - [4.1.19 Bitwise Manipulation - Masks](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-19-bitwise-manipulation-masks.md)
  - [4.1.20 Character Sets](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-20-character-sets.md)
  - [4.1.21 ASCII](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-21-ascii.md)
  - [4.1.22 Unicode](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-1-22-unicode.md)
- 4.2 Data Structures
  - [4.2.1 3D Arrays](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-1-3d-arrays.md)
  - [4.2.2 Linked List](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-2-linked-list.md)
  - [4.2.3 Queues](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-3-queues.md)
  - [4.2.4 Graphs](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-4-graphs.md)
  - [4.2.5 Hash Tables](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-5-hash-tables.md)
  - [4.2.6 Stacks](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-6-stacks.md)
  - [4.2.7 Trees](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-7-trees.md)
  - [4.2.8 Binary Search Trees](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-2-8-binary-search-trees.md)
- 4.3 Boolean Algebra
  - [4.3.1 Binary Systems](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-1-binary-systems.md)
  - [4.3.2 Logic Circuits](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-2-logic-circuits.md)
  - [4.3.3 Boolean Operators](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-3-boolean-operators.md)
  - [4.3.4 Evaluating Expressions](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-4-evaluating-expressions.md)
  - [4.3.5 Boolean Logic](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-5-boolean-logic.md)
  - [4.3.6 Karnaugh Maps](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-6-karnaugh-maps.md)
  - [4.3.7 Boolean Identities](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-7-boolean-identities.md)
  - [4.3.8 Boolean Rules](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-8-boolean-rules.md)
  - [4.3.9 Flip Flops](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-9-flip-flops.md)
  - [4.3.10 Adder Circuits](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/4-3-10-adder-circuits.md)

### 5 Legal, Moral, Cultural & Ethical Issues
- 5.1 Computing Related Legislation
  - [5.1.1 Data Protection Act (1998)](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-1-1-data-protection-act-1998.md)
  - [5.1.2 Computer Misuse Act (1990)](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-1-2-computer-misuse-act-1990.md)
  - [5.1.3 Copyright Designs & Patents Act (1988)](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-1-3-copyright-designs-and-patents-act-1988.md)
  - [5.1.4 Creative Commons Licensing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-1-4-creative-commons-licensing.md)
  - [5.1.5 Regulation of Investigatory Powers Act (2000)](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-1-5-regulation-of-investigatory-powers-act-2000.md)
- 5.2 Moral & Ethical Issues
  - [5.2.1 Online Activity Tracking](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-1-online-activity-tracking.md)
  - [5.2.2 Censorship](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-2-censorship.md)
  - [5.2.3 Positive Cultural Impacts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-3-positive-cultural-impacts.md)
  - [5.2.4 Negative Cultural Impacts](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-4-negative-cultural-impacts.md)
  - [5.2.5 E-Waste](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-5-e-waste.md)
  - [5.2.6 Energy Consumption](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-6-energy-consumption.md)
  - [5.2.7 Positive Environmental Impact](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-7-positive-environmental-impact.md)
  - [5.2.8 Layout, Colour Paradigms & Character Sets](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-8-layout-colour-paradigms-and-character-sets.md)
  - [5.2.9 Computers in the Workplace](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-9-computers-in-the-workplace.md)
  - [5.2.10 Automated Decision-Making](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-10-automated-decision-making.md)
  - [5.2.11 Artificial Intelligence](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-11-artificial-intelligence.md)
  - [5.2.12 Monitoring Behaviour](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-12-monitoring-behaviour.md)
  - [5.2.13 Analysing Personal Information](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-13-analysing-personal-information.md)
  - [5.2.14 Piracy & Offensive Communication](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/5-2-14-piracy-and-offensive-communication.md)

### 6 Elements of Computational Thinking
- 6.1 Thinking Abstractly
  - [6.1.1 Abstraction](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-1-1-abstraction.md)
- 6.2 Thinking Ahead
  - [6.2.1 Inputs & Outputs](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-2-1-inputs-and-outputs.md)
- 6.3 Thinking Procedurally
  - [6.3.1 Decomposition](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-3-1-decomposition.md)
- 6.4 Thinking Logically
  - [6.4.1 Pseudocode](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-4-1-pseudocode.md)
  - [6.4.2 Flow Diagrams](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-4-2-flow-diagrams.md)
- 6.5 Thinking Concurrently
  - [6.5.1 Concurrent Processing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/6-5-1-concurrent-processing.md)

### 7 Problem Solving & Programming
- 7.1 Programming Techniques
  - [7.1.1 Variables & Constants](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-1-1-variables-and-constants.md)
  - [7.1.2 Comments](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-1-2-comments.md)
  - [7.1.3 Inputs & Outputs](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-1-3-inputs-and-outputs.md)
  - [7.1.4 Subroutines](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-1-4-subroutines.md)
  - [7.1.5 Scope](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-1-5-scope.md)
- 7.2 Programming Construction
  - [7.2.1 Integrated Development Environments](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-2-1-integrated-development-environments.md)
  - [7.2.2 The Purpose of Testing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-2-2-the-purpose-of-testing.md)
  - [7.2.3 Types of Testing](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-2-3-types-of-testing.md)
  - [7.2.4 Test Plans](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/7-2-4-test-plans.md)

### 8 Algorithms
- 8.1 Algorithms
  - [8.1.1 Interpreting Algorithms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-1-interpreting-algorithms.md)
  - [8.1.2 Correcting Algorithms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-2-correcting-algorithms.md)
  - [8.1.3 Completing Algorithms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-3-completing-algorithms.md)
  - [8.1.4 Sort Algorithms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-4-sort-algorithms.md)
  - [8.1.5 Bubble Sort](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-5-bubble-sort.md)
  - [8.1.6 Insertion Sort](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-6-insertion-sort.md)
  - [8.1.7 Merge Sort](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-7-merge-sort.md)
  - [8.1.8 Search Algorithms](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-8-search-algorithms.md)
  - [8.1.9 Linear Search](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-9-linear-search.md)
  - [8.1.10 Binary Search](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-10-binary-search.md)
  - [8.1.11 Quick Sort Algorithm](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-11-quick-sort-algorithm.md)
  - [8.1.12 A* Algorithm](https://senecalearning.com/en-gb/revision-notes/a-level/computer-science/ocr/8-1-12-a-algorithm.md)
