Learning Outcomes
The students who will attend the course are expected to
• learn how to design and automate software tests
• learn how to design and implement algorithms for static program analysis
• familiarize themselves with specifying correctness properties and model checking with appropriate tools
• apply verification techniques in safety problems from software systems with concurrency and/or communication
• apply verification techniques in software with security vulnerabilities
Course Content (Syllabus)
Software verification and validation, Software testing: white-box testing, black-box testing, model-based testing, object-oriented testing, Static program analysis: data-flow analysis, inter-procedural analysis, Axiomatic verification, Model Checking, Behavioral verification, Abstraction
Additional bibliography for study
1. D. Peled, "Software Reliability Methods", Springer-Verlag, 2001
2. G. Holzmann, "Design and Validation of Computer Protocols", Prentice Hall, 1990
3. F. Nielson, H. R. Nielson, C. M. Hankin, "Principles of Program Analysis", Springer, 1999