The design step in developing software has some unique characteristics. First of all, it’s the only step where drawing pictures of things is the norm. Why is that? What do pictures do that other representations cannot do? Pictures have varying levels of detail; pictures have context. Pictures…paint a picture. Why are these things important? In this course, too, we begin looking at other disciplines (building architecture is a favorite one) for lessons on design.
Overview
Syllabus
- Common Vulnerabilities and Weaknesses
- How to use the CVE and CWE on-line databases to assess threats and mitigations
- Specific Design Considerations
- Specific things you can do to create a better design.
- Building Security in
- Security must be built in to a project, not added on.
- A Dramatic Failure
- The consequences of a bad design can haunt you forever.
- Bitcoin Foundations
- A detailed look at the first two sentences of the abstract of Nakamoto's 2009 paper announcing Bitcoin.
- The Bitcoin Project
- Continuing with the abstract of Nakamoto's Bitcoin paper. More details on how it works and how security is integrated into it.
- Simple software compromises
- A look into the specifics of two common exploitation techniques--buffer overflow and SQL injections. Even though they're "old", these exploits are still used today!
- Final Exam
- A comprehensive course assessment comprising of 5 quizzes. Each assessment contains a randomized set of questions from different modules of the course.
Taught by
Albert Glock and Oluwatobi Akanbi