51.503 Secure Software Engineering

Course Description

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.

Learning Objectives
  1. Understand secure software architecture and design.
  2. Understand common software vulnerability.
  3. Understand the principles and techniques of defensive code practices.
  4. Understand the security testing techniques.
  5. Understanding common abuse cases and practices for managing secure software.
Measurable Outcomes

By the end of the course, students will be able to:

  1. Use at least one specification language to specify system requirements for secure software
  2. Identify common software vulnerability manually or with automatic tools
  3. Apply defensive coding techniques in practice
  4. Apply at least two different testing techniques for security

12 credits

Instructor

Cyrille Pierre Joseph Jegourel

Components

Assignments, Project and Final Exam