Vulnerabilities and threats can often be attributed to poor software design and implementation, including poor understanding of code-level security requirements, inadequate handling of exceptional cases, incomplete descriptions of the interface between components for secure interactions, and insufficient care in the use of programming languages.

You will gain an overall understanding of software security from a programming perspective in a security context to improve your ability to design, implement and analyse security-critical programs. You will also learn about secure programming techniques that can be used to detect vulnerabilities in software and defend against attacks such as buffer overflows, SQL injection and cross-site scripting. The module also covers common mistakes made in using programming languages, libraries and frameworks, and how they can be avoided.