Focus Areas
Communicating about Code
Immersive Programming
Accessibility
Building & Testing Interactive UIs
- FlowMatic: An Immersive Authoring Tool for Creating Interactive Scenes in Virtual Reality
- Improving Crowd-Supported GUI Testing with Structural Guidance
- Implementing Multi-Touch Gestures with Touch Groups and Cross Events
- Expresso: Building Responsive Interfaces with Keyframes
- InterState: A Language and Environment for Expressing Interface Behavior
- ConstraintJS: Programming Interactive Behaviors for the Web by Integrating Constraints and States
- FireCrystal: Understanding Interactive Behaviors in Dynamic Web Pages
Collaborative Data Science
On-Demand Support for Programmers
All Publications
- Understanding the Challenges and Needs of Programmers Writing Web Automation Scripts
Two studies to better understand the challenges of writing web automation code (particularly the kinds of context and feedback that are helpful when writing web automation code).
- EdCode: Towards Personalized Support at Scale for Remote Assistance in CS Education
EdCode applies a semi-asychronous on-demand help seeking model in a learning setting, aiming towards provide more personalized support at scale.
- A Hybrid Crowd-Machine Workflow for Program Synthesis
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.
- Sifter: A Hybrid Workflow for Theme-based Video Curation at Scale
Sifter improves the video curation process by combining automated techniques with a human-powered two-stage pipeline that browses, selects, and reaches an agreement.
- Callisto: Capturing the "Why" by Connecting Conversations with Computational Narratives
We designed Callisto, a Jupyter Notebook extension for better explaining messy notebooks. Callisto captures and stores contextual links between discussion messages and notebook elements with minimal effort from users. Callisto allows notebook readers to better understand the current notebook content and the overall problem-solving process that led to it, by making it possible to browse the discussions and code history relevant to any part of the notebook.
- Improving Crowd-Supported GUI Testing with Structural Guidance
Two techniques, interactive event-flow graphs and GUI-level guidance, that guide GUI testers to discover more test cases and avoid duplicate test cases.
- Explore, Create, Annotate: Designing Digital Drawing Tools with Visually Impaired People
A study to better understand how visually impaired people explore and create labeled tactile graphics.
- How Data Scientists Use Computational Notebooks for Real-Time Collaboration
We reported how synchronous editing in computational notebooks changes the way data scientists work together compared to working on individual notebooks through a formative survey and an observational study. Working on the synchronous notebooks improves collaboration by creating a shared context, encouraging more exploration, and reducing communication costs. However, the current synchronous editing features may lead to unbalanced participation and activity interference without strategic coordination.
- Studying the Benefits and Challenges of Immersive Dataflow Programming
In this paper, we study the benefits and challenges of immersive dataflow authoring, a paradigm that allows users to build VR applications using dataflow notation while immersed in the VR world.
- Implementing Multi-Touch Gestures with Touch Groups and Cross Events
Proposes two primitives to improve multi-touch programming: touch groups (which summarize multiple fingers rather than tracking them manually) and cross events (which summarize the movement of touch groups)
- Creating Guided Code Explanations with chat.codes
Introduces three features to improve textual-based conversations about code: deictic code references (where a message points to a specific region of code), in-line code diffs (to show how code changed throughout a conversation), and conversation version tracking (which allows viewers to view the state of code as it evolves through out the conversation).
- Adasa: A Conversational In-Vehicle Digital Assistant for Advanced Driver Assistance Features
A conversational digital assistant to help drivers use and understand Advanced Driver Assistance Systems (ADAS).
- Arboretum and Arbility: Improving Web Accessibility Through a Shared Browsing Architecture
A system that helps visually impaired web users overcome accessibility barriers through targeted handoffs of tasks that require visual-spatial interaction.
- Expresso: Building Responsive Interfaces with Keyframes
A programming-by-demonstration approach for creating responsive UIs, where users create keyframes at a few representative viewport sizes and specify smooth or jump (i.e., linear interpolation) transitions between them.
- Codeon: On-Demand Software Development Assistance
CodeOn enables effective task hand-offs between developers and remote helpers by allowing asynchronous responses to on-demand requests.
- CodeMend: Assisting Interactive Programming with Bimodal Embedding
A system that helps programmers find appropriate API functions and parameter values from natural language.
- Towards Providing On-Demand Expert Support for Software Developers
Two studies that present the opportunities and the design recommendations of on-demand remote support systems for developers.
- Codelets: Linking Interactive Documentation and Example Code in the Editor
A system that helps programmers use examples from the web better by embedding interactive explanations and cutomizers in the programmer's code editor.