Programming, Kits, and Libraries

会議の名前
UIST 2022
Using Annotations for Sensemaking About Code
要旨

Developers spend significant amounts of time finding, relating, navigating, and, more broadly, making sense of code. While sensemaking, developers must keep track of many pieces of information including the objectives of their task, the code locations of interest, their questions and hypotheses about the behavior of the code, and more. Despite this process being such an integral aspect of software development, there is little tooling support for externalizing and keeping track of developers' information, which led us to develop Catseye -- an annotation tool for lightweight notetaking about code. Catseye has advantages over traditional methods of externalizing code-related information, such as commenting, in that the annotations retain the original context of the code while not actually modifying the underlying source code, and can support richer interactions such as lightweight versioning, following-up on the annotation content, and can be used as navigational aids. In our investigation of developers' notetaking processes using Catseye, we found developers were able to successfully use annotations to support their code sensemaking when completing a debugging task, with participants in a small study who used Catseye fixing more bugs, on average, than the baseline.

著者
Amber Horvath
Carnegie Mellon University, Pittsburgh, Pennsylvania, United States
Brad A. Myers
Carnegie Mellon University, Pittsburgh, Pennsylvania, United States
Andrew Macvean
Google, Seattle, Washington, United States
Imtiaz Rahman
Hunter College, New York City, New York, United States
論文URL

https://doi.org/10.1145/3526113.3545667

Notational Programming for Notebook Environments: A Case Study with Quantum Circuits
要旨

We articulate a vision for computer programming that includes pen-based computing, a paradigm we term notational programming. Notational programming blurs contexts: certain typewritten variables can be referenced in handwritten notation and vice-versa. To illustrate this paradigm, we developed an extension, Notate, to computational notebooks which allows users to open drawing canvases within lines of code. As a case study, we explore quantum programming and designed a notation, Qaw, that extends quantum circuit notation with abstraction features, such as variable-sized wire bundles and recursion. Results from a usability study with novices suggest that users find our core interaction of implicit cross-context references intuitive, but suggests further improvements to debugging infrastructure, interface design, and recognition rates. Throughout, we discuss questions raised by the notational paradigm, including a shift from 'recognition' of notations to 'reconfiguration' of practices and values around programming, and from 'sketching' to writing and drawing, or what we call 'notating.'

受賞
Honorable Mention
著者
Ian Arawjo
Cornell University, Ithaca, New York, United States
Anthony J. DeArmas
Cornell University, Ithaca, New York, United States
Michael Roberts
Cornell University, Ithaca, New York, United States
Shrutarshi Basu
Harvard University, Cambridge, Massachusetts, United States
Tapan Parikh
Cornell Tech, New York, New York, United States
論文URL

https://doi.org/10.1145/3526113.3545619

SemanticOn: Specifying Content-Based Semantic Conditions for Web Automation Programs
要旨

Data scientists, researchers, and clerks often create web automation programs to perform repetitive yet essential tasks, such as data scraping and data entry. However, existing web automation systems lack mechanisms for defining conditional behaviors where the system can intelligently filter candidate content based on semantic filters (e.g., extract texts based on key ideas or images based on entity relationships). We introduce SemanticOn, a system that enables users to specify, refine, and incorporate visual and textual semantic conditions in web automation programs via two methods: natural language description via prompts or information highlighting. Users can coordinate with SemanticOn to refine the conditions as the program continuously executes or reclaim manual control to repair errors. In a user study, participants completed a series of conditional web automation tasks. They reported that SemanticOn helped them effectively express and refine their semantic intent by utilizing visual and textual conditions.

受賞
Honorable Mention
著者
Kevin Pu
University of Toronto, Toronto, Ontario, Canada
Rainey Fu
University of Toronto, Toronto, Ontario, Canada
Rui Dong
University of Michigan, Ann Arbor, Michigan, United States
Xinyu Wang
University of Michigan, Ann Arbor, Michigan, United States
Yan Chen
University of Toronto, Toronto, Ontario, Canada
Tovi Grossman
University of Toronto, Toronto, Ontario, Canada
論文URL

