Research Project Title:
Synthesizing programs with evolutionary algorithms and formal methods
abstract:This project will look into a new approach for program synthesis, the task of automatically generating software based on a user-provided specification. The approach will combine heuristic-based optimization methods with formal program synthesis methods, like satisfiability checking. We can use evolutionary algorithms to narrow the search space or find an optimal starting point, while using formal methods to calculate fitness heuristics and to search within the smaller spaces. The goal is to combine the efficiency of stochastic search with the correctness of formal methods.
I'm participating in this SuperUROP to further explore the theory of computer science and to gain research experience. I learned about genetic algorithms in 6.034 and a brief overview of program synthesis in 6.031, so I hope to learn more about both topics. I'm excited to apply what I've learned in those courses to help push the boundaries of program synthesis.