About
246
Publications
27,961
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
6,418
Citations
Publications
Publications (246)
This work examines the application of high-quality pedagogical practices in the design and implementation of an after-school physical computing program aimed at providing middle school students with access to computer science (CS) education. It subsequently examines how the program influenced students' learning of CS concepts and attitudes towards...
The need to expand computer science learning for all students has led to an increase in professional development (PD) opportunities for teachers. The Covid-19 pandemic, however, necessitated changes in well-established PD programs and a shift to virtual delivery. In this work, we describe our transition to a virtual PD institute, including the topi...
As the field of computer science (CS) is gaining increased attention, the need for qualified teachers is rapidly growing. Yet little is still known about the design features, implementation, and outcomes of professional development programs in computing. The purpose of this study is threefold: (a) examine a CS professional development program built...
Background and Context
A key challenge in advancing computer science education in K-12 schools is teacher preparation and support. School-university partnerships and service-learning programs where undergraduates assist teachers represent one promising approach to supporting K-12 computer science teaching.
Objectives
In this work, we examine the c...
Software engineers are crowdsourcing answers to their everyday challenges on Q&A forums (e.g., Stack Overflow) and more recently in public chat communities such as Slack, IRC, and Gitter. Many software-related chat conversations contain valuable expert knowledge that is useful for both mining to improve programming support tools and for readers who...
In this work we examine youth learning in an informal computing program implemented through a library-university partnership. In particular, we introduce and illustrate a culturally responsive computing framework which served as a foundation for the design of the program. Subsequently, we examine youth collaboration as well as affective and cogniti...
Despite increased attention on promoting access to computer science among all students, female and racially minoritized youth continue to be underrepresented in STEM, often lacking opportunities for computer science due to under-resourced schools and a lack of teacher preparation. As a result, K-12 schools are unable to fulfill the goal of expandin...
More than ever, developers are participating in public chat communities to ask and answer software development questions. With over ten million daily active users, Slack is one of the most popular chat platforms, hosting many active channels focused on software development technologies, e.g., python, react. Prior studies have shown that public Slac...
In this work, we examine whether repeated participation in an after-school computing program influenced student learning of computational thinking concepts, practices, and perspectives. We also examine gender differences in learning outcomes. The program was developed through a school–university partnership. Data were collected from 138 students ov...
Monthly, 50 million users visit Stack Overflow, a popular Q&A forum used by software developers, to share and gather knowledge and help with coding problems. Although Q&A forums serve as a good resource for seeking help from developers beyond the local team, the abundance of information can cause developers, especially novice software engineers, to...
The low cost of resource ownership and flexibility have led users to increasingly port their applications to the clouds. To fully realize the cost benefits of cloud services, users usually need to reliably know the execution performance of their applications. However, due to the random performance fluctuations experienced by cloud applications, the...
Sentiment analysis (SA) of text-based software artifacts is increasingly used to extract information for various tasks including providing code suggestions, improving development team productivity, giving recommendations of software packages and libraries, and recommending comments on defects in source code, code quality, possibilities for improvem...
Modern software development communities are increasingly social. Popular chat platforms such as Slack host public chat communities that focus on specific development topics such as Python or Ruby-on-Rails. Conversations in these public chats often follow a Q&A format, with someone seeking information and others providing answers in chat form. In th...
Modern software development communities are increasingly social. Popular chat platforms such as Slack host public chat communities that focus on specific development topics such as Python or Ruby-on-Rails. Conversations in these public chats often follow a Q&A format, with someone seeking information and others providing answers in chat form. In th...
In recent years, there has been increased attention on promoting access to computer science among all students. Our study seeks to address the underrepresentation of racially minoritized youth in computer science by offering a culturally responsive after-school coding club at a local public library that serves a racially and socioeconomically diver...
In this work, we describe our effort to develop, pilot, and evaluate a model for infusing computational thinking into undergraduate curricula across a variety of disciplines using multiple methods that previously have been individually tried and tested, including: (1) multiple pathways of computational thinking, (2) faculty professional development...
Computer science researchers spend significant time writing and presenting their research ideas to conference audiences, reviewers, funding agencies, collaborators, and other technical and general audiences. Good communication skills can increase a researcher's effectiveness and efficiency, while currently most students rely on their PhD mentor, te...
With the increasing use of battery‐powered devices comes the need to test mobile applications for energy consumption and energy issues. Unfortunately, energy testing is expensive because it is a manual, labor‐intensive process that often requires multiple, separate, energy‐measuring devices to collect energy usage data. The high costs of energy tes...
Energy consumption have become an important non-functional requirement for applications running on battery powered devices through data centers. Despite the increased interest on detecting and understanding what causes an application to be energy inefficient, few works focus on helping developers to automatically make their applications more energy...
The Committee on the Status of Women in Computing is an action-oriented committee of the Computing Research Association with the goal of taking positive action to increase the number and success of women in the Computer Science and Engineering research pipeline. This paper describes CRA-Ws major programs and highlights some of their impacts as demo...
Interaction data, gathered from developers' daily clicks and key presses in the IDE, has found use in both empirical studies and in recommendation systems for software engineering. We observe that this data has several characteristics, common across IDEs:
• exponentially distributed - some events or commands dominate the trace (e.g., cursor movemen...
Study abroad offers students the opportunity to experience other cultures, languages, and environments while obtaining credits toward their degree. Students are also taught to appreciate the diversity of people and culture, such that they may dismiss stereotypes and learn to communicate and collaborate cross-culturally in a global economy. Unfortun...
This workshop's goal is to help faculty who want to establish a course (or alternate vehicle) for mentoring undergraduates with some CS background to participate in K-12 teaching CS in local schools with engaging pedagogy. The workshop leverages the experiences and lessons learned from ten semesters of the organizers leading a course that meets onc...
While early software command recommender systems drew negative user reaction, recent studies show that users of unusually complex applications will accept and utilize command recommendations. Given this new interest, more than a decade after first attempts, both the recommendation generation (backend) and the user experience (frontend) should be re...
This study presents the design of an educational technology course for pre-service teachers specific to incorporating computational thinking in K-8 classroom settings. Subsequently, it examines how participation in the course influences pre-service teachers' dispositions and knowledge of computational thinking concepts and the ways in which such kn...
The availability of large corpora of online software-related documents today presents an opportunity to use machine learning to improve integrated development environments by first automatically collecting code examples along with associated descriptions. Digital libraries of computer science research and education conference and journal articles c...
The CS for All initiative places increased emphasis on the need to prepare K-12 teachers of computer science (CS). Professional development (PD) programs continue to be an essential mechanism for preparing in-service teachers who have little formal background in CS content, skills, and teaching pedagogy. While increased investment by federal agenci...
A large corpora of software-related documents is available on the Web, and these documents offer the unique opportunity to learn from what developers are saying or asking about the code snippets that they are discussing. For example, the natural language in a bug report provides information about what is not functioning properly in a particular cod...
Software Maintenance;Software Evolution;Special Issue;ICSME 2014
The energy consumption of software is an increasing concern as the use of mobile applications, embedded systems, and data center-based services expands. While research in green software engineering is correspondingly increasing, little is known about the current practices and perspectives of software engineers in the field. This paper describes the...
Most of our current understanding of how programmers perform various software maintenance and evolution tasks is based on controlled studies or interviews, which are inherently limited in size, scope, and realism. Replicating controlled studies in the field can both explore the findings of these studies in wider contexts and study new factors that...
Using IDE usage data to analyze the behavior of software developers in the field, during the course of their daily work, can lend support to (or dispute) laboratory studies of developers. This paper describes a technique that leverages Hidden Markov Models (HMMs) as a means of mining high-level developer behavior from low-level IDE interaction trac...
Battery life is an increasing concern for mobile devices. Recent studies have provided initial evidence that applying performance tips is an effective mechanism for decreasing energy usage. However, the generalizability of such studies to real applications is unclear. We aim to provide deeper insights into whether mobile application developers can...
Current policy efforts that seek to improve learning in science, technology, engineering, and mathematics (STEM) emphasize the importance of helping all students acquire concepts and tools from computer science that help them analyze and develop solutions to everyday problems. These goals have been generally described in the literature under the te...
One of the greatest challenges in broadening participation in computer science is teacher preparation, as few middle and high school teachers have a formal background in computing. Further, without a credentialing program, there are limited ways to learn content and pedagogical strategies for effective computer science instruction. As a result, pro...
In this paper, we present a semi-automatic approach for mining a large-scale dataset of IDE interactions to extract usage smells, i.e., inefficient IDE usage patterns exhibited by developers in the field. The approach outlined in this paper first mines frequent IDE usage patterns, filtered via a set of thresholds and by the authors, that are subseq...
Some high level algorithmic steps require more than one statement to implement, but are not large enough to be a method on their own. Specifically, many algorithmic steps (e.g., count, compare pairs of elements, find the maximum) are implemented as loop structures, which lack the higher level abstraction of the action being performed, and can negat...
This is position paper accepted to the Computational Science & Engineering
Software Sustainability and Productivity Challenges (CSESSP Challenges)
Workshop, sponsored by the Networking and Information Technology Research and
Development (NITRD) Software Design and Productivity (SDP) Coordinating Group,
held October 15th-16th 2015 in Washington DC,...
Code search is a fundamental part of program understanding and software maintenance and thus researchers have developed many techniques to improve its performance, such as corpora preprocessing and query reformulation. Unfortunately, to date, evaluations of code search techniques have largely been in lab settings, while scaling and transitioning to...
Our current understanding of how programmers perform feature location during software maintenance is based on controlled studies or interviews, which are inherently limited in size, scope and realism. Replicating controlled studies in the field can both explore the findings of these studies in wider contexts and study new factors that have not been...
A major challenge for broadening participation in computing within K-12 settings is the lack of trained teachers. While professional development programs provide opportunities for the development of knowledge, skills, and pedagogy in teaching computing, teachers need ongoing support throughout the academic year. In this paper, we describe a course-...
An observation in supercomputing in the past decade illustrates the transition of pervasive commodity products being integrated with the world's fastest system. Given today's exploding popularity of mobile devices, we investigate the possibilities for high performance mobile computing. Because parallel processing on mobile devices will be the key e...
Researchers have shown that program analyses that drive software development and maintenance tools supporting search, traceability and other tasks can benefit from leveraging the natural language information found in identifiers and comments. Accurate natural language information depends on correctly splitting the identifiers into their component w...
The tactical edge (battlefields, disaster relief operations, etc.) is an ideal domain for utilizing mobile devices for computation. However, these situations require jobs to complete in a timely manner. Efficiently offloading computation can ensure timely job completion, but access to cloud computing infrastructure is typically limited, unreliable,...
Context: Code refactoring's benefits to understandability, maintainability and extensibility are well known enough that automated support for refactoring is now common in IDEs. However, the decision to apply such transformations is currently performed without regard to the impacts of the refactorings on energy consumption. This is primarily due to...
Reducing the energy usage of software is becoming more important in many environments, in particular, battery-powered mobile devices, embedded systems and data centers. Recent empirical studies indicate that software engineers can support the goal of reducing energy usage by making design and implementation decisions in ways that take into consider...
In this poster, we describe our experience of designing and executing two different weeklong programs for 10th -- 12th grade students. The goal of our program is to attract students to the field of computing, increase their computing confidence and familiarize them with ways that computing impacts our community. Student groups consist of 32 student...
Presents the introductory welcome message from the conference proceedings. May include the conference officers' congratulations to all involved with the conference event and publication of the proceedings record.
Source code search tools are designed to help developers locate code relevant to their task. The effectiveness of a search technique often depends on properties of user queries, the code being searched, and the specific task at hand. Thus, new code search techniques should ideally be evaluated in realistic situations that closely reflect the comple...
Good programming practice and guidelines suggest that programmers use both vertical and horizontal spacing to visibly delineate between code segments that represent different algorithmic steps or high‐level actions. Unfortunately, programmers do not always follow these guidelines. Editors and integrated development environments (IDEs) can easily in...
This paper explores the parallel programmability, performance, and energy efficiency of a recently available Calxeda ARM-based server as a potential energy-efficient platform for computationally intensive applications. A novel OpenCL-based parallel programming model for the Calxeda ARM server is achieved via the use of a higher level STandarD Compu...
Many techniques have been developed to help programmers locate source code that corresponds to specific functionality, i.e., concern or feature location, as it is a frequent software maintenance activity. This paper proposes operational definitions for differentiating the roles that each program element of a concern plays with respect to the concer...
As web applications become more complex and are used more pervasively, testing demands are increasing without corresponding automated support. One promising approach to automatic test generation is statistical model‐based testing, where logged user behaviour is used to build a usage‐based model of web application navigation, from which abstract tes...
Many software development and maintenance tools involve matching between natural language words in different software artifacts (e.g., traceability) or between queries submitted by a user and software artifacts (e.g., code search). Because different people likely created the queries and various artifacts, the effectiveness of these tools is often i...
Software engineers produce code that has formal syntax and semantics, which establishes its formal meaning. However, the code also includes significant natural language found primarily in identifier names and comments. Furthermore, the code is surrounded by non-source artifacts, predominantly written in natural language. The NaturaLiSE workshop foc...
JSummarizer is an Eclipse plug-in for automatically generating natural language summaries of Java classes. The summary is based on the stereotype of the class, which implicitly encodes the design intent of the class and is automatically inferred by JSummarizer. The tool uses a set of predefined heuristics to determine what information will be refle...
Software engineers make decisions about the design of the software they are creating on a daily basis. These decisions may impact the application in terms of efficiency, usability, flexibility, etc. Different competing design decisions are therefore often evaluated in terms of their projected impact on quality metrics prior to implementation. Recen...
Software engineering and evolution techniques have recently started to exploit the natural language information in source code. A key step in doing so is splitting identifiers into their constituent words. While simple in concept, identifier splitting raises several challenging issues, leading to a range of splitting techniques. Consequently, the r...
To aid program comprehension, programmers choose identifiers for methods, classes, fields and other program elements primarily by following naming conventions in software. These software “naming conventions” follow systematic patterns which can convey deep natural language clues that can be leveraged by software engineering tools. For example, they...
Involving undergraduates in Computer Science research has many benefits. It's an exciting way for students to gain independent problem solving skills. It exposes them to interesting projects and the research process, thereby keeping them in computer science, even encouraging them to go to graduate school. And especially in primarily teaching instit...
Significant portions of software life cycle resources are de-voted to program maintenance, which motivates the development of au-tomated techniques and tools to support the tedious, error-prone tasks. Natural language clues from programmers' naming in literals, identifiers, and comments can be leveraged to improve the effectiveness of many soft-war...
Studies continue to report that more time is spent reading, locating, and comprehending code than actually writing code. The increasing size and complexity of software systems makes it significantly more challenging for humans to perform maintenance tasks on software without automated and semi-automated tools to support them, especially in the erro...
As the use of computers has grown, so too has concern about the amount of power they consume. Data centers, for example, are limited in scalability as they struggle with soaring energy costs from many large companies relying on fast, reliable, and round-the-clock computing services. On large-scale computing clusters, like data centers, even a small...
This paper reports our experience developing a product for a real-world client using a software engineering process across multiple semesters with different students each semester. New student teams test, debug, deploy, and critique previous semesters' software and then continue its development. Students are motivated to think critically about and...
As the use of computers has grown, so too has concern about the amount of power that they consume. Data centers, for example, are limited in scalability as they struggle with soaring energy costs as many large companies rely on fast, reliable, and round-the-clock computing services. On large-scale computing clusters, like data centers, even a small...
Automatically creating test cases from statistical models of web application usage is an effective approach to generating test cases that represent actual usage. The models are typically generated from all collected user sessions. In this paper, we consider how grouping the user sessions -- specifically by the user's privilege -- creates different...
We have developed and implemented, over four semesters, a model for engaging computer science majors in service learning for teachers of grades 6-8 at a K-8 school in an underserved community. This paper describes the design of a course focused on interweaving software engineering practice, service learning, and development of "soft" professional s...