https://doi.org/10.1145/3526113.3545691

Exploring the Learnability of Program Synthesizers by Novice Programmers
要旨

Modern program synthesizers are increasingly delivering on their promise of lightening the burden of programming by automatically generating code, but little research has addressed how we can make such systems learnable to all. In this work, we ask: What aspects of program synthesizers contribute to and detract from their learnability by novice programmers? We conducted a thematic analysis of 22 observations of novice programmers, during which novices worked with existing program synthesizers, then participated in semi-structured interviews. Our findings shed light on how their specific points in the synthesizer design space affect these tools' learnability by novice programmers, including the type of specification the synthesizer requires, the method of invoking synthesis and receiving feedback, and the size of the specification. We also describe common misconceptions about what constitutes meaningful progress and useful specifications for the synthesizers, as well as participants' common behaviors and strategies for using these tools. From this analysis, we offer a set of design opportunities to inform the design of future program synthesizers that strive to be learnable by novice programmers. This work serves as a first step toward understanding how we can make program synthesizers more learnable by novices, which opens up the possibility of using program synthesizers in educational settings as well as developer tooling oriented toward novice programmers.

著者
Dhanya Jayagopal
University of California, Berkeley, Berkeley, California, United States
Justin Lubin
University of California, Berkeley, Berkeley, California, United States
Sarah E.. Chasins
University of California, Berkeley, Berkeley, California, United States
論文URL

https://doi.org/10.1145/3526113.3545659

Concept-Labeled Examples for Library Comparison
要旨

Programmers often rely on online resources—such as code examples, documentation, blogs, and Q&A forums—to compare similar libraries and select the one most suitable for their own tasks and contexts. However, this comparison task is often done in an ad-hoc manner, which may result in suboptimal choices. Inspired by Analogical Learning and Variation Theory, we hypothesize that rendering many concept-annotated code examples from different libraries side-by-side can help programmers (1) develop a more comprehensive understanding of the libraries' similarities and distinctions and (2) make more robust, appropriate library selections. We designed a novel interactive interface, ParaLib, and used it as a technical probe to explore to what extent many side-by-side concept-annotated examples can facilitate the library comparison and selection process. A within-subjects user study with 20 programmers shows that, when using ParaLib, participants made more consistent, suitable library selections and provided more comprehensive summaries of libraries' similarities and differences.

著者
Litao Yan
Harvard University, Cambridge, Massachusetts, United States
Miryung Kim
UCLA, Los Angeles, California, United States
Bjoern Hartmann
UC Berkeley, Berkeley, California, United States
Tianyi Zhang
Purdue University, West Lafayette, Indiana, United States
Elena L.. Glassman
Harvard University, Cambridge, Massachusetts, United States
論文URL

https://doi.org/10.1145/3526113.3545647

FLEX-SDK: An Open-Source Software Development Kit for Creating Social Robots
要旨

We present FLEX-SDK: an open-source software development kit that allows creating a social robot from two simple tablet screens. FLEX-SDK involves tools for designing the robot face and its facial expressions, creating screens for input/output interactions, controlling the robot through a Wizard-of-Oz interface, and scripting autonomous interactions through a simple text-based programming interface. We demonstrate how this system can be used to replicate an interaction study and we present nine case studies involving controlled experiments, observational studies, participatory design sessions, and outreach activities in which our tools were used by researchers and participants to create and interact with social robots. We discuss common observations and lessons learned from these case studies. Our work demonstrates the potential of FLEX-SDK to lower the barrier to entry for Human-Robot Interaction research.

著者
Patricia Alves-Oliveira
University of Washington, Seattle, Washington, United States
Kai Mihata
University of Washington, Seattle, Washington, United States
Raida Karim
University of Washington, Seattle, Washington, United States
Elin A.. Björling
University of Washington, Seattle, Washington, United States
Maya Cakmak
University of Washington, Seattle, Washington, United States
論文URL

https://doi.org/10.1145/3526113.3545707