COMP0010 Software Engineering
This database contains the 2018-19 versions of syllabuses.
Note: Whilst every effort is made to keep the syllabus and assessment records correct, the precise details must be checked with the lecturer(s).
This module focusses on designing and building software systems, which these days are often large, complex and long-lived. They are worked on by teams of engineers, and changed constantly over their lifetimes. We will look at principles and patterns of software design, where to apply them, and how they may inform our design choices. We will also look at techniques for ensuring that systems you build behave correctly. We show how the application of these makes it possible to evolve systems effectively in a rigorous way.
On successful completion of the module, a student will be able to:
- appreciate the wider engineering context that forms the background to developing complex, evolving software-intensive systems;
- apply a range of design patterns and principles to solve particular design problems;
- apply a range of refactoring techniques to improve code quality;
- use a range of tools and techniques for automated software testing, including test-driven development;
- manage risk in making changes to an existing software system through rigorous engineering practices;
- reflect on the appropriateness of different software engineering techniques in different circumstances, and on the quality of the design of an application.
Availability and prerequisites
This module delivery is available for selection on the below-listed programmes. The relevant programme structure will specify whether the module is core, optional, or elective.
In order to be eligible to select this module as optional or elective, where available, students must meet all prerequisite conditions to the satisfaction of the module leader. Places for students taking the module as optional or elective are limited and will be allocated according to the department’s module selection policy.
Programmes on which available:
In order to be eligible to select this module, students must have:
- OO Design Principles
- Design Patterns
- Software Architecture
- Tools and Processes
An indicative reading list is available via http://readinglists.ucl.ac.uk/departments/comps_eng.html.
The module is delivered through a combination of lectures, tutorials and programming exercises.
This module delivery is assessed as below:
Late summer assessment would be an individual coursework.
In order to pass this module delivery, students must:
- achieve an overall weighted module mark of at least 40%; and
- achieve a mark of at least 30% in any components of assessment weighed ≥ 30% of the module.
Where a component comprises multiple assessments, the minimum mark applies to the overall component.