Polypilot product mascot

Introducing PolyPilot:

Our AI-Powered Mentorship Program

Learn More
profile picture

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

Project ideas are meant to help inspire student thinking about their own project. Students are in the driver seat of their research and are free to use any or none of the ideas shared by their mentors.

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.

Coding skills

Python, OCaml

Languages I know

Chinese, intermediate

Teaching experience

I've mentored students for MIT's Leadership Training Institute (a program to develop leadership skills), mentored my middle and high school's math competition teams, and taught high school students competitive programming. At school, I've been a TA for 3 semesters. Finally, I am mentoring 2 undergraduates at MIT on research.

Credentials

Work experience

Jane Street (2021 - 2021)
Software Engineering Intern
Facebook (2020 - 2020)
Software Engineering Intern
Pony.AI (2019 - 2019)
Software Engineering Intern

Education

Massachusetts Institute of Technology
BS Bachelor of Science (2021)
EECS
Massachusetts Institute of Technology
MEng Master of Engineering candidate
EECS
Massachusetts Institute of Technology
PhD Doctor of Philosophy candidate
Machine Learning and Software Engineering

Interested in working with expert mentors like Alex?

Apply now