I develop intelligent programming tools that enable real-time assistance for programmers to increase their productivity and learning gain. In particular, my research studies challenges that developers face, and designs systems to address these challenges. These sysems can enable personalized help in nearly real time, provide feedback to learners at scale, make communication more effective, more effectively use human effort to progressively automate machine, and coordinate teams to more efficiently collaborate, which neither computers nor humans can effectively solve alone.
Prior to VT, I was 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. I received my BS and MS from the University of Colorado, Boulder. I also did internships at Snap and Google.
These papers represent the research directions that I have been thinking about lately.
SemanticOn enables users to specify visual and textual semantic conditions in web automation programs by natural language description and content highlighting.
Thoughts: SemanticOn only considers 1-1 mapping between user intents and UI actions. How can we support other kinds of mappings? How can we design PbD systems are more trustworthy?
Explores the motivations/barriers/opportunities of live streaming programming as compared to pre-recorded video through interviews with 14 streamers & 12 viewers.
Thoughts: What can we do to enhance the learning experience in an online environment by adopting the in-person social features that a physical library has? What can be done to support different social needs in an online learning context in order to enhance learning outcomes?
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.
Thoughts: Factors like real-time (in-lecture), large scale (many students), novices, and complex information (code) make programming education at scale a challenging endeavor. How can we make the in-classroom programming learning experience more engaging for students, and easier to manage for instructors?
Teleoperators can use Mimic to program robots by demonstration and reuse demonstrations in new context
Asteroids explores a new space of remote physical task learning via telepresence robots
Umitation enables web developers to perform "copy-and-paste" (retarget) interaction on web front-end UI behaviors with a trigger-object-response framework.
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.
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.
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.