CS 855: Development of High-Assurance Software Systems, Spring 2024

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, DUE1116
Instructor John Hatcliff, Office: 2160 Engineering Hall, Office Hours: By appointment

Use the tabs in the top tool bar to see different material supporting the course.

  • Syllabus – contains administrative details for students interested in taking the course
  • Lectures – contains lecture slides, lecture videos, and links to relevant reading materials
  • Schedule – contains calendar indicating lectures/homeworks planned for each week of the class
  • Tools – contains links to various tools that you will need to install for the course
  • Projects – contains supporting material for course projects