This lecture will help the students learn about modern techniques for finding bugs in programs. They will understand the strengths and weaknesses of these techniques, and evaluate how they complement current testing practices.
In this lecture, we cover a number of recently-developed techniques that check functionalities of programs. That is, they are alternatives to software testing. We will particularly focus on lightweight techniques that work at a push-of-a-button: those that are fully automatic and expect very little input from users.
The lecture will cover the following topics:
- Finding bugs in object-oriented programs,
- Summarizing programs’ behaviors,
- Detecting invariants about programs,
- Feedback loops