Select a course.
Non-Exam Assessment
infoWhy this? The programming project provides an opportunity for students to apply their knowledge in an authentic context. By analysing a problem, designing a solution, developing software and evaluating outcomes, students experience the complete software development cycle and develop independence as computer scientists.
scheduleWhy now? This project represents the culmination of the course, bringing together programming, algorithms, data structures, testing and evaluation. It allows students to demonstrate creativity, resilience and technical competence while preparing for further study and careers in computing-related fields.
neurologyYou need to know
- A problem is suitable for a computational solution when it can be expressed through defined inputs, processes and outputs that algorithms can perform.
- Computationally solvable problems usually contain tasks that can be decomposed, represented as data and completed through precise, repeatable rules.
- Stakeholders are individuals or groups who affect, use or are affected by the solution, and their needs may include functionality, accessibility, usability, security and performance.
- Research into the problem domain, existing solutions and relevant algorithms helps identify effective approaches and avoid unsuitable design choices.
- The essential features of a proposed solution are the functions required to meet stakeholder needs and solve the identified problem.
- A solution's limitations are constraints or weaknesses such as restricted scope, platform dependence, limited data, performance boundaries or features that cannot be implemented.
- Solution requirements define what the product must do, while hardware and software requirements identify the environment needed to develop and operate it.
- Success criteria must be specific, measurable and linked directly to the problem, stakeholder needs and required functionality.
- Decomposition divides a complex problem into smaller modules that can be designed, implemented and tested separately before integration.
- A complete design explains the overall structure of the solution and uses algorithms to define the processing performed by each component.
- Usability features include clear navigation, consistent layouts, meaningful feedback, error prevention, accessible presentation and appropriate help for users.
- Variables store individual values, data structures organise related values, and classes combine attributes and methods to represent entities in an object-oriented solution.
- Validation checks whether input data is sensible and acceptable, whereas verification checks whether data has been copied or entered accurately.
- Normal test data represents valid, typical input; boundary data tests values at or immediately around permitted limits; erroneous data is invalid and should be rejected or handled safely.
- Iterative development involves repeatedly designing, implementing, testing and refining parts of the solution using evidence from each iteration.
- A prototype is a partial or simplified implementation used to investigate algorithms, interfaces or technical feasibility before completing the final solution.
- Annotated development evidence links code, interfaces, test results and changes to the decisions made during each development stage.
- Remedial action is a justified change made after testing reveals a defect, weakness or unmet requirement, and retesting confirms whether the change worked.
- Evaluation uses development tests, robustness tests and stakeholder usability feedback to judge the completed solution against its original measurable success criteria.
- Maintainability depends on features such as modular structure, meaningful identifiers, clear documentation, low coupling and code that can be corrected or extended without unnecessary changes.
rocket_launchYou must be able to
- Justify the suitability of a problem for computational methods by identifying its inputs, outputs, data, processes, constraints and opportunities for automation.
- Identify relevant stakeholders and explain how specific functional and usability requirements address their needs.
- Research the problem domain and comparable solutions, then use cited findings to justify algorithms, features and technical approaches while recognising limitations.
- Specify functional, hardware and software requirements and produce measurable success criteria that can be verified through testing.
- Decompose the problem into coherent modules and represent the complete solution using suitable algorithms, interfaces, variables, data structures, classes and validation rules.
- Design a test plan containing normal, boundary and erroneous data, expected outcomes and reasons for each test across iterative and post-development testing.
- Develop the solution iteratively, annotating prototypes, code and interface evidence to explain decisions and demonstrate progress towards the design.
- Test each development stage, compare actual results with expected results, diagnose faults, apply justified remedial changes and retest affected components.
- Conduct final robustness and usability testing, recording objective results and stakeholder feedback as annotated evidence.
- Evaluate the final product against every success criterion using test evidence, then assess usability, maintainability, limitations and realistic opportunities for further development.