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
- One 2-hour lecture each week for 11 weeks
- One 1-hour lecture each week for 11 weeks
- One 2-hour computing each week for 11 weeks
Assessment
- 75% Coursework1: code submission: electronic submisson of refactored code and added-on component(s) to some existing software, repository and documentation
- 25% Exam 1 (1-hour): examination
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
- Dr BOON GIIN LEE