Secure Software Development
Overview
- Credit value: 15 credits at Level 5
- Convenor and tutor: Prof George Roussos
- Assessment: a mini-project (50%) and two-hour open-book examination (50%)
Module description
This module is a core component of the BSc Computer Science for Cybersecurity. It will support you in developing further programming skills in C and C++, and introduces Rust, emphasising secure coding practices and efficient resource management. You will learn to identify, analyse and mitigate common software vulnerabilities, and develop secure, multithreaded applications.
The module will give you hands-on programming experience and the opportunity to complete a mini project that integrates secure software development practices in a practical setting.
Indicative syllabus
- Introduction
- Further C programming
- Further C++ programming
- System resources and security
- Secure coding practices in C and C++
- Introduction to Rust
- Further Rust programming
- Multithreading in Rust
- Secure software development in Rust
Learning objectives
By the end of this module, you will be able to:
- understand intermediate C and C++ programming concepts, including memory management, pointers, and dynamic allocation
- apply secure coding practices in C and C++ to mitigate common vulnerabilities such as buffer overflows and use-after-free errors
- evaluate the use of system resources including memory and processor time, in software applications and optimise their usage for security and efficiency
- explain the key principles of Rust programming, including ownership, borrowing and lifetimes, and how these contribute to memory safety
- develop secure, multithreaded applications in Rust, utilising traits and generics to write flexible and efficient code
- analyse software for potential security vulnerabilities and propose appropriate mitigation strategies
- critically evaluate different programming paradigms including procedural, object-oriented and functional, and their impact on software security
- formulate and test hypotheses related to software security issues, using both theoretical knowledge and practical experimentation
- synthesise knowledge from C, C++ and Rust to design and implement secure software solutions
- utilise static and dynamic analysis tools to identify and rectify security issues in software code
- conduct research on emerging threats and security practices in software development
- implement secure coding practices in laboratory settings, demonstrating proficiency in both C/C++ and Rust.