I recently defended my PhD thesis titled On-Demand Collaboration in Programming at the University of Michigan. 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 within-IDE help in nearly real time, providing feedback to learners at scale, synthesizing code snippets reliably, and testing an interface with high coverage, 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.
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.
Two studies that present the opportunities and the design recommendations of on-demand remote support systems for developers.