CM1301: Principles, Tools and Techniques for Secure Software Engineering

School Cardiff School of Computer Science and Informatics
Department Code COMSC
Module Code CM1301
External Subject Code 100374
Number of Credits 20
Level L4
Language of Delivery English
Module Leader Dr Daniel Finnegan
Semester Double Semester
Academic Year 2024/5

Outline Description of Module

This module introduces software engineering principles and practices that are needed to develop software-intensive systems. Students will work learn a variety of principles and techniques to create quality, secure software over group and individual activities. They will gain practical experience of software requirements, modelling, software testing, and project management skills. They will perform key tasks, both technical and non-technical, in the software development lifecycle. 

On completion of the module a student should be able to

  1. Apply their understanding of the fundamental concepts, principles and practices of software engineering when completing activities including requirements gathering, development and testing. 
     
  2. Plan and manage a project through the effective use of a variety of tools and techniques. 
     
  3. Apply their knowldege of secure software quality criteria in completing activities. 
     
  4. Use appropriate modelling techniques when specifying the requirements of and designing a system to meet the needs of a particular problem. 
     
  5. Evaluate techniques used in project management and the technical tasks involved in each stage of the development lifecycle. 
     
  6. Demonstrate an awareness of the nature of professional bodies and relevant codes of ethics and professional conduct. 
     
  7. Reflect on their experience of working in a team and individually on projects. 

How the module will be delivered

Modules will be delivered through blended learning. You will be guided through learning activities appropriate to your module, which may include: 

on-line resources that you work through at your own pace (e.g. videos, web resources, e-books, quizzes), 

on-line interactive sessions to work with other students and staff (e.g. discussions, live streaming of presentations, live-coding, team meetings) 

face to face small group sessions (e.g. help classes, feedback sessions) 

Skills that will be practised and developed

Project Planning and Time Management 

Requirements specification 

Software construction and testing 

Structure, refactor, and test code 

Systems modelling 

Team working & Communications Skills 

Defending your work 

Using version control software to collaborate on a project 

How the module will be assessed

Assessment is based on three distinct written individual portfolio submissions, evidencing the student’s work during module activities. 

Students will be provided with reassessment opportunities in line with University regulations. 

Assessment Breakdown

Type % Title Duration(hrs)
Autumn Semester Class Test 30 Class Test 1 N/A
Spring Semester Class Test 30 Class Test 2 N/A
Spring Semester Class Test 40 Class Test 3 N/A

Syllabus content

The need for Software Engineering 

Software Development Lifecycle 

Analysing and specifying requirements for software systems 

Unified Modelling Language 

Class diagrams 

Use case diagrams 

Activity Diagrams 

Software Development Methodologies 

Software Design 

Software Implementation: Modularity, Usability, and Object Oriented techniques 

Software Programming 

Write, refactor, test and run code 

Software Quality 

Software Testing & Validation 

Software Project management 

Project tracking and team communication (Kanban, Scrum, Slack) 

Balance of time, resource and quality 

version control software to collaborate on aspects of a project (code/documentation) 


Copyright Cardiff University. Registered charity no. 1136855