In this course, students will learn design methodologies and best‐practices for the development of secure software, illustrated on popular programming languages such as C/C++ and Java. Topics span across the software development life‐cycle and include security requirements, secure software design and architecture principles, secure coding as well as testing and debugging techniques.
- Understand secure software architecture and design.
- Understand common software vulnerability.
- Understand the principles and techniques of defensive code practices.
- Understand the security testing techniques.
- Understanding common abuse cases and practices for managing secure software.
By the end of the course, students will be able to:
- Use at least one specification language to specify system requirements for secure software
- Identify common software vulnerability manually or with automatic tools
- Apply defensive coding techniques in practice
- Apply at least two different testing techniques for security
Assignments and Final exam