Unit information: Software Engineering Discipline and Practice in 2028/29

Please note: Programme and unit information may change as the relevant academic field develops. We may also make changes to the structure of programmes and assessments to improve the student experience.

Unit name Software Engineering Discipline and Practice
Unit code COMSM0166
Credit points 30
Level of study M/7
Teaching block(s) Teaching Block 2 (weeks 13 - 24)
Unit director Professor. Chitchyan
Open unit status Not open
Units you must take before you take this one (pre-requisite units)

COMSM1201 Programming in C

Units you must take alongside this one (co-requisite units)

COMSM0085 Overview of Software Tools

COMSM0086 Object-Oriented Programming with Java

Units you may not take alongside this one

None

School/department School of Computer Science
Faculty Faculty of Engineering

Unit Information

Why is this unit important?

This unit teaches students the key theoretical foundations for the design, development, and delivery of software systems, on the one hand, and emphasizes project management, agile delivery, cross-team communication, and cooperation on the other. The unit provides both theoretical knowledge and practical experience of software development, preparing graduates for real-world software development ecosystems. It introduces students to software development methodologies and best practices, furnishing them with knowledge and skills for the creation of scalable and maintainable software. Additionally, it cultivates collaboration, communication, and problem-solving skills, vital in this team-based industry.

This unit further provides students with a broad overview of the key challenges in software engineering, cutting edge research on various aspects of it, its current role in modern society, as well as various career paths within the Software Engineering domain. In essence, this unit equips our students with the theoretical knowledge for becoming software engineers and provides an opportunity to practice the translation of this knowledge within a development project, making them well-rounded and employable professionals in the field.

How does this unit fit into your programme of study?

This unit provides a practical setting for integrating the programming skills and software tools learned across other units (e.g., C, Java, Software Tools) in this program. It hones appreciation of Software Engineering as an engineering discipline: i.e., use of science-based methods (such as object-oriented modelling and design, usability measures, etc.) in developing software solutions for use by people. It provides an opportunity to practice this engineering approach through development, testing, and project management tasks, as well as appreciate the current research and practice challenges and trends. This unit bridges the gap between the theory and practice of software engineering, making students versatile and highly competent professionals in the computing domain.

Your learning on this unit

An overview of content

This unit focuses on the following topics:

  • Software requirements elicitation and modelling techniques;
  • Software verification and validation techniques;
  • Evaluating the usability of software solutions;
  • Agile software project management;
  • Collaboration in a software development team using modern tools;
  • Application development and change management in a large project;
  • Open research and practice challenges in the Software Engineering profession.

How will students, personally, be different as a result of the unit

This unit will give students a real grounding in theoretical knowledge about Software Engineering principles and how they can be applied to develop software. The students will gain practical experience of undertaking project development and delivery, learn to communicate with other developers, utilise modern software engineering tools, and appreciate the impact of changing requirements and user feedback on the software development and delivery process. They will also learn about the wide variety of professional paths available within the Software Engineering domain and start to identify the specific directions and topics of particular interest to their own careers.

Learning Outcomes

On successful completion of this unit, the students will be able to:

  1. Describe the key research topics, practice challenges, and current practices in Software Engineering;
  2. Discuss and apply the key practices of agile project delivery and management;
  3. Discuss and apply requirements elicitation, software modelling and design techniques;
  4. Undertake verification and validation reviews for their software solutions;
  5. Undertake usability evaluations of software;
  6. Utilise modern software engineering tools to integrate their contributions into a large software project.

How you will learn

How you will learn

Teaching will be delivered through a combination of synchronous lectures and asynchronous teaching materials (including reading, written materials, slides, audio/videos narrations, and group work) and in-person practical workshops in the lab.

Delivery of the unit takes a problem-based approach, with all teaching activities designed to support students in developing theoretical knowledge and practical skills focused on the Software Engineering topics set for each week. Students are set clearly defined tasks and must select and apply a range of previously presented approaches in order to successfully address each task. These practical objectives include topics such as:

  • Eliciting software requirements;
  • Designing an abstract solution;
  • Setting up a project management process for a team;
  • (Collaboratively) implementing new features and integrating changes to the common repository;
  • Testing the software solutions;
  • Evaluating the software with intended end users.

