Loading [MathJax]/extensions/MathZoom.js
Amy J. Ko - IEEE Xplore Author Profile

Showing 1-25 of 43 results

Filter Results

Show

Results

In the early 2000s, software development was shifting from offline to online, and from command line to IDE. We discuss our 2004 paper examining the impact of this shift on developers’ program comprehension behaviors, our motivation for the work, and it's impact on the last twenty years of empirical studies and developer tool innovations. We end with a discussion of the possible unintended impacts ...Show More
With a shift towards culturally responsive computing pedagogy, some researchers have turned to integrating computing education with other subjects for its capacity to engage students’ interests and identities. However, prior work shows that language-learning integration is rare. Thus, in a post-secondary Spanish course, the first author taught a programming workshop using Twine to analyze Afro-Cub...Show More
Decision-making is a key software engineering skill. Developers constantly make choices throughout the software development process, from requirements to implementation. While prior work has studied developer decision-making, the choices made while choosing what solution to write in code remain understudied. In this mixed-methods study, we examine the phenomenon where developers select one specifi...Show More
Disparities in K-20 computing education are well documented and remarkably persistent. The purpose of this panel is to propose a more comprehensive and holistic view of inequities in computing education by applying a framework called CAPE. The CAPE Framework outlines four levels of the computer science (CS) education ecosystem: Capacity for CS Education, Access to CS Education, Participation in CS...Show More
Developers rely heavily on resources to find technical insights on how to use languages, APIs, and platforms, seeking help from Stack Overflow, GitHub, meetups, blogs, live streams, forums, documentation, and more. However, there is one kind of knowledge for which resources are hard to find: strategic knowledge. In contrast to technical knowledge, strategic knowledge provides insight into how to a...Show More
The program comprehension and mining software repository communities are, in practice, two separate research endeavors. One is concerned with what's happening in a developer's mind, while the other is concerned with what's happening in a team. And yet, implicit in these fields is a common goal to make better software and the common approach of influencing developer decisions. In this keynote, I pr...Show More
The program comprehension and mining software repository communities are, in practice, two separate research endeavors. One is concerned with what's happening in a developer's mind, while the other is concerned with what's happening in a team. And yet, implicit in these fields is a common goal to make better software and the common approach of influencing developer decisions. In this keynote, I pr...Show More
Learners regularly abandon online coding tutorials when they get bored or frustrated, but there are few techniques for anticipating this abandonment to intervene. In this paper, we examine the feasibility of predicting abandonment with machine-learned classifiers. Using interaction logs from an online programming game, we extracted a collection of features that are potentially related to learner a...Show More
This paper presents a three-year participant observation in which the author acted as CTO of a software startup, spanning more than 9,000 hours of direct experience. The author's emails and diary reflections were analyzed and synthesized into a set of nine claims about software engineering work. These claims help shape software engineering research, practice, and education by provoking new questio...Show More
Software engineering teams are usually interdisciplinary, consisting of both software engineers and non-software-engineers. While numerous studies have examined the success and failure of software engineering efforts from the perspective of software engineers, little is known about perspectives of expert non-software-engineers. In this study, we interviewed 46 experts across 10 roles at Microsoft ...Show More
Human-centered methods can help researchers better understand and meet programmers' needs. Because programming is a human activity, many of these methods can be used without change. However, some programmer needs require new methods, which can also be applied to domains other than software engineering. This article features five Web extras. The video at https://youtu.be/4PH9-qi-yTQ demonstrates Az...Show More
Many systems are designed to help novices who want to learn programming, but few support those who are not interested in learning (more) programming. This paper targets the subset of end-user programmers (EUPs) in this category. We present a set of principles on how to help EUPs like this learn just a little when they need to overcome a barrier. We then instantiate the principles in a prototype an...Show More
Good software engineers are essential to the creation of good software. However, most of what we know about software-engineering expertise are vague stereotypes, such as 'excellent communicators' and 'great teammates'. The lack of specificity in our understanding hinders researchers from reasoning about them, employers from identifying them, and young engineers from becoming them. Our understandin...Show More
Online games have the potential to reach a wide audience and teach new skills. I propose to use Gidget, an online debugging game, to teach novices computer programming concepts in an engaging way. Learners must debug faulty programs to progress through the game, which are set up in modules to teach specific computer programming concepts. Once all the levels are complete, learners are given the opt...Show More
Although there are many systems designed to engage people in programming, few explicitly teach the subject, expecting learners to acquire the necessary skills on their own as they create programs from scratch. We present a principled approach to teach programming using a debugging game called Gidget, which was created using a unique set of seven design principles. A total of 44 teens played it via...Show More
Engagement is a necessary condition for learning, and previous studies have shown that engagement can be significantly affected by changing the presentation of game elements within an educational game. In a three condition controlled experiment, we examined how changing the presentation of the data elements referred to in a game's goals would influence the purposefulness of the goals and thereby a...Show More
Support requests are a major source of feedback in software development. However, like sentences whispered in a children's telephone game, as an issue moves through a software development process, it may undergo many changes, making it difficult to ensure that the problem reported was actually fixed. To better understand how software teams preserve the integrity of user-reported issues, we observe...Show More
While many studies have investigated the challenges that developers face in finding and using API documentation, few have considered the role of developers' conceptual knowledge in these tasks. We designed a study in which developers were asked to explore the feasibility of two requirements concerning networking protocols and application platforms that most participants were unfamiliar with, obser...Show More
Many software producers utilize beta programs to predict post-release quality and to ensure that their products meet quality expectations of users. Prior work indicates that software producers need to adjust predictions to account for usage environments and usage scenarios differences between beta populations and post-release populations. However, little is known about how usage characteristics re...Show More
Many dynamic programming language features, such as implicit declaration, reflection, and code generation, make it difficult to verify the existence of identifiers through standard program analysis. We present an alternative verification, which, rather than analyzing the semantics of code, highlights any name or pair of names that appear only once across a program’s source files. This uniqueness h...Show More
Open bug reporting allows end-users to express a vast array of unwanted software behaviors. However, users’ expectations often clash with developers’ implementation intents. We created a classification of seven common expectation violations cited by end-users in bug report descriptions and applied it to 1,000 bug reports from the Mozilla project. Our results show that users largely described bugs ...Show More
Little is known about the formation of people's first perceptions about computers and computer code, yet it is likely that these impressions have a lasting effect on peoples' use of technology in their lives and careers. Brief autobiographical essays about these first impressions were solicited from a diverse population of young adults and these essays were analyzed for factors that contributed to...Show More
The future of computer use is undeniably on the Web. People bank, store documents, do research, and even make and maintain friendships online. With this explosion of Web-based content and applications has come a proliferation of tools to streamline and automate people's interactions on the Web, leading many users to write Web scripts to simplify their work. With CoScripter, users can automate Web ...Show More
In recent years, software has become indispensable in complex domains such as science, engineering, biomedicine, and finance. Unfortunately, software developers and user researchers, who are usually experts in programming and Human-Computer Interaction (HCI) methods, respectively, often find that the insight needed to design for complex domains only comes with years of domain experience. How can e...Show More
We present the results of a study designed to better understand information-seeking activities in bioinformatics software development by computer scientists and biologists. We collected data through semi-structured interviews with eight participants from four different bioinformatics labs in North America. The research focus within these labs ranged from computational biology to applied molecular ...Show More