- Academic Registry
Programme & Unit Catalogues

CM50109: Software engineering

[Page last updated: 04 August 2021]

Academic Year: 2021/2
Owning Department/School: Department of Computer Science
Credits: 12 [equivalent to 24 CATS credits]
Notional Study Hours: 240
Level: Masters UG & PG (FHEQ level 7)
Semester 1
Assessment Summary: CW 100%
Assessment Detail:
  • Coursework 1 (CW 30%)
  • Coursework 2 Group Project (CW 70%)
Supplementary Assessment:
CM50109 - Report (where allowed by programme regulations)
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.

Skills: 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).

Content: 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.

Programme availability:

CM50109 is Compulsory on the following programmes:

Department of Computer Science


  • This unit catalogue is applicable for the 2021/22 academic year only. Students continuing their studies into 2022/23 and beyond should not assume that this unit will be available in future years in the format displayed here for 2021/22.
  • Programmes and units are subject to change in accordance with normal University procedures.
  • Availability of units will be subject to constraints such as staff availability, minimum and maximum group sizes, and timetabling factors as well as a student's ability to meet any pre-requisite rules.
  • Find out more about these and other important University terms and conditions here.