Since many software developers are compulsive coders, they have created software over the years to help them do their job. There are tools which make design and its associated tasks easier. The course introduces some basic tools and techniques to help you with design. Tools aren’t always tangible, however. The last two lessons of this course discuss questions of Ethics in software development. The purpose here is, as with tools, to equip you to better carry our your responsibilities as a designer. Students will be required to have a prior knowledge of writing and delivering software and some programming knowledge in java.
Who is this class for: This is a graduate class and it will be best appreciated by students who have a solid foundation in basic software engineering, who can code well (although no real coding is required) and who have had at least internships if not full-time jobs in software development. This is not to say that you need to know how to design software before you learn about designing secure software. It is to say that the more experience you already have in software development, the more the examples and ideas put forth in this course will resonate with you.
Course 3 of 4 in the Secure Software Design Specialization
General Design Notions
What is in a design and an introduction to hierarchical design representations.
Dynamic and Algebraic Designs
Hierarchical design which shows data flow, and rigorous, formally provable methods of design representation.
An introduction to IBM Rhapsody, a UML modeling tool.
An introduction to the use of JUnit which performs unit testing for Java software.
Unusual situations in a project in which you may find yourself, and what to do about them.
A comprehensive course assessment comprising of 5 quizzes. Each assessment contains a randomized set of questions from different modules of the course.
Graded: Assessment 1
Graded: Assessment 2
Graded: Assessment 3
Graded: Assessment 4
Graded: Assessment 5
ENROLL IN COURSE