Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Welcome to the unofficial textbook for OCR A Level Computer Science (h446).
This book is actually just my notes organised in a way that is somewhat semblent of a textbook.

Please fact check a solid portion of the content against the spec, its very likely that information here is NOT what the exam board wants.

Important

Please note that this book is under HEAVY construction since I’m still going through the spec myself lol I am currently working on: mdBook

Paper 1: Content of Computer systems

This side of the exam focuses on the CPU, applications, programming techniques, programming languages, etc.

1.1 Systems architecture

1.1.1 Structure and function of the processor

1.1.2 Types of processor

1.1.3 Input, output and storage

1.2 Software and software development

1.2.1 Memory and storage technologies

1.2.2 Applications generation

Stages of compilation

Compilation is split into several stages:

  • Lexical analysis: The source code is tokenised into a stream of tokens, which are the basic building blocks of the language (e.g. keywords, identifiers, literals, operators, etc.).
  • Syntax analysis: The stream of tokens is parsed into a syntax tree, which represents the structure of the program according to the grammar of the language.
  • Semantic analysis: The syntax tree is checked for semantic errors (e.g. type checking, variable declaration, etc.) and annotated with additional information (e.g. symbol tables, type information, etc.).
  • Intermediate code generation: An intermediate representation of the program is generated, which is often a lower-level representation that is easier to optimize and translate into machine code.
  • Optimization: The intermediate code is optimized to improve performance, reduce memory usage,or achieve other goals (e.g. inlining, loop unrolling, dead code elimination, etc.).
  • Code generation: The optimized intermediate code is translated into machine code or assembly language, which can be executed by the target platform.

1.2.3 Software development

SDLCs

When developing software, teams will often utilise different software development lifecycles (SDLCs) in order to organise and schedule development.

Stages of an SDLC

SDLCs are generally split into a few common stages to describe the different stages of development during a project’s lifecycle.

Analysis

In this stage, the stakeholders will first provide the requirements for the finished product. These requirements will be used to

  • Define the problem
  • Estimate the feasibility of the project
  • Deciding on the scope of the project
  • Determining profitability

The point of this stage is to understand the problem provided by the stakeholders, decide whether the project is worth or possible undertaking, and what they want the finished product to be able to do.
This is essentially the same as the analysis section of the programming project.

Design

Development

Testing

Implementation

Evaluation

Maintenance

System development methodologies

The above stages can be grouped together in different ways to create System development methodologies, which determine how teams will approach the development of a project.

Caution

The following sections are GPT-5-mini generated for times sake since I have an assessment tmr lmao
Keep this in mind, and I will rewrite it properly at some point. For now, reference my SLR slides https://docs.google.com/presentation/d/1dP9q9EwFfof6ApVjSG8sWpLyQsiScMqiZhKOeU_q-qg/edit?slide=id.g3aeea336b2d_0_1#slide=id.g3aeea336b2d_0_1

Waterfall

Waterfall is a linear, sequential SDLC where each stage must be completed before the next begins. Typical stages include requirements, design, implementation, testing, deployment and maintenance. Waterfall suits projects with well‑defined, stable requirements.

  • Advantages: clear milestones and documentation, easy to manage, predictable schedule for fixed requirements.
  • Disadvantages: inflexible to requirement changes, late discovery of design flaws, limited stakeholder feedback until late stages.

Spiral

The Spiral model is an iterative, risk‑driven approach that combines elements of design and prototyping. Each iteration (or “spiral”) includes planning, risk assessment, engineering and evaluation. Successive spirals refine requirements and design while addressing identified risks.

  • Advantages: explicit risk management, iterative refinement, suitable for large or high‑risk projects.
  • Disadvantages: can be complex and costly to manage; requires expertise in risk analysis.

Rapid Application Development (RAD)

RAD emphasises rapid prototyping and active user involvement rather than lengthy upfront planning. Development proceeds in short cycles producing prototypes that are refined into the final system with frequent user feedback.

  • Advantages: fast delivery of functional prototypes, strong user involvement, flexible to requirement changes.
  • Disadvantages: less suitable for very large systems, potential for scope creep, depends on availability of end users.

Agile

Agile describes a family of iterative, incremental methods (for example, Scrum) that prioritise customer collaboration, working software and responsiveness to change. Work is organised into short iterations (sprints) with regular review and adaptation.

  • Advantages: frequent delivery of working software, continuous customer feedback, adaptable to evolving requirements.
  • Disadvantages: requires disciplined teams and stakeholder engagement; less predictability for fixed‑price contracts.

🔥Extreme Programming🔥

Extreme programming is a subset of the Agile methodology that emphasises engineering practices to improve code quality and responsiveness: pair programming, test‑driven development (TDD), continuous integration, simple design and small frequent releases. XP promotes close collaboration with customers and very short feedback loops.

  • Advantages: high code quality, rapid response to change, strong developer collaboration.
  • Disadvantages: intensive team practices can be demanding to sustain; requires cultural buy‑in.

Sources and further reading

  • OCR, “Specification: A Level GCE Computer Science H446” https://www.ocr.org.uk/Images/170844-specification-accredited-a-level-gce-computer-science-h446.pdf
  • Agile Alliance, “What is Agile?” https://www.agilealliance.org/agile101/
  • Barry Boehm, “A Spiral Model of Software Development and Enhancement” (original Spiral model paper)

1.2.4. Types of Programming Language

1.3 Exchanging data

1.3.1 Compression, Encryption and Hashing

1.3.2 Databases

1.3.3 Networks

1.3.4 Web Technologies

1.4 Data types, data structures and algorithms

1.4.1 Data Types

1.4.2 Data Structures

1.4.3 Boolean Algebra

1.5 Legal, moral, cultural and ethical issues

1.5.1 Computing related legislation

1.5.2 Moral and ethical Issues

Paper 2 — Algorithms and programming