Self-paced video training — 7 modules, 49 lessons. Work through it at your own pace — every lesson is real practitioner training, not slide-reading.
▶INSIDE THE COURSE · 49 LESSONSABOUT THIS COURSE
Software security fundamentals: 49 lessons on how software fails and how it's defended — secure development practices, common vulnerability patterns and the mitigations that remove them.
A good fit for developers moving toward security work, and for security learners who want grounding in the code side.
CURRICULUM
This lesson features an interview with Andy Chou discussing software security.
This lesson features an interview with Gary McGraw focusing on software security principles.
This lesson features an interview with Patric Godfroid covering his insights on software security.
This lesson discusses the memory layout in the context of software security.
This lesson explains the concept of buffer overflow vulnerabilities and their implications.
This lesson covers code injection attacks and their impact on software security.
This lesson discusses various other memory exploits that can affect software security.
This lesson focuses on format string vulnerabilities and their exploitation.
This lesson addresses specific vulnerabilities identified as MVI 0037.
This lesson serves as an introduction to the topics covered in Week 2.
This lesson discusses type safety and its importance in software security.
This lesson provides strategies for avoiding exploitation in software applications.
This lesson explains return-oriented programming and its relevance to software security.
This lesson covers the principles and importance of Control Flow Integrity in software security.
This lesson focuses on best practices for writing secure code to prevent vulnerabilities.
This lesson discusses techniques for ensuring Memory Safety in software applications.
This lesson explores security considerations and practices specifically for web applications.
This lesson introduces fundamental concepts and technologies related to the web.
This lesson examines the SQL injection vulnerability and its implications for database security.
This lesson presents strategies and techniques to counter SQL injection attacks.
This lesson explains the concept of web-based state management and its security implications.
This lesson covers the risks and prevention methods associated with session hijacking.
This lesson discusses cross-site request forgery (CSRF) and its impact on web security.
This lesson provides an edited overview of Web 2.0 technologies and their security challenges.
This lesson focuses on cross-site scripting (XSS) vulnerabilities and their mitigation.
This lesson introduces threat modeling as a method for architectural risk analysis.
This lesson covers the importance of defining security requirements in software development.
This lesson identifies common design flaws that can lead to security vulnerabilities.
This lesson emphasizes the design principle of favoring simplicity in security architecture.
This lesson discusses the design principle of trusting components with reluctance.
This lesson covers the design categories of defense in depth and monitoring-traceability.
This lesson outlines the most critical design flaws that affect software security.
This lesson presents a case study on the VSFTPD software to illustrate security lessons.
This lesson discusses best practices for designing and building secure software systems.
This lesson introduces the concept of symbolic execution in the context of software analysis.
This lesson covers flow analysis techniques used to enhance software security.
This lesson provides a historical overview of symbolic execution and its development.
This lesson explains the basics of symbolic execution and its applications in security.
This lesson covers the addition of sensitivity in flow analysis techniques.
This lesson explores context-sensitive analysis methods in software security.
This lesson discusses symbolic execution as a search method and the development of solvers.
This lesson focuses on scaling flow analysis to accommodate complete languages and problem sets.
This lesson provides an overview of symbolic execution systems in software security.
This lesson addresses challenges and variations encountered in software security analysis.
This lesson introduces static analysis concepts and their importance in software security.
This lesson continues the introduction to static analysis, expanding on its applications.
This lesson introduces the fundamentals of penetration testing in software security.
This lesson delves into practical penetration testing techniques and methodologies.
This lesson covers fuzzing techniques and their role in software security testing.
CURATED BY

Selected from working practitioners' training libraries and kept whole — modules, labs and walkthroughs exactly as taught.
GOOD TO KNOW
Lessons stream in the browser and remember where you stopped.
Watch on two devices at once — phone, tablet or desktop.
Download buttons are disabled; delivery is encrypted and authenticated per request.
$179 · ONE PAYMENT
One payment unlocks all 49 lessons instantly — start with lesson one the moment you check out.