Please note: there may be some adjustments to the teaching arrangements published in the course catalogue for 2020-21. Given current circumstances related to the Covid-19 pandemic it is anticipated that some usual arrangements for teaching on campus will be modified to ensure the safety and wellbeing of students and staff on campus; further adjustments may also be necessary, or beneficial, during the course of the academic year as national requirements relating to management of the pandemic are revised.

Advanced Software Engineering Practices (H) COMPSCI4071

  • Academic Session: 2022-23
  • School: School of Computing Science
  • Credits: 10
  • Level: Level 4 (SCQF level 10)
  • Typically Offered: Runs Throughout Semesters 1 and 2
  • Available to Visiting Students: Yes
  • Available to Erasmus Students: Yes

Short Description

This course gives students the opportunity to learn and practice advanced principles, methods and tools in Software Engineering.  The course is intended for students who have experience of software development through a summer internship or similar. The course covers technical and management skills that are needed for mentoring and leading teams of software developers. The course is delivered in collaboration with an established software industry partner (JP Morgan).


1 hour of lectures per week in semester 1 and 3 hours of laboratory time with the student's team (see detailed explanation).

Requirements of Entry

Professional Software Development (H) (or equivalent)

Java Programming 2 (or equivalent)

Object Oriented Software Engineering 2 (or equivalent)

Software Engineering Summer Placement (H) (or equivalent) (an unassessed placement may be acceptable, subject to approval of the course coordinator).

Excluded Courses





Examination 50%, Coursework (50%). 


Students will receive lectures during semester 1 covering theoretical material. Students will work 1 hour per week in laboratories with level 3 teams, providing support and observing team practices.  Each week will end with a seminar reviewing the observations made by the students during the level 3 team laboratory. Students will record observations in a diary.   During semester 2, each student will identify, plan, implement and evaluate a software process improvement practice with their software team, based on the observations made in Semester 1. The coursework will comprise the diaries prepared in semester 1 and a report on the software process improvement activity.

Main Assessment In: April/May

Are reassessment opportunities available for all summative assessments? No

Reassessments are normally available for all courses, except those which contribute to the Honours classification. For non-Honours courses, students are offered reassessment in all or any of the components of assessment if the satisfactory (threshold) grade for the overall course is not achieved at the first attempt. This is normally grade D3 for undergraduate students and grade C3 for postgraduate students. Exceptionally it may not be possible to offer reassessment of some coursework items, in which case the mark achieved at the first attempt will be counted towards the final course grade. Any such exceptions for this course are described below. 


Resit examinations ARE NOT ALLOWED for Honours students.

Resit examinations ARE ALLOWED for Masters students.


The coursework cannot be redone because the feedback provided to the students after the original coursework would give any student redoing the coursework an unfair advantage. The nature of the coursework is such that it takes a significant number of days to produce it and this effort is infeasible for supporting the re-doing of such coursework over the summer. The coursework is linked to another piece of coursework and cannot be completed in isolation.

Course Aims

To introduce advanced principles, methods and tools in Software Engineering.

To introduce techniques for effective working in software teams in a mentoring role,

To expose students to the practicalities and reality of software engineering in industry.

Intended Learning Outcomes of Course

By the end of this course students will be able to:

1. Explain a range of advanced practices in software engineering including change management, requirements negotiation and prioritisation, software architectural decision making, continuous integration and agile project management;

2. Apply and adapt mentoring techniques for working with less experienced colleagues;

3. Identify, plan, implement and evaluate improvements to team software processes;

4. Be aware of the limitations of existing software engineering practices in large scale systems development.

Minimum Requirement for Award of Credits

Students must submit at least 75% by weight of the components (including examinations) of the course's summative assessment.