40 research outputs found

    Toward Finding and Supporting Struggling Students in a Programming Course with an Early Warning System

    Full text link
    Background: Programming skills are advantageous to navigate today's society, so it is important to teach them to students. However, failure rates for programming courses are high, and especially students who fall behind early in introductory programming courses tend to stay behind. Objective: To catch these students as early as possible, we aim to develop an early warning system, so we can offer the students support, for example, in the form of syntax drill-and-practice exercises. Method: To develop the early warning system, we assess different cognitive skills of students of an introductory programming course. On several points in time over the course, students complete tests that measure their ability to develop a mental model of programming, language skills, attention, and fluid intelligence. Then, we evaluated to what extent these skills predict whether students acquire programming skills. Additionally, we assess how syntax drill-and-practice exercises improve how students acquire programming skill. Findings: Most of the cognitive skills can predict whether students acquire programming skills to a certain degree. Especially the ability to develop an early mental model of programming and language skills appear to be relevant. Fluid intelligence also shows predictive power, but appears to be comparable with the ability to develop a mental model. Furthermore, we found a significant positive effect of the syntax drill-and-practice exercises on the success of a course. Implications: Our first suggestion of an early warning system consists of few, easy-to-apply tests that can be integrated in programming courses or applied even before a course starts. Thus, with the start of a programming course, students who are at high risk of failing can be identified and offered support, for example, in the form of syntax drill-and-practice exercises to help students to develop programming skills.Comment: 20 pages, 8 figure

    Tapping into the Natural Language System with Artificial Languages when Learning Programming

    Full text link
    Background: In times when the ability to program is becoming increasingly important, it is still difficult to teach students to become successful programmers. One remarkable aspect are recent findings from neuro-imaging studies, which suggest a consistent role of language competency of novice programmers when they learn programming. Thus, for effectively teaching programming, it might be beneficial to draw from linguistic research, especially from foreign language acquisition. Objective: The goal of this study is to investigate the feasibility of this idea, such that we can enhance learning programming by activating language learning mechanisms. Method: To this end, we conducted an empirical study, in which we taught one group of students an artificial language, while another group received an introduction into Git as control condition, before we taught both groups basic programming knowledge in a programming course. Result: We observed that the training of the artificial language can be easily integrated into our curriculum. Furthermore, we observed that language learning strategies were activated and that participants perceived similarities between learning the artificial language and the programming language. However, within the context of our study, we did not find a significant benefit for programming competency when students learned an artificial language first. Conclusion: Our study lays the methodological foundation to explore the use of natural language acquisition research and expand this field step by step. We report our experience here to guide research and to open up the possibilities from the field of linguistic research to improve programming acquisition.Comment: 13 pages, 5 figure

    Correlates of programmer efficacy and their link to experience: a combined EEG and eye-tracking study

    Get PDF
    Background: Despite similar education and background, programmers can exhibit vast differences in efficacy. While research has identified some potential factors, such as programming experience and domain knowledge, the effect of these factors on programmers’ efficacy is not well understood. Aims: We aim at unraveling the relationship between efficacy (speed and correctness) and measures of programming experience. We further investigate the correlates of programmer efficacy in terms of reading behavior and cognitive load. Method: For this purpose, we conducted a controlled experiment with 37 participants using electroencephalography (EEG) and eye tracking. We asked participants to comprehend up to 32 Java sourcecode snippets and observed their eye gaze and neural correlates of cognitive load. We analyzed the correlation of participants’ efficacy with popular programming experience measures. Results: We found that programmers with high efficacy read source code more targeted and with lower cognitive load. Commonly used experience levels do not predict programmer efficacy well, but selfestimation and indicators of learning eagerness are fairly accurate. Implications: The identified correlates of programmer efficacy can be used for future research and practice (e.g., hiring). Future research should also consider efficacy as a group sampling method, rather than using simple experience measures

    High-resolution cryo-EM structures of respiratory complex I : Mechanism, assembly, and disease

    Get PDF
    Respiratory complex I is a redox-driven proton pump, accounting for a large part of the electrochemical gradient that powers mitochondrial adenosine triphosphate synthesis. Complex I dysfunction is associated with severe human diseases. Assembly of the one-megadalton complex I in the inner mitochondrial membrane requires assembly factors and chaperones. We have determined the structure of complex I from the aerobic yeast Yarrowia lipolytica by electron cryo-microscopy at 3.2-angstrom resolution. A ubiquinone molecule was identified in the access path to the active site. The electron cryo-microscopy structure indicated an unusual lipid-protein arrangement at the junction of membrane and matrix arms that was confirmed by molecular simulations. The structure of a complex I mutant and an assembly intermediate provide detailed molecular insights into the cause of a hereditary complex I-linked disease and complex I assembly in the inner mitochondrial membrane.Peer reviewe

    High-resolution cryo-EM structures of respiratory complex I : Mechanism, assembly, and disease

    Get PDF
    Respiratory complex I is a redox-driven proton pump, accounting for a large part of the electrochemical gradient that powers mitochondrial adenosine triphosphate synthesis. Complex I dysfunction is associated with severe human diseases. Assembly of the one-megadalton complex I in the inner mitochondrial membrane requires assembly factors and chaperones. We have determined the structure of complex I from the aerobic yeast Yarrowia lipolytica by electron cryo-microscopy at 3.2-angstrom resolution. A ubiquinone molecule was identified in the access path to the active site. The electron cryo-microscopy structure indicated an unusual lipid-protein arrangement at the junction of membrane and matrix arms that was confirmed by molecular simulations. The structure of a complex I mutant and an assembly intermediate provide detailed molecular insights into the cause of a hereditary complex I-linked disease and complex I assembly in the inner mitochondrial membrane.Peer reviewe

    Harvey: A Greybox Fuzzer for Smart Contracts

    Full text link
    We present Harvey, an industrial greybox fuzzer for smart contracts, which are programs managing accounts on a blockchain. Greybox fuzzing is a lightweight test-generation approach that effectively detects bugs and security vulnerabilities. However, greybox fuzzers randomly mutate program inputs to exercise new paths; this makes it challenging to cover code that is guarded by narrow checks, which are satisfied by no more than a few input values. Moreover, most real-world smart contracts transition through many different states during their lifetime, e.g., for every bid in an auction. To explore these states and thereby detect deep vulnerabilities, a greybox fuzzer would need to generate sequences of contract transactions, e.g., by creating bids from multiple users, while at the same time keeping the search space and test suite tractable. In this experience paper, we explain how Harvey alleviates both challenges with two key fuzzing techniques and distill the main lessons learned. First, Harvey extends standard greybox fuzzing with a method for predicting new inputs that are more likely to cover new paths or reveal vulnerabilities in smart contracts. Second, it fuzzes transaction sequences in a targeted and demand-driven way. We have evaluated our approach on 27 real-world contracts. Our experiments show that the underlying techniques significantly increase Harvey's effectiveness in achieving high coverage and detecting vulnerabilities, in most cases orders-of-magnitude faster; they also reveal new insights about contract code.Comment: arXiv admin note: substantial text overlap with arXiv:1807.0787

    Empirical Standards for Software Engineering Research

    Full text link
    Empirical Standards are natural-language models of a scientific community's expectations for a specific kind of study (e.g. a questionnaire survey). The ACM SIGSOFT Paper and Peer Review Quality Initiative generated empirical standards for research methods commonly used in software engineering. These living documents, which should be continuously revised to reflect evolving consensus around research best practices, will improve research quality and make peer review more effective, reliable, transparent and fair.Comment: For the complete standards, supplements and other resources, see https://github.com/acmsigsoft/EmpiricalStandard
    corecore