Principles of Software Engineering

Module summary

Module code: COMP1821
Level: 4
Credits: 15
School: Liberal Arts and Sciences
Department: Computing and Mathematical Sci.
Module Coordinator(s): Elena Popa


Pre and co requisites

Some coding experience in any language (Paradigms of Prog. (T1))


Distinguishing between software programming and an engineering approach to the development of software systems is crucial to producing quality software. Software Engineering is at the core of any software development project and to succeed in this domain requires an understanding of the fundamental software engineering models and methods used, and an appreciation of the challenges involved in applied practice. Specialist knowledge and practical skills in this area are therefore in high demand.
This module aims to introduce disciplined approaches to software development and provide solid foundation in the concepts, practices and management of software engineering. You will gain an appreciation of the intrinsic challenges of greenfield and brownfield software development and will develop an understanding of the core concepts that underpin current software engineering practice. Strong emphasis is on the practical application of these principles to the development of a significant software system within a team. You will gain hands-on experience using tools and techniques commonly used in the industry, and dealing with the reality of team- based software development. The module prepares you for future work within multi-functional teams and will help broaden your employability prospects by building the core skill set needed by software engineers and
members of development projects.

Learning outcomes

On successful completion of this course a student will be able to:
1 Describe and compare different software process models and explain the merits and constraints of the various approaches (e.g. plan-based vs. agile-based).
2 Describe the software lifecycle and the activities associated with each phase.
3 Critically evaluate and apply choice of model for given real-world specifications and requirements.
4 Justify and use appropriate tools and techniques to enhance productivity and quality of software development.

Indicative content

This module will cover full-cycle software engineering, including but not limited to:
• Software Engineering Key Practices and Challenges
(The project, the people, the process, the product and the problem. The multidisciplinary nature of software design, Team work, Productivity, Legal, Ethical and Professional issues, etc.)
• Software Process Models (Traditional and contemporary processes. eg. Waterfall; VModel; Iterative models: RAD, Prototyping, Agile; CMM, RUP, etc.)
• Software Product Life Cycle (Requirements analysis. Feasibility. Specifying requirements. Designing principles (S/W reuse and evolution). Testing. Product maintenance. Documentation.)
• Validation and Verification
• Tools and Environments (eg. Upper/Lower CASE tools, shared repositories to support collaborative and incremental development)
• Project Management (introduction to project estimating and planning, cost modelling, basic project/product
risk management, quality assurance)

Teaching and learning activity

A combination of weekly 1-hour lectures (33%) and 2-hour tutorial/lab sessions (67%).
Concepts and theoretical foundation are introduced through formal lectures and/or flipped class-room sessions (12 hours). Practical experience is gained through supervised laboratory sessions (24 hours) featuring individual and group theoretical or implementation exercises. Case studies will be used to illustrate the application of the concepts and principles to real-world systems. Students will undertake a substantial group project and will work through the development stages of a software application throughout the term. Students are supervised during the tutorial/lab sessions but are expected to apply the principles learned and largely organise their groups, learning key transferrable skills in team management and problem handling. Formative feedback on performance will be provided during tutorial/lab sessions in line with UoG feedback policy.
The module is supported by comprehensive lecture notes and examples. Students are encouraged to gain experience and confidence by completing numerous lab exercises.


Logbook - 40%
LO - 1-2
Pass mark - 40%
3 online quizzes.

Practical CW - 60%
LO - 2-4
Pass amrk - 40%
2000 words.
Practical group project & report with an individual component.

Nature of FORMATIVE assessment supporting student learning:
Tutorials and lab exercises.