I am a Postdoctoral Fellow at the University of Toronto, working with Tovi Grossman. I received my Ph.D., advised by Steve Oney, from the University of Michigan School of Information. I study and create programming support systems to improve people's performance in software development and programming learning. In particular, my research in human-computer interaction (HCI) studies challenges that computer programmers at all levels of expertise face when using existing tools and methods to seek support. It combines human and machine computation to create programming support systems that can effectively and scalably assist programmers when needed. The systems I create address challenges including providing personalized help in nearly real time, providing feedback to learners at scale, making communication more effective, better using human effort to progressively automate machine, and coordinating teams to more efficiently collaborate, which neither computers nor humans can effectively solve alone. To make these systems possible, my research explores how to design workflows and interfaces that can effectively coordinate and scale the collective effort of experts, non-experts, and machines.
News
Selected Publications
Umitation enables web developers to perform "copy-and-paste" (retarget) interaction on web front-end UI behaviors with a trigger-object-response framework.
To scale programming support in a large live classroom, PuzzleMe coordinates students to help each other by exchanging test cases and problem-solving approaches for coding exercises.
CoCapture allows designers to create UI behavior mockups on existing web interfaces by demonstrating and remixing, and to accurately describe their requests to developers by referencing the resulting mockups using hypertext.
Explores the motivations/barriers/opportunities of live streaming programming as compared to pre-recorded video through interviews with 14 streamers & 12 viewers.
Bashon introduces a crowdsourcing approach to help make program synthesis systems more robust, reliable, and trustworthy, and reduces the cost of downstream data collection for training a program synthesis system.
EdCode applies a semi-asychronous on-demand help seeking model in a learning setting, aiming towards provide more personalized support at scale.
Two techniques, interactive event-flow graphs and GUI-level guidance, that guide GUI testers to discover more test cases and avoid duplicate test cases.
Sifter improves the video curation process by combining automated techniques with a human-powered two-stage pipeline that browses, selects, and reaches an agreement.
CodeOn enables effective task hand-offs between developers and remote helpers by allowing asynchronous responses to on-demand requests.
Explore the types and causes of the coordination costs for transient software teams when using existing collaborative programming tools: a VCS and a shared editor.
Two studies that present the opportunities and the design recommendations of on-demand remote support systems for developers.
Other Publications