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)