- Student Records
Programme & Unit Catalogues

CM50109: Software engineering

[Page last updated: 10 August 2020]

Follow this link for further information on academic years Academic Year: 2020/1
Further information on owning departmentsOwning Department/School: Department of Computer Science
Further information on credits Credits: 12      [equivalent to 24 CATS credits]
Further information on notional study hours Notional Study Hours: 240
Further information on unit levels Level: Masters UG & PG (FHEQ level 7)
Further information on teaching periods Period:
Semester 1
Further information on unit assessment Assessment Summary: CW 100%
Further information on supplementary assessment Supplementary Assessment:
CM50109 - Report (where allowed by programme regulations)
Further information on requisites Requisites:
Description: Aims:
(a) to develop an understanding of how the principles behind software development are much more important than the chosen programming language, and how specification, design choices and development methodology may have a major impact on the correctness and suitability of the final software solution;
(b) to develop a systemic understanding of software development paradigms for complex software system building;
(c) to develop skills in critically analysing problems for appropriate software solutions;
(d) to develop the ability to contrast the various software development paradigms.

Learning Outcomes:
After taking this unit the student should be able to:
(a) identify issues and appropriate solutions for the design and implementation of complex software problems;
(b) perform evaluations of design solutions to determine their fitness for purpose;
(c) demonstrate an understanding of the principles of software development paradigms and their relationship to the appropriateness of an eventual software solution;
(d) critically evaluate and contrast contemporary software engineering paradigms for defined software engineering problems, given a set of relevant development constraints;
(e) compare and contrast the roles, responsibilities, benefits and drawbacks of different team organization structures for software development, given a set of relevant development constraints.

Choosing appropriate design techniques (T, F, A); designing software solutions in object-oriented programming languages (T, F, A); contrasting current software engineering paradigms and selecting the most appropriate one for a given situation (T,F,A).

The building blocks of software. Software design paradigms: Waterfall, Iterative, Agile, (for example: Scrum, XP, Kanban), Test-Driven Development (TDD).
Software engineering concepts: abstraction, modularisation, encapsulation, data hiding, reuse, white-box and black-box inheritance, refactoring, smells, mocks, stubs, design patterns, formal verification, automated testing and property-based testing. Principles for engineering complex software systems. The effect of the programming language on design and implementation issues. Team structures. Tie vs. feature boxing. Pair working.
Further information on programme availabilityProgramme availability:

CM50109 is Compulsory on the following programmes:

Department of Computer Science