Alex G
- Research Program Mentor
PhD candidate at Massachusetts Institute of Technology
Expertise
ML for software engineering, automatic code generation, interpreting neural networks
Bio
My research interests lie in leveraging techniques in both machine learning (ML) and programming languages (PL) to facilitate software engineering. Crucially, traditional techniques in program synthesis are unable to capture real-world information. For my thesis, I am interested in using recent advances in large language models to help us alleviate this shortcoming, combining ML and PL to develop a system which can automatically generate class diagrams for an application from its text description. Ultimately, I am convinced that a lot of potential lies in combining ML’s powerful knowledge acquisition abilities and PL’s structured and formal approach. To this extent, I am excited about using neural networks to guide program synthesis (applying ML to PL) and designing new functional programming paradigms tailored towards machine learning engineering (applying PL to ML). My interests include having spontaneous adventures, reading, playing piano, mutually sharing stories, staring at pictures of dogs, going to raves/concerts, creating music, fantasizing about futuristic tech, infusing chaos, tasting new food combinations, writing OCaml, dreaming about startup ideas, having fulfilling and meaningful conversations, and enjoying long relaxing bike rides.Project ideas
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.