Study Notes

Overview
Problem Analysis is the bedrock of computer science. It's not about coding; it's about thinking. In this section of the OCR specification (3.1), you'll learn the essential techniques that every programmer uses before writing a single line of code. These are decomposition, abstraction, and algorithmic thinking. Mastering these skills is crucial because they are assessed in almost every programming-based question. Examiners are looking for candidates who can systematically deconstruct a complex scenario into a logical, solvable plan. This guide will teach you the precise definitions that earn AO1 marks and the application techniques that secure the higher AO2 and AO3 marks. You'll see how breaking down a problem to build a solution is a skill that connects to every other topic, from programming fundamentals to database design.
Key Concepts
Concept 1: Decomposition
Decomposition is the art of breaking down a complex problem into smaller, more manageable parts. This is the first step in tackling any large-scale project. Instead of being overwhelmed by a huge task, you create a series of smaller, self-contained sub-problems that can be solved independently. For the exam, you must use the OCR-approved definition: "breaking down a complex problem into smaller, manageable parts." Vague answers like "making it simpler" will not be awarded marks.
Example: Imagine you are asked to create a simple game like 'Hangman'. A decomposed structure might look like this:
- Main Game Logic: Controls the overall flow.
- Word Management: Selects a random word from a list.
- User Input: Gets a letter guess from the player.
- Guess Checking: Checks if the guessed letter is in the word.
- Display Update: Shows the updated word (with correctly guessed letters) and the list of incorrect guesses.
- Win/Loss Condition: Checks if the player has won or lost the game.
By solving each of these smaller problems, you build the complete game. Examiners often test this by asking for a structure diagram, which shows the hierarchy of tasks.

Concept 2: Abstraction
Abstraction is the process of removing unnecessary detail to focus on the essential characteristics of a problem. It's about filtering out the noise to concentrate on what truly matters for the solution. Think of it as creating a simplified model of a real-world object or system. This is a vital skill because it allows us to manage complexity. The London Underground map is a classic example of abstraction: it removes all the roads, parks, and buildings to show only the essential information—the stations, lines, and their connections.
Example: If you are designing a system to model students in a school, you need to decide what information is essential. You would likely keep student_id, name, date_of_birth, and tutor_group. You would abstract away details like hair_colour, favourite_food, or height, as they are irrelevant for a school administration system.

Concept 3: Algorithmic Thinking & The IPO Model
Algorithmic thinking is the process of developing a step-by-step solution to a problem. It involves identifying the exact sequence of instructions a computer must follow to achieve a specific outcome. A powerful tool for this is the Input-Process-Output (IPO) model. Before writing an algorithm, you should always define:
- Input: What data does the algorithm need to start?
- Process: What calculations or manipulations will be performed on the data?
- Output: What result will the algorithm produce?
Using an IPO table helps ensure you haven't missed any crucial steps and is a fantastic planning tool that examiners credit.

Mathematical/Scientific Relationships
This topic is conceptual and does not involve mathematical formulas. The key relationships are logical, focusing on how problems are structured and deconstructed. The primary models are the hierarchical nature of decomposition and the filtering process of abstraction.
Practical Applications
- Software Development: Large applications like Microsoft Word or social media platforms are built by huge teams, each working on decomposed modules (e.g., one team on the user interface, another on the database). Abstraction is used in creating software libraries and APIs, where complex internal workings are hidden from the end-user.
- Game Design: A game world is an abstraction. The physics engine simplifies real-world physics, and character models are abstractions of real beings. The game itself is decomposed into levels, quests, and character classes.
- Website Design: A website is decomposed into different pages (Home, About, Contact) and functional components (navigation bar, footer, contact form).
