Skip to content


This module explores software security and the threats and hazards to applications, the types of attacks that can be carried out on software (e.g., memory violations, input validation and privilege escalation), OS vulnerabilities, penetration testing of software systems, malware analysis, static and dynamic analysis of software systems, and reverse engineering of suspicious code.

Course Structure

The course is split into the following weeks:

  1. Introduction. Software vulnerabilities.
  2. Low level programming languages (C: functions, stack, pointers)
  3. Reverse engineering
  4. Heap and memory errors, buffer overflow, programming assembler
  5. Application of buffer overflows
  6. Malware analysis
  7. Malware and memory analysis
  8. Static and dynamic analysis
  9. Risk analysis in terms of STRIDE and LINDDUN (see COMP6204 notes)
  10. Copyright protection and the SDLC
  11. Eliciting security requirements and misuse cases


There are three pieces of coursework, which are completed in our own time. Lab sessions are in place to help with these and putting theory into practice. Courseworks are split throughout the course. There is no examination.

The three courseworks cover the following aspects:

  1. Low level vulnerabilities
  2. Reverse engineering
  3. Memory forensics