Section 4.13 underpins all of computer science — the systematic process of taking a complex problem and converting it into a working, tested computer solution. AQA 7517 requires students to understand and apply a structured problem-solving methodology.
Clearly define what the problem is. Identify inputs, outputs, processes, and constraints. A vague spec leads to a wrong solution. Produces a requirements document.
Break the problem into smaller, more manageable sub-problems. Each sub-problem can be solved independently. Makes complex problems tractable. Also called divide and conquer or top-down design.
Remove unnecessary detail and identify only the essential features of the problem. Focus on WHAT the system does, not HOW. Two types: procedural abstraction (hide implementation) and data abstraction (hide data representation).
Design a step-by-step method to solve each sub-problem. Use pseudocode, flowcharts, or structure diagrams. Consider efficiency — time and space complexity. Choose appropriate data structures and algorithms.
Convert the algorithm into working code. Apply coding standards, documentation, and modular design (functions/procedures). Follow the spec from step 1.
Verify the solution works correctly. Use: normal data (valid inputs), boundary data (edge cases), erroneous data (invalid inputs). Types: unit testing, integration testing, system testing.
Assess whether the solution meets the original specification. Consider: efficiency, maintainability, usability, robustness. Identify limitations and suggest improvements.
Decomposition splits a complex problem into smaller sub-problems, each of which can be solved independently, tested in isolation, and reused in other projects. A structure diagram (hierarchy chart) shows decomposition visually.
| Type | Description | Example |
|---|---|---|
| Procedural abstraction | A function hides its internal implementation — caller only needs to know what it does | sort(list) — caller doesn't need to know which algorithm |
| Data abstraction | Data structures hide their internal representation behind an interface | A stack with push/pop/peek — caller doesn't know if array or linked list |
| Test type | Data used | Purpose |
|---|---|---|
| Normal | Valid, typical inputs within expected range | Confirm basic functionality works |
| Boundary | Values at the edge of valid range (min, max, min-1, max+1) | Check edge cases — often where bugs lurk |
| Erroneous | Invalid inputs (wrong type, out of range) | Verify system handles bad input gracefully |
8 questions · instantly marked · AQA 7517 standard
| Term | Definition |
|---|
10 questions · 10 minutes