Software systems are increasingly integrated into every part of our society. As the number of systems and our dependence on these systems continue to grow, making these systems reliable and secure becomes an increasingly important challenge for our society and a daunting task for software developers.
Automatic patch generation holds out the promise of automatically correcting software defects without the need for developers to manually diagnose, understand, and correct these defects. In this talk, I will present two novel automatic patch generation systems, Prophet and Genesis, both of which learn from past successful human patches to automatically fix defects. By collectively leveraging development efforts worldwide, Prophet and Genesis automatically generate correct patches for real-world defects in large open-source C and Java applications with up to millions lines of code. This research also demonstrates that the growing volume of software programs is not just a challenge but also a great opportunity. Exploiting this opportunity can enable revolutionary new automated techniques that enhance software reliability and security.