This course will provide an in-depth study of the principals and tenets of the design and development process of secure software used to provide enhanced cyber security. It will review the traditional models of software development, with the idea that a developer or project manager must strategize for security before starting development. Students will understand how to gather and plan for security requirements in development. The course will explore how vulnerabilities can be mapped and planned for. Students will understand how to run an effective development process, culminating with implementation, and how to review and test software. Finally, the course will introduce the concept of software assurance and its role in the cyber security paradigm.