- Research Program Mentor
PhD Doctor of Philosophy candidate
ML for software engineering, automatic code generation, interpreting neural networks
Generating Code Skeletons from Natural Language
Consider a developer who is designing a classroom management application in an object-oriented language. First, they will decide which classes they need: students, assignments, teachers, etc. Then, for each class, they need to come up with its attributes and methods: a “student” class contains a “name” field, a “turn in assignment” method, etc. Mapping out these classes, attributes, and methods is a tedious and error-prone process. Web developers often spend hours or days creating these class diagrams, and the goal of this project is to automate that. The goal of this project is to let users specify a text description of an application and automatically synthesize these class diagrams from that description. Eventually, our synthesized class diagram will provide users with a complete set of classes, attributes, and methods, though our system currently only synthesizes classes and attributes. To generate an initial set of classes, we use NLP techniques to extract relevant noun phrases from the text description. By asking GPT-3 questions about these initial classes (such as “What does a student have?”), we are able to synthesize the fields of each class and recursively generate more classes.