In addition, talks from current practitioners and researchers from the Software Engineering domain in various companies and countries will give our students an opportunity to appreciate wider societal, professional, and research challenges in Software Engineering.

The described approach reflects the characteristics of this subject which, by its very nature, requires a very practical, team-based, applied and hands-on mode of teaching and learning.

Time will be allocated at each weekly lab for continuously developing the students’ projects and receiving feedback from the teaching staff. Additional support sessions will be provided during weeks 9-11 to assist students with completing their coursework.

The examination provides an efficient mechanism to assess the students’ theoretical knowledge of the fundamental techniques, modelling notations and practices of software engineering, as well as of the management and collaboration principles, and high-level understanding of the challenges and careers in software engineering.

The coursework assessment provides an opportunity to assess students’ practical skills and abilities when applied to a longer-term software development project delivery challenge with a significant scale and complexity.

How you will be assessed

Tasks which help you learn and prepare you for summative tasks (formative):

Teaching will take place over the first 9 weeks of the term (excluding reading week), with coursework support

sessions in weeks 10-11 and project demo sessions taking place in week 12. During the taught phase of the unit, students will progress through a series of workshops that consist of:

a) Structured theory and application tasks, each with specific outputs and objectives related to the theoretical content of the previous lecture. Reference solutions are provided for most of these tasks, so that students may assess their own progress and determine when they have successfully achieved the objectives of a task;

b) Meeting some current Software Engineering practitioners and discussing current practices, research and challenges faced by software engineering professionals;

c) Collaborative sessions, where the students will define and develop their projects. The students will be supported during these sessions with exercises and feedback to facilitate their project development. Group work will also be encouraged.

Completion of these formative tasks will provide students with the skills and knowledge required to pass the assessments. Additionally, the projects and codebase developed over this period will comprise a major part of the coursework-based assessment.

Tasks which count towards your unit mark (summative):

This unit has two elements of assessment:

  • An end-of-term project coursework (taking place throughout the formative weeks with a final release prepared during weeks 9-11). The coursework will assess the practical aspects of Learning Outcomes 2, 3, 4, and 5, 6 (worth 50% of the unit). The individual contributions to the coursework will be assessed through evidence of individual commits to the project repository as well as through peer feedback.
  • A final exam that will assess the theoretical aspects of Learning Outcomes 1, 2, 3, 4 and (worth 50% of the unit)

When assessment does not go to plan

The students eligible for re-assessment will undertake a new individual coursework task.

The re-assessment task will require students to demonstrate their comprehension of key software engineering concepts covered in the unit's theoretical content and show their ability to apply these concepts within a software development context.

A two-week period will be allocated for students to complete their re-assessment task and submit all associated software engineering artifacts, such as models and code commits.

To support students during the re-assessment period, TA-led office hours will be held twice a week. These sessions will provide students with opportunities to seek guidance, clarification, and assistance with the re-assessment task.

Resources

If this unit has a Resource List, you will normally find a link to it in the Blackboard area for the unit. Sometimes there will be a separate link for each weekly topic.

If you are unable to access a list through Blackboard, you can also find it via the Resource Lists homepage. Search for the list by the unit name or code (e.g. COMSM0166).

How much time the unit requires
Each credit equates to 10 hours of total student input. For example a 20 credit unit will take you 200 hours of study to complete. Your total learning time is made up of contact time, directed learning tasks, independent learning and assessment activity.

See the University Workload statement relating to this unit for more information.

Assessment
The assessment methods listed in this unit specification are designed to enable students to demonstrate the named learning outcomes (LOs). Where a disability prevents a student from undertaking a specific method of assessment, schools will make reasonable adjustments to support a student to demonstrate the LO by an alternative method or with additional resources.

The Board of Examiners will consider all cases where students have failed or not completed the assessments required for credit. The Board considers each student's outcomes across all the units which contribute to each year's programme of study. For appropriate assessments, if you have self-certificated your absence, you will normally be required to complete it the next time it runs (for assessments at the end of TB1 and TB2 this is usually in the next re-assessment period).
The Board of Examiners will take into account any exceptional circumstances and operates within the Regulations and Code of Practice for Taught Programmes.