This course is about software reliability and how tools can help achieve it.
In this course, you will apply existing software reliability tools to existing software projects, and learn from the results. The focus will be on understanding what different tools are for, ranging from dynamic analysis to verification to static checkers to contract systems.
Prerequisites: This course has no official university prerequisites. However, you must be comfortable working with new software, trying things yourself, and handling new languages and tools. Additionally, the course will involve substantial work, regular presentations, and constant collaboration, which you will need to handle. In other words, maturity befitting a graduate student is expected.