810 research outputs found

    Fifty years of the Psychology of Programming

    Get PDF
    This paper reflects on the evolution (past, present and future) of the ‘psychology of programming' over the 50 year period of this anniversary issue. The International Journal of Human-Computer Studies (IJHCS) has been a key venue for much seminal work in this field, including its first foundations, and we review the changing research concerns seen in publications over these five decades. We relate this thematic evolution to research taking place over the same period within more specialist communities, especially the Psychology of Programming Interest Group (PPIG), the Empirical Studies of Programming series (ESP), and the ongoing community in Visual Languages and Human-Centric Computing (VL/HCC). Many other communities have interacted with psychology of programming, both influenced by research published within the specialist groups, and in turn influencing research priorities. We end with an overview of the core theories that have been developed over this period, as an introductory resource for new researchers, and also with the authors’ own analysis of key priorities for future research

    DRAFT-What you always wanted to know but could not find about block-based environments

    Get PDF
    Block-based environments are visual programming environments, which are becoming more and more popular because of their ease of use. The ease of use comes thanks to their intuitive graphical representation and structural metaphors (jigsaw-like puzzles) to display valid combinations of language constructs to the users. Part of the current popularity of block-based environments is thanks to Scratch. As a result they are often associated with tools for children or young learners. However, it is unclear how these types of programming environments are developed and used in general. So we conducted a systematic literature review on block-based environments by studying 152 papers published between 2014 and 2020, and a non-systematic tool review of 32 block-based environments. In particular, we provide a helpful inventory of block-based editors for end-users on different topics and domains. Likewise, we focused on identifying the main components of block-based environments, how they are engineered, and how they are used. This survey should be equally helpful for language engineering researchers and language engineers alike

    Human-Centric Tools for Navigating Code

    Get PDF
    All software failures are fundamentally the fault of humansthe software\u27s design was flawed. The high cost of such failures ultimately results in developers having to design, implement, and test fixes, which all take considerable time and effort, and may result in more failures. As developers work on software maintenance tasks, they must navigate enormous codebases that may comprise millions of lines of code organized across thousands of modules. However, navigating code carries with it a plethora of problems for developers. In the hopes of addressing these navigation barriers, modern code editor and development environments provide a variety of features to aid in navigation; however, they are not without their limitations. Code navigations take many forms, and in this work I focus on three key types of code navigation in modern software development: navigating the working set, navigating among versions of code, and navigating the code structure. To address the challenges of navigating code, I designed three novel software development tools, one to enhance each type of navigation. First, I designed and implemented Patchworks, a code editor interface to support developers in navigating the working set. Patchworks aims to make these more efficient by providing a fixed grid of open code fragments that developers can quickly navigate. Second, I designed and implemented Yestercode, a code editor extension to support navigating among versions of code. Yestercode does so by providing a comparison view of the current code and a previous version of the same code. Third, I designed and implemented Wandercode, a code editor extension to enable developers to efficiently navigate the structure of their code. Wandercode aims to do so by providing a visualization of the code\u27s call graph overlayed on the code editor. My approach to designing these tools for more efficient code navigation was a human-centric onethat is, based on the needs of actual developers performing real software development tasks. Through user study evaluations, I found that these tools significantly improved developer productivity by reducing developers\u27 time spent navigating and mental effort during software maintenance tasks

    Fostering computational thinking skills with a tangible blocks programming environment

    Get PDF
    Computational Thinking has recently returned into the limelight as an essential skill to have for both the general public and disciplines outside Computer Science. It encapsulates those thinking skills integral to solving complex problems using a computer, thus widely applicable in our technological society. Several public initiatives such as the Hour of Code successfully introduced it to millions of people of different ages and backgrounds, mostly using Blocks Programming Environments like Scratch that lower the barriers of programming and facilitate learning. In this paper we present our arguments for fostering Computational Thinking skills using a Blocks Programming Environment augmented with a Tangible User Interface, namely by exploiting objects whose interactions with the physical environment are mapped to digital actions performed on the system. Our demonstration includes a working prototype implementing our Tangible Blocks Programming Environment called TAPAS

    Enforced generative patterns for the specification of the syntax and semantics of visual languages

    Full text link
    This is the author’s version of a work that was accepted for publication in Journal of Visual Languages and Computing. Changes resulting from the publishing process, such as peer review, editing, corrections, structural formatting, and other quality control mechanisms may not be reflected in this document. Changes may have been made to this work since it was submitted for publication. A definitive version was subsequently published in Journal of Visual Languages and Computing,19, 4 (2008) DO: 10.1016/j.jvlc.2008.04.004Selected Papers from IEEE Symposium on Visual Languages and Human Centric Computing 2007 (VL/HCC 2007)We present the new notion of enforced generative pattern, a structure that declares positive or negative conditions that must be satisfied by a model. Patterns are applied to transformation rules resulting in new rules that modify models according to the pattern specification. In the case of a negative pattern, an application condition is added to the rule. In the case of a positive one, the rule is modified to consider additional context in its left-hand side and to increase its effects. We have defined these patterns in an abstract setting, which enables their instantiation for different structures, like graphs, triple graphs and graph transformation rules. We apply the previous concepts to the specification of the syntax and semantics of visual languages. In particular, we show instantiations for: (i) graphs, with applications at the syntactical level; (ii) triple graphs, for the coordination of syntax and static semantics; and (iii) rules, for the incremental construction of execution rules. We present some examples that illustrate the usefulness of the combination of these three instantiations. In particular, we show the specification of environments for visual languages with token-holder semantics, discrete-event semantics and communication semantics.Work supported by the Spanish Ministry of Education and Science, projects MOSAIC (TSI2005-08225-C07-06) and MODUWEB (TIN2006-09678). We thank the referees for their detailed and useful com- ments, which helped us in improving the paper

    Improving program comprehension by answering questions (keynote)

    Full text link
    • …
    corecore