COM1001 Introduction to Software Engineering
Summary |
This module will introduce students to the principles of software engineering, discussing the software lifecycle and approaches to effective teamwork. Students will be introduced to a development framework, which they will work on individually, and then will apply the principles of software engineering, working in a team to develop a software project.
|
Session |
Academic Year 2025/26 |
Credits |
20 |
Assessment |
- Programming assignment, group requirements specification document and team 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 Tahsinur Khan, Dr Donghwan Shin and Prof Phil McMinn |
Resources |
|
Aims |
The aims of this module are to develop in candidates:
- an ability to implement well-structured and maintainable code in a given framework;
- 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.
|
Learning Outcomes |
By the end of the module, the student will be able to:
- Implement solutions to simple problems in the provided framework, demonstrating principles of readability and maintainability as well as correctness;
- Demonstrate how HTML and CSS can be used to present and style information;
- Work in a team to gather and formalise requirements in terms of user stories for a website software system;
- Work in a team to implement, refactor, and test a software system;
- Explain the principles of software testing and how to improve code quality (e.g., through refactoring), drawing upon examples from the team project;
|
Content |
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
- HTML and CSS
- Basic programing in Ruby
Semester 2:
- Software architectures and the web
- Engineering a data-driven website
- Designing and incorporating a database into a software 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. |
Feedback |
Feedback is available through help given by demonstrators and lecturers at lab classes; through team supervision meetings (semester 2 only); from comments given on marked assignments, and more general class feedback given in lectures. |
|