- Academic Registry
Programme & Unit Catalogues


CM50109: Software engineering

[Page last updated: 30 September 2022]

Academic Year: 2022/23
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)
Period:
Semester 1
Assessment Summary: CW 100%
Further information on unit assessment Assessment Detail:
  • Assessment detail data for this unit is currently being updated as a change has been approved. Updated assessment information will be published here shortly.
Supplementary Assessment:
CM50109 - Report (where allowed by programme regulations)
Requisites:
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.

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.

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

CM50109 is Optional on the following programmes:

Department of Computer Science
  • USCM-AFM01 : MComp(Hons) Computer Science (Year 4)
  • USCM-AAM02 : MComp(Hons) Computer Science with Study year abroad (Year 5)
  • USCM-AKM02 : MComp(Hons) Computer Science with Year long work placement (Year 5)

Notes:

  • This unit catalogue is applicable for the 2022/23 academic year only. Students continuing their studies into 2023/24 and beyond should not assume that this unit will be available in future years in the format displayed here for 2022/23.
  • 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.