For building robust software applications, it is important for the software engineer to make efficient use of the available building blocks. Learning the basic language constructs is only the first step in this process. It is becoming increasingly important for software engineers, especially students, to get acquainted with the available...
Visual programming languages (VPLs) have been widely used to support end-user programming. However, end users are still not able to reuse code as actively as professional programmers, even when given abundant resources such as a large VPL program repository. One reason may be that current VPL development environments lack features...
Application Programming Interfaces (APIs) enable software developers to utilize and create functionality that would otherwise take a lot of time and effort to build from scratch. Consequently, an essential part of software engineering training is for students to learn how to use APIs effectively. The existing jTutors system enables an...
Spreadsheets are a widely used end-user programming tool. Field audits have found that 80-90% of spreadsheets created by end users contain textual and formula errors in spreadsheets. Such errors may have severe negative consequences for users in terms of productivity, credibility, or profits. To solve the problem of spreadsheet errors,...
Software maintenance tasks often require finding information within existing code, which is time-consuming and difficult even for professional programmers. For example, programmers may need to know what code implements certain functionality or what is the purpose of certain code. In response, researchers have developed tools to help programmers find information...
Software engineers often need help with discovering and learning how to use APIs. For example, software engineers who are starting to learn Java, and they want to implement a certain feature in a program, they might want to reuse existing APIs in order to save time versus rewriting it themselves...
End-user programmers often struggle to create programs that run quickly and effectively, which can be a major deterrent in completing their tasks as desired. Current research has primarily focused on catching user mistakes, such as errors or misused formulas. However, end users deal with issues other than just correctness. In...
The design of programming tools is slow and costly. To ease this process, we have developed a design pattern catalog aimed at providing guidance about how to design tools for developers. This guidance is grounded in Information Foraging Theory (IFT), which empirical studies have shown to be useful for understanding...
Surveys are often used in health studies to collect data about participants for scientific research. An increasing number of health scientists are turning to online data collection methods because they are less costly and can reach a large diverse population quickly. Online surveys also make it easy to track and...
Debugging, an integral part of software development, is difficult for end-user programmers, especially in the case of complex programs. The process of isolating errors is time consuming without the help of debugging support provided by the tool. For example, the visual programming tool LondonTube supports creation of custom mobile-cloud-web applications,...