Computing Science (faster route) BSc/MSci
Software Product Release Engineering (H) COMPSCI4102
- Academic Session: 2024-25
- School: School of Computing Science
- Credits: 10
- Level: Level 4 (SCQF level 10)
- Typically Offered: Semester 2
- Available to Visiting Students: Yes
- Collaborative Online International Learning: No
Short Description
This course gives students the opportunity to learn about and practice advanced principles, methods and tools in Software Engineering, and discuss the engineering decisions and trade-offs to be made when releasing software products. The course is intended for students who have experience of software development through a summer internship or similar. The course covers technical skills that are needed for designing, implementing, and maintaining releases of software products. The course also covers approaches and trade-offs needed for operating software releases at scale, current "shift-left" approaches, and operating models like DevOps, etc.
Timetable
1 hour of lectures and 2 hours of laboratory time per week in semester 2.
Excluded Courses
Software Product Release Engineering (M)
Co-requisites
None
Assessment
Examination 0%, Coursework (100%).
Students will receive lectures during semester 2 covering theoretical material. Each lecture will feature assigned reading and students will be quizzed. Each week will also include a 2-hour lab session where students will apply the theory. Students will build, deploy, and maintain a software API end-point throughout the course. Each week the students will be awarded marks for their API feature availability and up-time. Development of the API will include automated and manual review of submissions to the version-control system, and marks will be awarded based on these.
The coursework will comprise the quizzes, the feature- and up-time checks, and the version-control submissions.
As the course is focused on practical, real-world trade-offs involved in planning and deploying software releases, the course is evaluated through hands-on reviews rather than examinations of theory.
Are reassessment opportunities available for all summative assessments? No
Reassessments are normally available for all courses, except those which contribute to the Honours classification. Where, exceptionally, reassessment on Honours courses is required to satisfy professional/accreditation requirements, only the overall course grade achieved at the first attempt will 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 approaches in Software Product Release Engineering,
To introduce techniques for effective maintenance and evolution of working software,
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 product release engineering including change management, continuous integration and -delivery, software evolution, build automation, and software security;
2. Reflect critically on the design decisions and trade-offs involved in building and releasing long-lived software products;
3. Apply and adapt techniques for planning and maintaining up-time and maintenance cycles;
4. Understand and apply known stability patterns to maintain scaling and software release availability targets;
5. Design, plan, implement, deploy, maintain and evolve software releases;
6. 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.