Developing Maintainable Software
Code | School | Level | Credits | Semesters |
COMP2013 | Computer Science | 2 | 20 | Autumn UK |
- Code
- COMP2013
- School
- Computer Science
- Level
- 2
- Credits
- 20
- Semesters
- Autumn UK
Summary
This module builds on your basic Java programming and software engineering skills developed in Year 1, extending it to working with larger third-party software systems, and the challenges associated with this. Topic examples include: design diagrams and modelling; GUI programming; testing software engineering methodologies (including agile development and tools); refactoring; design patterns and SOLID principles; all in the context of understanding and developing maintainable third-party code.
You will spend around three hours per week in lectures and two hours per week in computer classes studying for this module.
Target Students
Available to Level 2 students in the School of Computer Science. This module is part of the Software Engineering theme in the School of Computer Science.
Assessment
- 100% Coursework 1: Code submission: electronic submission of refactored code and add-on component(s) to some existing software.
Assessed by end of autumn semester
Educational Aims
To build on first year programming modules and further develop programming ability and experience, including ability to develop and understand a large piece of software, build user interfaces and follow a realistic design and testing procedure.Learning Outcomes
- Learn to understand, refactor and add to large pieces of third-party software.
- Ability to identify and use design diagrams, follow an engineering methodology (e.g. agile), refactor code, use APIs and libraries, apply user interface, design guidelines, code GUIs and document code.
Knowledge and Understanding:
- Understanding large software systems and the quality, organisation and design issues associated with working with such code, agile development approaches, software component interaction, event-based programming and modern interface paradigms.
Intellectual Skills:
- Understand and logically evaluate program requirements and specifications.
- Understand the complex ideas of programming solutions and relate them to particular problems.
Professional Skills:
- Practical experience of 'real world' coding.
- Design and write object-oriented programs and GUIs.
- Understand modern development IDEs (e.g. Eclipse) and relevant engineering software tools (e.g. git).
Transferable Skills:
- Object-oriented problem-solving scheduling and presenting work applying learning material.