Developing Maintainable Software

Code School Level Credits Semesters
COMP2059 School of Computer Science 2 20 Autumn China
Code
COMP2059
School
School of Computer Science
Level
2
Credits
20
Semesters
Autumn China

Summary

Prerequisites: COMP1035 Software Engineering and COMP1039 Programming and Paradigm

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, two hours per week in computer classes studying for this module.

Target Students

Part I undergraduate students in the School of Computer Science only. This module is part of the Software Engineering theme in the School of Computer Science.

Classes

Assessment

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; 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; 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.

Conveners

View in Curriculum Catalogue
Last updated 09/01/2025.