The need for highly dependable software systems continues to grow rapidly. Embedded within automobiles, aircraft, medical equipment, entertainment, household, and productivity devices, safety-critical systems have found their way into all facets of our daily lives. Advances in wired and wireless networking infrastructure enable an unprecedented degree of interconnection between previously separate functional entities. Increasingly, the resulting degree of complexity becomes the limiting factor for providing correct, safe and secure implementations of new applications, as well as for enhancing existing solutions by means of new features.
In this course we will study theory, methods and tools for establishing reliable software systems. In particular, we will visit the following topics:
There will be no final exam. This class is seminar-style, with a strong reading component. The grade will be determined based on individual achievements and teamwork. Individual achievements are participation in classroom discussion, and at least three paper presentations in class. Project teamwork consists of 2-3 students working together on some aspect of system verification (this can include composition, experimentation and enhancement of tools for software modeling and verification). This involves writing a project progress report (max. 5 pages), and a final project report (max. 20 pages) as a team effort. The details regarding the papers to read, and the project topics will be discussed during the first class meeting. Individual achievements and teamwork contribute as follows to the overall grade: