Developing Maintainable Software
| Code | School | Level | Credits | Semesters |
| COMP2042 | Computer Science | 2 | 20 | Autumn Malaysia |
- Code
- COMP2042
- School
- Computer Science
- Level
- 2
- Credits
- 20
- Semesters
- Autumn Malaysia
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), all in the context of understanding and refactoring third-party code. You will spend around two hours per week in lectures, two hours per week in computer classes, and one hour per week in workshops studying for this module.
Target Students
Available to Level 2 students in the School of Computer Science. Available to inter-campus mobility students and other exchange students in computer science. This module is not available to students not listed above, without explicit approval from the module convenor(s). This module is part of the Software Engineering theme in the School of Computer Science.
Classes
- One 1-hour workshop each week for 12 weeks
- One 2-hour lecture each week for 12 weeks
- One 2-hour computing each week for 12 weeks
Activities may take place every teaching week of the Semester or only in specified weeks. It is usually specified above if an activity only takes place in some weeks of a Semester
Assessment
- 100% Coursework 1: Code submission: electronic submission of refactored code and add-on component(s) to some existing software.Final class diagram as pdf.A video of up to 3 minutes, demonstrating project and software.
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 (eg. 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 (eg. Eclipse) and relevant engineering software tools (eg. git).
Transferable Skills
Object-oriented problem-solving; scheduling and presenting work; applying learning material.
Conveners
- Dr Chye Cheah Tan