In this class you will learn how to design secure systems and write secure code. You will learn how to find vulnerabilities in code and how to design software systems that limit the impact of security vulnerabilities. We will focus on principles for building secure systems and give many real world examples. In addition, the course will cover topics such as:
memory safety vulnerabilities
techniques and tools for vulnerability detection and defense
security principles such as sandboxing, isolation and least privilege
mobile platform and application security
basic crypto concepts
malware detection and defense
Course homework and labs will help students practice the concepts and techniques learned in class, such as how to find vulnerabilities and how to fix them. The labs and projects are designed to help students practice the principles of secure system design.