3,225 research outputs found

    Links between the personalities, styles and performance in computer programming

    Get PDF
    There are repetitive patterns in strategies of manipulating source code. For example, modifying source code before acquiring knowledge of how a code works is a depth-first style and reading and understanding before modifying source code is a breadth-first style. To the extent we know there is no study on the influence of personality on them. The objective of this study is to understand the influence of personality on programming styles. We did a correlational study with 65 programmers at the University of Stuttgart. Academic achievement, programming experience, attitude towards programming and five personality factors were measured via self-assessed survey. The programming styles were asked in the survey or mined from the software repositories. Performance in programming was composed of bug-proneness of programmers which was mined from software repositories, the grades they got in a software project course and their estimate of their own programming ability. We did statistical analysis and found that Openness to Experience has a positive association with breadth-first style and Conscientiousness has a positive association with depth-first style. We also found that in addition to having more programming experience and better academic achievement, the styles of working depth-first and saving coarse-grained revisions improve performance in programming.Comment: 27 pages, 6 figure

    Code readability: A proposal on the effects of psychology and comprehension in software development and maintenance

    Get PDF
    Because of the diversity and complexity of the hundreds of coding languages out there, code readability has become more and more of an issue as the years have passed and as the popularity of technology that required built-in computers has increased. With so many different formats, styles, and restrictions on each language, even a developer with experience in only a few common languages may have trouble remembering which language allows for certain indentation, which language requires variable instantiation, which language requires return statements at the end of functions. While I can appreciate the diversity and efficiency that having many different languages provides, the pure amount of rules and restrictions provided by the thousands of people that constructed these languages to their preferences can make for a chaotic, confusing minefield of rights and wrongs in the coding world. With this problem in mind, I would like to dig deep into research on the topic of code readability, hoping to gain some insight into what makes code “readable” or what makes the difference between “good code” and “bad code”. I believe that there is a strong psychological element at play, and because the world of coding is so widespread and free-form at times, it may be hard for people to truly score code on it’s readability. A lot of it will come down to personal opinion, which is unlike most modern spoken languages have strict rules of grammar. While there are strict rules to compiling code and most languages, there are usually many ways to get a program to run “correctly”, albeit potentially inefficiently. However, most experienced coders can look at a block of code and give an approximation as to how “correct” the code may be. That is the aspect that I want to investigate. I would like to see if I can nail down what choices have to be made in the programming process to make code that is considering good by the general public (which in this case would be the programming community.

    Improving Science That Uses Code

    Get PDF
    As code is now an inextricable part of science it should be supported by competent Software Engineering, analogously to statistical claims being properly supported by competent statistics.If and when code avoids adequate scrutiny, science becomes unreliable and unverifiable because results — text, data, graphs, images, etc — depend on untrustworthy code.Currently, scientists rarely assure the quality of the code they rely on, and rarely make it accessible for scrutiny. Even when available, scientists rarely provide adequate documentation to understand or use it reliably.This paper proposes and justifies ways to improve science using code:1. Professional Software Engineers can help, particularly in critical fields such as public health, climate change and energy.2. ‘Software Engineering Boards,’ analogous to Ethics or Institutional Review Boards, should be instigated and used.3. The Reproducible Analytic Pipeline (RAP) methodology can be generalized to cover code and Software Engineering methodologies, in a generalization this paper introduces called RAP+. RAP+ (or comparable interventions) could be supported and or even required in journal, conference and funding body policies.The paper’s Supplemental Material provides a summary of Software Engineering best practice relevant to scientific research, including further suggestions for RAP+ workflows.‘Science is what we understand well enough to explain to a computer.’ Donald E. Knuth in A=B [ 1]‘I have to write to discover what I am doing.’ Flannery O’Connor, quoted in Write for your life [ 2]‘Criticism is the mother of methodology.’ Robert P. Abelson in Statistics as Principled Argument [ 3]‘From its earliest times, science has operated by being open and transparent about methods and evidence, regardless of which technology has been in vogue.’ Editorial in Nature [4

    A model for systematically investigating relationships between variables that affect the performance of novice programmers

    Get PDF
    This research was motivated by an interest in novices learning to program and a desire to understand the factors that affect their learning. The traditional approach to performing such an investigation has been to select factors which may be important and then perform statistical tests on a few potential relationships. A new research model is proposed and tested to ensure that a thorough and systematic investigation of the data is performed. This thesis describes the data, defines the model and explains the application and validation of the model. The research process is managed by a control algorithm that is the heart of the model. This algorithm is seeded by a hypothesis that connects two variables of interest and dictates the testing of a series of hypotheses; as it does this, it also delves deeper into the data to identify additional relationships. In this research the model was applied to investigate the relationships between: learning style and achievement; programming behaviour and achievement; and learning style and programming behaviour. Learning style was assessed using Kolb’s Learning Style Inventory, achievement was based on exam score and programming behaviour was extracted from a log of student activities using a programming tool. The largest number of significant relationships was found between aspects of behaviour and achievement. The model was validated by classifying the significant hypotheses based on the research model’s tree structure, the section of the programming tool in use and the literature. These three classification schemes provided a structure to explore their similarities and differences. The model was thus demonstrated to be robust and repeatable by comparing the results with those from both using a programming tool, and expert opinion. This research has revealed several attributes of the learning behaviour that affected the students’ results within this group, including aspects of timeliness and overall volume of activity. These are suitable targets for future investigations. The research model could be applied to other data sets where an in-depth investigation into pairwise data is required.

    Role of ADRI model in teaching and assessing novice programmers

    Full text link
    In this research, an ADRI approach was introduced in the teaching and learning process of an introductory programming course. The result shows that the ADRI approach impacted positively on the students learning outcomes. The ADRI approach not only reduced the failure rate but also improved student’s retention in the course

    The evaluation of a pedagogical-program development environment for Novice programmers : a comparative study

    Get PDF
    It is an acknowledged fact that many novice programmers experience difficulty in the process of learning to program. One of the contributing factors to this difficulty is the Program Development Environment (PDE). Professional-PDEs are those developed specifically for professional programmers, but are often used by educational institutions in the instruction of programming. It has long been accepted that such environments are inappropriate in the instruction of programming due to unnecessary complexity and lack of support for novice programmers in the learning process. Numerous pedagogical-PDEs supporting the mechanics of programming have been developed in response to this. A review of literature, however, indicates that very limited empirical studies comparing pedagogical-PDEs and professional-PDEs have been conducted. The current study investigates whether there are measurable benefits to using a pedagogical-PDE supporting the mechanics of programming in the instruction of programming instead of a professional-PDE. A comparative study of this nature requires a representative pedagogical-PDE and representative professional-PDE be compared with one another. The first part of the current study determines a set of requirements that a pedagogical- PDE should adhere to based on literature. A set of representative features for a pedagogical-PDE is derived by examining the features of existing PDEs in conjunction with the set of requirements. Based on these features, a pedagogical-PDE, known as SimplifIDE, is developed that implements the representative set of features and that meets are the requirements for a pedagogical-PDE. The second part of the current study is the specification and administration of an empirical experiment in which SimplifIDE and Borland© DelphiTM are compared with one another. A holistic approach in determining the differences between the PDEs is taken and three main areas are examined, namely academic performance, perceptions and programming behavior

    Issues, opportunities and concepts in the teaching of programming to novice programmers at the University of Lincoln : three approaches.

    Get PDF
    This thesis describes three small-scale, computer-based approaches developed and used by the author in her teaching of programming concepts to novice programmers, using Pascal as a first language, within a higher education context. The first approach was the development of a piece of tutorial CAL, the second was the development of an on-line help system and the third the development of a pattern language. For the first two, the author created the product. For the pattern language, she designed the template. These three approaches are described and the results obtained outlined. The work also looks at the kind of research methodologies and tools available to the author and present a rationale for her choices of method and tools. This work also briefly reviews some learning theories that could be used to underpin the design, use and evaluation of CAL. The thesis looks at a range of topics associated with the teaching of programming and the use of CAL. It looks at issues around the psychology and human aspects of learning to program, such as confirmatory bias and vision. It looks at other research efforts aimed at developing software to support inexperienced programmers, including new programming languages specifically designed to teach programming concepts and sophisticated programming support environments. The work briefly reviews various types of CAL and their uses. It also examines some key projects in CAL development from the 1960s onwards, with particular emphasis on UK projects from the early 1970s to the late 1990s. It looks at what conclusions can be drawn from examining some of the many CAL projects in the past. Finally, the work reviews the various strands of the author's research efforts and presents a brief overview and some initial suggestions for the teaching of programming to novice programmers
    corecore