Syllabuses - PG

CS886 - Advanced Security-by-Design

TIMETABLETEACHING MATERIAL
Credits20
Level5
SemesterSemester 2
Mode of Delivery
  • Attendance
Availability

 Offered as part of the following MSc programmes:

  • Cyber Security;
  • Advanced Computer Science;
  • Advanced Computer Science with Cyber Security, both standard entry and January entry
Prerequisites
Learning Activities Breakdown
  • Lectures: 10 x 2hrs;
  • Revision Lecture: 1 x 1hr; 
  • Tutorials: 9 x 1hrs; 
  • Labs: 10 x 2hrs; 
  • Private Study/Homework 150 hrs
Items of Assessment3
Assessment
  • 2 x 20% coursework, for example take-home verification project or invigilated in-person class tests;
  • 1 x 60% invigilated written examination;
ILO Assessment Mapping
  • Coursework  ILOs 1,3--6; Skills 1--3;
  • Exam ILOs 1--3,5; Skills 1--2;
Education for Sustainable Development Competences
  • Systems Thinking
  • Anticipatory (Future) Thinking
  • Strategic planning
  • Problem Solving
  • Critical Thinking
  • Self-awareness
Pedagogical Methods Used to Support Competency Development
  • Case Studies
  • Simulation Activities
  • Inquiry/Problem-Based-Learning
  • Participatory Learning
  • Debate or Discussion
  • Small Group Tutorial
  • Laboratory Practical
  • Flipped Classroom
  • Socratic questioning;
  • constructivist learning;
  • integrative learning;
  • reflective pedagogy;
Sustainable Development Goals
  • Decent work and economic growth
  • Industry, innovation and infrastructure
  • Peace, justice, and strong institutions
Resit

Resit is 100% by Examination.

LecturerJan de Muijnck-Hughes

Aims and Objectives

This course aims to equip students with an understanding of how formal methods can be applied at design time to address software security issues. By using mathematically grounded techniques, students will learn how to eliminate common classes of vulnerabilities, ensure program correctness, and enable more focused testing of other system aspects.

Learning Outcomes

At the end of this class learners should be able:

  1. to understand the different ways in which software can be insecure by design
  2. to understand the role and limitations that formal methods can have in addressing issues of software (in)security at design time
  3. to understand different approaches to formally reasoning about software programs at design time
  4. to apply formal methods at design time to mitigate known software vulnerabilities
  5. to identify software technologies that realise secure-by-design approaches
  6. to design and implement significant software that is ‘Secure-by-Design' and know where the built software is secure and where further analysis is required

Students will also develop transferable skills such as:

  1. develop problem-solving skills in applying formal methods to solve problems in making software secure by design
  2. develop critical thinking skills when comparing various formal method techniques to address issues of software security
  3. be creative in learning how to approach the application of formal methods to address software security issues

Syllabus

The course covers both theory and practice: key principles and paradigms, and their application in design and implementation. Practically, students will work with Dafny and Idris to build verified programs using modern formal techniques.

  • Sofware (In)Security and Formal Methods
    • How software can fail, what formal methods are and how they can and cannot help.
  • Secure-by-Design Approaches
    • Design-by-Contract using Dafny; Correctness-by-Construction using Idris;
  • Applications
    • Memory Safety; Data Security; Information Security; 
    • Securing Program Behaviour and Communication;
    • Programming Language Security and Compiler Verification;

Recommended Reading

This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.

This course will preference, where suitable, copy-left and freely available material. 

Last updated: 2026-08-25 11:46:35