About Me

PhD Student in Cognitive Science at UC San Diego

I am currently a PhD student in Cognitive Science at UC San Diego in The Design Lab under the direction of Philip Guo. I am interested in doing research in the areas of human-computer interaction, leveraging creative and expert live streams to create better tutorials for novices, and designing tools to support and enhance the workflows of content creators, developers, and data scientists Previously, I was a research intern at Microsoft, a member of the alt-code lab under the direction of Chris Parnin while obtaining my MS in Computer Science, and a full-stack software engineer at Verizon. Below are some selected research projects I've done. Download my CV here: CV Link

If you would like to contact me, select one of the links on the bottom of the side bar.

Things I Can Do

I investigate problems faced by developers and users in order to create tools to solve those problems.

  • Code in Python, NodeJS, Java, and more
  • Full-stack software engineer
  • Research in HCI and SWE
  • Private Pilot: Single Engine Land

Research / Projects

Here are a few things I have worked on as a graduate student

Cicero: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists

We propose a unified interaction model basedon programming-by-example that generates readable code fora variety of useful data transformations, implemented as a Jupyter notebook extension called Cicero. User study results demonstrate that data scientists are significantly more effective and efficient at data wrangling with Cicero over manual programming. Qualitative participant feedback indicates that Cicero was useful and reduced barriers in havingto recall or lookup the usage of various data transform functions.

(*In Submission*)

Aiding Collaborative Reuse of Computational Notebooks with Annotated Cell Folding

We present the design and evaluation of a Jupyter Notebook extension providing facilities for annotated cell folding. Through a lab study and multi-week deployment we find cell folding aids notebook navigation and comprehension, not only by the original author, but also by collaborators viewing the notebook in a meeting or revising it on their own. These findings extend our understanding of code folding’s trade-offs to a new medium and demonstrate its benefits for everyday collaboration.

Paper Link

Comparing developer-provided to user-provided tests for fault localization and automated program repair

We compared, both quantitatively and qualitatively, the developer-provided tests committed along with fixes (as found in the version control repository) versus the user-provided tests extracted from bug reports (as found in the issue tracker). We provided evidence that developer-provided tests are more targeted toward the defect and encode more information than user-provided tests, which can skew results for fault localization techniques and automated program repair.

Paper Link

HappyFace: Identifying and predicting frustrating obstacles for learning programming at scale

HappyFace aims to discover frustrating experiences felt by learners during the programming process. We performed a large-scale collection of code snippets from PythonTutor, and collected a frustration rating through a light-weight feedback mechanism. We then devised a technique that is able to automatically identify sources of frustration based on participants labeling frustrating learning experiences.

Paper Link