Software, Datasets, and Replication Packages

My research involves designing and developing innovative prorgamming tools for software developers, novice programmers, and computer end-users. These tools and research data are made available to other researchers and practictions for further studies. I believe openness in science, through transparency, transparency, reproducibility, and replicability, is the key to fostering scientific progress.

Interactive Program Synthesis

interactive program synthesis

Program synthesis is a promising technique that dismantles programming barriers by automatically generate code from high-level user specifications, such as input-output examples and demonstrations. A long-standing challenge in program synthesis is the inherent ambiguity in user specifications, leading to plausible programs that match user-intended behavior on given inputs but deviate on unseen inputs.

Regae is an interactive program synthesizer for regular expressions. It helps users to disambiguate their intent by allowing them to specify how different parts of individual examples should be treated by a synthesizer via light-weight annotations. Furthermore, it reduces the cognitive load of understanding and validating synthesized programs by revealing how a synthesized program behave on additional examples from a hypothetical input space. UIST 2020 paper code

Supporting Modern Programming with Big Code

Leveraging Code Similarity and Redundancy for Systematic Software Development

Empirical Studies on Deep Learning Engineering