MSc ACS: Computer Security

Year of entry: 2021

Coronavirus information for applicants and offer-holders

We understand that prospective students and offer-holders may have concerns about the ongoing coronavirus outbreak. The University is following the advice from Universities UK, Public Health England and the Foreign and Commonwealth Office.

Read our latest coronavirus information

Course unit details:
Software Engineering Concepts in Practice

Unit code COMP61511
Credit rating 15
Unit level FHEQ level 7 – master's degree or fourth year of an integrated master's degree
Teaching period(s) Semester 1
Offered by Department of Computer Science
Available as a free choice unit? Yes


This is a course which gives students who didn't do a substantial amount of software engineering in their first degree an overview of the subject, with strong enphasis on sofware design and on teamwork.



A reasonable level of programmng skill (as expected of most ACS students)


At the conceptual level, students will get a systematic grasp of key topics including quality assurance and testing, software design and construction, and distinctive aspects of software development project management. By the end of the course, students will be able both to grasp the big picture of each topic and also have detailed understanding of select subtopics.  Additionally, students will become acquainted with the relevant research literature.

At the experiential level, students will apply their conceptual understanding to working with a large, established, open source software project.

Overall, students will acquire an informed, practical knowledge of what it is to be a professional software engineer.



          • Software engineering as a discipline

          • Software design and architecture

          • Software construction

          • Quality assurance

          • Software development project management

          • Development methodologies

Learning outcomes

  • Discuss the basic nature and special challenges of software engineering.

  • Complete a small software development project from scratch including requirements development, design, construction, testing, and refactoring.

  • Relate theoretical concepts and academic practice to lived practice and the reverse.

  • Write technical evaluations, comparative assessments, and conceptually-oriented essays.

  • Analyse the duties of a responsible member of a development team and of the software engineering profession.

  • Assess their own skills and knowledge both before and after engaging in a task.


Introduce Software Engineering, comparing and contrasting it with other Engineering disciplines. Explain the fundamental problem of requirements change, and the problems this causes for traditional software development processes. Introduce the Agile approach to software development, and some of the main characteristics of agile methods, e.g. continuous stakeholder involvement, iterative and incremental development and Physicality. The Agile UP will be used as an example of a traditonal process applied in an Agile way.

Explain (and advocate!) the Object Oriented approach to software development, particularly Responsibility Driven Design. Introduce a minimal subset of UML notation that covers most practical cases, and illustrate its use in requirements capture and software design.
The GRASP (General Responsibility Assignment Software Patterns) principles will be used as the basis for discussing software design. These are also the underlying principles on which design patterns are based.

Explain the basics of software testing, in particular unit testing with JUnit. In this course a traditional approach to testing will be taken, where tests are typically written after the code to be tested, but by a different person. The alternative, Test-driven development, will be explored in the Agile course.

Discuss some of the wider context of software engineering, for example user and stakeholder considerations, standards, and the role of software, and software engineers, in large organisations.

Employability skills

Analytical skills
Group/team working
Project management
Oral communication
Problem solving
Written communication

Assessment methods

Method Weight
Written exam 30%
Written assignment (inc essay) 70%

Feedback methods

Weekly coursework will be collected via Blackboard, and feedback is provided through the same mechanism or directly in labs.

Recommended reading

COMP61511 reading list can be found on the Department of Computer Science website for current students.

Study hours

Scheduled activity hours
Lectures 20
Practical classes & workshops 15
Independent study hours
Independent study 115

Teaching staff

Staff member Role
John Sargeant Unit coordinator
Bijan Parsia Unit coordinator

Additional notes

Course unit materials

Links to course unit teaching materials can be found on the Department of Computer Science website for current students.

Return to course details