Skip to topic
    ← Back to course topics

    Describe the solution — OCR A-Level Computer Science

    Test yourself on Describe the solution with OCR A-Level practice questions.

    Start free

    7 days Premium · Then free forever · No card, no charge

    Describe the solution explained

    This topic focuses on the design phase of the non-exam assessment (NEA) programming project.

    Read the full explanation

    Learners must explain and justify the structure of their solution, describe the logic using algorithms, identify usability features, and specify key data structures and variables.

    What to demonstrate

    1. Systematic breakdown of the problem into smaller parts with justification
    2. Detailed definition of the solution structure
    3. Full description of the solution using accurate algorithms
    Show all 9 objectives
    1. Justification of how algorithms form a complete solution
    2. Description and justification of usability features
    3. Identification and justification of key variables, data structures, and classes
    4. Explanation of necessary validation
    5. Identification and justification of test data for iterative development
    6. Identification and justification of test data for post-development phase

    Describe the solution exam tips

    Topic Overview

    In OCR A-Level Computer Science, 'Describe the solution' is a critical stage within the Systems Development Life Cycle (SDLC) that bridges the gap between understanding a problem and actively building its resolution. Following the analysis phase, where requirements are gathered and refined, this stage involves outlining a comprehensive, detailed plan for how the identified problem will be solved. It's not about writing code, but rather articulating *what* the system will do, *how* it will achieve its objectives, and *what resources* it will require to function effectively.

    The importance of thoroughly describing a solution cannot be overstated. It serves as a blueprint for the subsequent design, implementation, and testing phases, ensuring that all stakeholders (users, developers, project managers) have a shared understanding of the proposed system. A well-articulated solution description minimises misunderstandings, reduces the risk of costly rework, and provides a clear benchmark against which the final product can be evaluated. It's where the abstract ideas from analysis start to take concrete form, detailing aspects like data structures, algorithms, user interface, security, and testing strategies.

    This topic fits into the wider Computer Science curriculum by reinforcing principles of computational thinking, problem-solving, and project management. It requires students to apply their knowledge of data representation, algorithms, and system architecture to real-world scenarios. By learning to describe a solution effectively, students develop crucial skills in logical reasoning, technical communication, and the ability to foresee potential challenges, which are invaluable for any aspiring computer scientist or software engineer.

    Key Concepts
    • →**Functional Requirements:** What the system *must* do, detailing specific tasks and behaviours (e.g., 'The system must allow users to log in').
    • →**Non-functional Requirements:** How well the system performs, covering quality attributes like performance, security, usability, scalability, and maintainability (e.g., 'The system must respond within 2 seconds for 90% of requests').
    • →**Data Structures:** How data will be organised, stored, and managed (e.g., arrays, records, files, database tables, linked lists), including data types and relationships.
    • →**Algorithms and Processing Logic:** The step-by-step procedures and computational methods the system will use to process data, perform calculations, and achieve its functional requirements (e.g., searching, sorting, validation routines).
    • →**User Interface (UI) Design:** How users will interact with the system, including screen layouts, input methods, output displays, and feedback mechanisms, adhering to principles of usability and accessibility.
    • →**Security Measures:** Strategies and techniques to protect the system and its data from unauthorised access, modification, or destruction (e.g., authentication, authorisation, encryption, input validation, data backup).
    Marking Points
    • Systematic breakdown of the problem into smaller parts with justification
    • Detailed definition of the solution structure
    • Full description of the solution using accurate algorithms
    • Justification of how algorithms form a complete solution
    • Description and justification of usability features
    • Identification and justification of key variables, data structures, and classes
    • Explanation of necessary validation
    • Identification and justification of test data for iterative development
    • Identification and justification of test data for post-development phase
    Examiner Tips
    • 💡Ensure all design decisions are explicitly justified, not just described
    • 💡Use clear, accurate algorithms to represent the logic of the solution
    • 💡Ensure the chosen programming language is appropriate for the task and supports a substantial coded element
    • 💡Focus on the command words in the assessment criteria to drive the depth of evidence
    • 💡Ensure the project is a well-defined, user-driven problem
    • 💡**Structure Your Answer Logically:** Use clear headings and subheadings (e.g., 'Functional Aspects', 'Data Structures', 'Processing Logic', 'User Interface', 'Security', 'Testing') to organise your description. This demonstrates a systematic approach and helps the examiner follow your reasoning.
    • 💡**Be Specific and Technical:** Avoid vague statements. Instead of 'data will be stored', specify 'data will be stored in a relational database with tables for users, products, and orders, linked by primary and foreign keys.' Use appropriate technical terminology accurately to show depth of understanding.
    • 💡**Justify Every Design Choice:** For each component or feature you describe, explain *why* you've chosen that particular approach. Refer back to the scenario's requirements, constraints, or potential issues. For instance, 'Input validation will be implemented to prevent SQL injection attacks and ensure data integrity, as sensitive user information is being handled.'
    Common Mistakes
    • Failing to justify the choices made for the solution structure or algorithms
    • Inadequate description of usability features
    • Lack of justification for chosen variables, data structures, or classes
    • Insufficient or unjustified test data for different development phases
    • Trivial problems that do not allow for the demonstration of required skills
    • **Confusing 'describe' with 'implement':** Students often start writing pseudocode or actual code. The solution description is a high-level plan of *what* and *how* it will work, not the detailed implementation. Focus on the logical steps and components, not the syntax.
    • **Ignoring Non-functional Requirements:** Many students focus solely on the core features (functional requirements) and neglect crucial aspects like performance, security, usability, and maintainability. These non-functional aspects are vital for a successful and robust solution and often carry significant marks.
    • **Lack of Justification:** Simply stating a design choice is insufficient. Students must justify *why* a particular data structure, algorithm, or security measure is appropriate, linking it back to the problem's requirements or constraints (e.g., 'An array is chosen for storing user IDs because it allows for fast direct access and the number of users is relatively fixed').
    Revision Plan
    1. 1**Week 1: Review and Understand Core Concepts:** Revisit the Systems Development Life Cycle (SDLC), focusing on the analysis phase and the transition to solution description. Thoroughly understand functional vs. non-functional requirements, and different types of data structures and algorithms. Use your textbook and class notes.
    2. 2**Week 1-2: Deconstruct Past Paper Scenarios:** Work through several past paper questions that require 'describing a solution'. For each scenario, identify all functional and non-functional requirements. Practice brainstorming different approaches for data storage, processing, UI, and security.
    3. 3**Week 2: Practice Structuring and Detailing Solutions:** Attempt to write full solution descriptions for 2-3 new scenarios. Focus on using clear headings, specific technical language, and providing justifications for every design choice. Pay close attention to covering all aspects: input, processing, output, storage, security, and testing.
    4. 4**Week 2: Self-Assessment and Refinement:** Compare your practice answers with mark schemes and examiner reports. Identify areas where you were vague, missed key details, or failed to justify choices. Refine your answers based on examiner expectations, focusing on precision and comprehensive coverage.
    5. 5**Ongoing: Create a 'Solution Description Checklist':** Develop a personal checklist of all the elements that should typically be included in a solution description (e.g., data structures, algorithms, UI, security, testing, hardware/software requirements, error handling). Use this checklist during exams to ensure you haven't overlooked any critical components.
    Exam Question Types
    • 📋Scenario-Based Solution Description:
    • 📋Specific Component Description/Justification:
    • 📋Comparative Analysis of Solutions:
    • 📋Identifying and Addressing Non-functional Requirements:
    Frequently Asked Questions
    What's the difference between 'describing a solution' and 'designing a solution'?
    Describing a solution is the conceptual blueprint, outlining *what* the system will do and a high-level *how*. It's about the overall approach and key components. Designing a solution, on the other hand, goes into much greater technical detail, specifying exact database schemas, class diagrams, network topologies, and detailed interface specifications, often using formal modelling languages. The description sets the stage for the detailed design.
    How much technical detail should I include about algorithms and data structures?
    You should include enough detail to demonstrate a clear understanding of the logic and the chosen method, but not full programming code. For algorithms, describe the steps involved, perhaps using pseudocode or a clear textual explanation of the process (e.g., 'a binary search will be used on the sorted list'). For data structures, specify the type (e.g., array, record, linked list), its purpose, and key fields/attributes, along with relationships if applicable.
    Do I need to mention hardware and software requirements in my solution description?
    Yes, it's often a crucial part of a comprehensive solution description, especially if the scenario implies specific constraints or needs. You should outline the minimum hardware specifications (e.g., processor speed, RAM, storage) and software dependencies (e.g., operating system, database software, programming language runtime environment) required for the solution to function effectively. This demonstrates an understanding of the solution's practical implementation.
    How do I ensure my solution is robust and secure?
    To ensure robustness, incorporate error handling mechanisms (e.g., input validation, exception handling, data backup and recovery plans). For security, detail measures such as user authentication (e.g., strong passwords, multi-factor authentication), authorisation (e.g., role-based access control), data encryption (for data at rest and in transit), regular security audits, and protection against common vulnerabilities like SQL injection or cross-site scripting.
    What role do non-functional requirements play in describing a solution?
    Non-functional requirements are vital as they define the quality attributes of your solution. They guide your design choices for performance (e.g., using efficient algorithms, optimising database queries), usability (e.g., intuitive UI, clear feedback), scalability (e.g., modular design, cloud hosting), and maintainability (e.g., well-documented code, clear structure). Addressing these ensures the solution isn't just functional but also fit for purpose, reliable, and user-friendly.
    Can I use diagrams in my answer, and if so, what kind?
    While often not explicitly required, simple, clear diagrams can significantly enhance your description if they clarify complex ideas. For instance, a basic Data Flow Diagram (DFD) can show data movement, an Entity-Relationship Diagram (ERD) can illustrate data structures, or a simple UI sketch can convey user interaction. Always ensure diagrams are neat, labelled, and directly support your textual explanation. Check the exam instructions for any specific guidance on diagram usage.