Repository logo
 

Machine learning for computer aided programming: from stochastic program repair to verifiable program equivalence

dc.contributor.authorKommrusch, Steve, author
dc.contributor.authorPouchet, Louis-Noël, advisor
dc.contributor.authorAnderson, Charles, advisor
dc.contributor.authorBeveridge, Ross, committee member
dc.contributor.authorAzimi-Sadjadi, Mahmood, committee member
dc.date.accessioned2022-05-30T10:22:33Z
dc.date.available2022-05-30T10:22:33Z
dc.date.issued2022
dc.description.abstractComputer programming has benefited from a virtuous cycle of innovation as improvements in computer hardware and software make higher levels of program abstraction and complexity possible. Recent advances in the field of machine learning, including neural network models for translating and answering questions about human language, can also be applied to computer programming itself. This thesis aims to make progress on the problem of using machine learning to improve the quality and robustness of computer programs by contributing new techniques for representation of programming problems, applying neural network models to code, and training procedures to create systems useful for computer aided programming. We first present background and preliminary studies of machine learning concepts. We then present a system that directly produces source code for automatic program repair which advances the state of the art by using a learned copy mechanism during generation. We extend a similar system to tune its learning for security vulnerability repair. We then develop a system for program equivalence which generates deterministically checkable output for equivalent programs. For this work we detail our contribution to the popular OpenNMT-py GitHub project used broadly for neural machine translation. Finally, we show how the deterministically checkable output can provide self-supervised sample selection which improves the performance and generalizability of the system. We develop breadth metrics to demonstrate that the range of problems addressed is representative of the problem space, while demonstrating that our deep neural networks generate proposed solutions which can be verified in linear time. Ultimately, our work provides promising results in multiple areas of computer aided programming which allow human developers to produce quality software more effectively.
dc.format.mediumborn digital
dc.format.mediumdoctoral dissertations
dc.identifierKommrusch_colostate_0053A_17065.pdf
dc.identifier.urihttps://hdl.handle.net/10217/235289
dc.languageEnglish
dc.language.isoeng
dc.publisherColorado State University. Libraries
dc.relation.ispartof2020-
dc.rightsCopyright and other restrictions may apply. User is responsible for compliance with all applicable laws. For information about copyright law, please see https://libguides.colostate.edu/copyright.
dc.subjectmachine learning
dc.subjectprogram repair
dc.subjectprogram equivalence
dc.subjectcomputer aided programming
dc.titleMachine learning for computer aided programming: from stochastic program repair to verifiable program equivalence
dc.typeText
dcterms.rights.dplaThis Item is protected by copyright and/or related rights (https://rightsstatements.org/vocab/InC/1.0/). You are free to use this Item in any way that is permitted by the copyright and related rights legislation that applies to your use. For other uses you need to obtain permission from the rights-holder(s).
thesis.degree.disciplineComputer Science
thesis.degree.grantorColorado State University
thesis.degree.levelDoctoral
thesis.degree.nameDoctor of Philosophy (Ph.D.)

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Kommrusch_colostate_0053A_17065.pdf
Size:
4.76 MB
Format:
Adobe Portable Document Format