The course will cover techniques for developing high assurance systems – systems that are safety critical, security critical, or mission critical in nature. In contrast to general purpose systems, high assurance system development tends to place a more stronger emphasis on rigorous requirements and specifications, verification and validation, risk management, and certification. High assurance system development is more likely to be amenable to and benefit from formal verification techniques – techniques that use various forms of machine-checkable mathematics or logic to demonstrate that a system satisfies its specification. The goal of this course teach techniques for developing critical software that would usually not be covered in other courses in your computer science degree program. In particular, the course will focus on writing requirements for safety critical systems, formal architecture definition, risk management techniques including various forms of hazard analysis, safety systems, and automated verification. We will aim to illustrate an end-to-end development process for critical systems using examples of varying size.
Lectures | Tuesday (T) & Thursday (U), 2:30pm - 3:45pm, DUE3099A (CS Conference Room) |
Instructor | John Hatcliff, Office: 2183 Engineering Hall, Office Hours: 3:45-5pm Tuesday and Thursday, |
Teaching Assistant | Venkat Margapuri |
If you have a question about a homework, be sure to push your work to your Github repo before emailing. Emailing screen shots and code snippets only instead of pushing to Github will slow our response to you. |
Use the tabs in the top tool bar to see different material supporting the course.