Bugs in programs remain a pernicious problem. Research techniques in automated program improvement and repair are typically classified as either heuristic---searching over a set of syntactic changes, often drawn from an existing body of code---or semantic---leveraging symbolic analysis or synthesis to construct program-improving changes with respect to an inferred specification. In this talk, I will outline our recent advances in techniques that lie squarely in the middle, drawing on the best of both worlds: We reason about desired program behavior semantically, and use that characterization to scalably identify and adapt pre-existing code to fix bugs automatically. I will particularly emphasize the potential these approaches have to construct high quality patches, tackling a key outstanding challenge in the state-of-the-art in automated patching.
See more on this video at https://www.microsoft.com/en-us/research/video/scalable-semantic-code-search-high-quality-program-repair/