The University of Sheffield
Department of Computer Science

COM1001 Introduction to Software Engineering


This module introduces the Software Engineering concepts that are needed to develop software systems that can meet basic functional requirements within a given problem domain. It covers the main steps in the process of developing such systems, from requirements analysis through to their implementation and testing.

A major part of the module involves students working in teams to develop a web-based software system, which gives practical experience in teamwork and managing software projects and their products.

Session Academic Year 2021/22
Credits 20
  • Blackboard exam, individual assignment, extensive group project.
  • The module has the explicit objective of developing group teamwork skills. Participation in teamwork is mandatory, and absence will result in loss of marks and eventually loss of credits.
  • The group teamwork project cannot be repeated within the academic year. Failure will normally result in you repeating the year.
Lecturer(s) Dr Kirill Bogdanov, Mr Andrew Stratton, Dr Anton Ragni, Dr Mike Smith, Dr Neil Walkinshaw, Prof. Phil McMinn & epiGenesys

The aims of this module are to develop in candidates:

  • an understanding of the software development business, how it typically functions and how it is typically organised, and the legal and ethical environment in which it operates;
  • an understanding of basic software engineering methodologies and software project management;
  • an understanding of software engineering processes, including requirements capture, development, testing and maintenance, and the ability to carry out these processes as part of a team;
  • an interest in continual professional development and professional body membership.

By the end of the unit, a candidate will be able to:

  • Explain the basic principles of software engineering, the software business, and the legal and ethical issues involved;
  • Gather and formalise requirements in terms of user stories for a website software system;
  • Implement a basic data handling software system;
  • Work as part of a team, developing a basic data-driven website software system, according to a set of requirements through the iterations of an agile methodology, using appropriate (open source and non-open source) tools;
  • Develop and execute test scripts, employ test automation, and assess test results;
  • Perform basic maintenance tasks on a software system, e.g. make bug fixes, apply basic refactorings etc.

Semester 1:

  • Introduction (What Software Engineering is, course structure)
  • Software lifecycle (Processes, Agile)
  • Project management (Projects, processes, people, products)
  • Software configuration management (Version and change control)
  • Requirements engineering
  • Metrics and estimation
  • Legal and ethics, CPD and professional body membership
  • Basic programing in Ruby

Semester 2:

  • Software architectures and the web
  • Engineering a data-driven website (with the Sinatra framework for Ruby)
  • Database design and implementation (with the SQLite database management system)
  • Software testing
  • Software maintenance

Teaching Method The course consists of lectures, lab sessions and team work on the group project. Lectures will cover key knowledge and more theoretical aspects of software engineering, while labs will cover practical aspects, such as version control, developing for the web, and databases.

For the software project, feedback takes multiple forms: from the "client" for whom students will be building the system; through team supervision meetings (semester 2 only); through help given by demonstrators and lecturers at lab classes; comments given on marked assignments, and more general class feedback given in lectures.

Recommended Reading
  • Stephens R. Beginning software engineering. John Wiley & Sons; 2015 Mar (available as an ebook in the library)