1,896 research outputs found

    A review of Australasian investigations into problem solving and the novice programmer

    Get PDF
    This Australasian focused review compares a number of recent studies that have identified difficulties encountered by novices while learning programming and problem solving. These studies have shown that novices are not performing at expected levels and many novices have only a fragile knowledge of programming, which may prevent them from learning and applying problem solving strategies. The review goes on to explore proposals for explicitly incorporating problem solving strategy instruction into introductory programming curricula and assessment, in an attempt to produce improved learning outcomes for novices. Finally, directions suggested by the reviewed studies are gathered and some unanswered questions are raised

    Eye movements in code reading:relaxing the linear order

    Get PDF
    Abstract—Code reading is an important skill in programming. Inspired by the linearity that people exhibit while natural lan-guage text reading, we designed local and global gaze-based mea-sures to characterize linearity (left-to-right and top-to-bottom) in reading source code. Unlike natural language text, source code is executable and requires a specific reading approach. To validate these measures, we compared the eye movements of novice and expert programmers who were asked to read and comprehend short snippets of natural language text and Java programs. Our results show that novices read source code less linearly than natural language text. Moreover, experts read code less linearly than novices. These findings indicate that there are specific differences between reading natural language and source code, and suggest that non-linear reading skills increase with expertise. We discuss the implications for practitioners and educators. I

    Relationships between reading, tracing and writing skills in introductory programming

    Full text link
    This study analyzed student responses to an examination, after the students had completed one semester of instruction in programming. The performance of students on code tracing tasks correlated with their performance on code writing tasks. A correlation was also found between performance on "explain in plain English" tasks and code writing. A stepwise regression, with performance on code writing as the dependent variable, was used to construct a path diagram. The diagram suggests the possibility of a hierarchy of programming related tasks. Knowledge of programming constructs forms the bottom of the hierarchy, with "explain in English", Parson's puzzles, and the tracing of iterative code forming one or more intermediate levels in the hierarchy. Copyright 2008 ACM

    Introductory programming: a systematic literature review

    Get PDF
    As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming. This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research

    Reading skills can predict the programming performance of novices: an eye-tracking study

    Get PDF
    Due to the character of programming languages, reading ability may have more impact on learning to program than on learning in other subjects. This paper describes an exploratory study of the relationship between reading skills, as perceived through eye tracking, and the ability to program. An empirical investigation into this relationship determined that students with inadequate reading skills are at risk of failing at introductory programming. As an explanation for the effect of reading ability on learning to program, we argue that a programming language is a special high-level written language and that using it requires high levels of comprehension, inferencing, selective attention, organising and reflecting. As a result, a student’s reading ability will have a considerable effect on learning to program. Lack of reading skills may therefore be a factor that affect students’ ability to learn to program. Eye tracking can expose reading skills and, therefore, be used to identify at-risk introductory programming students. The practical contribution of this research is the demonstration of how eye tracking can reveal reading problems among programming students. We relate these reading problems to their programming performance, providing a theoretical account of the connection. The results suggest that efforts to improve reading skills could have a positive impact on learning to program

    Learning Transfer in Novice Programmers: A Preliminary Study

    Get PDF
    Learning transfer refers to the ability to correctly apply learned skills, knowledge and behaviors to new situations or contexts. This paper explores novice programmers' transfer through the analysis of two related coding tasks completed by CS1 students as part of their assessment. The first task was a take-home practical and the second task was a lab practical exam; both tasks requested the implementation of a C function with an integer parameter from which the digits are to be extracted and operated on. The solution set generated from each task by a cohort of 255 CS1 students has been explored and classified in order to determine the extent of transfer from the practice task to the later assessment task. This classification shows 36.5% of students consolidated or extended the acquired skills and 13% at least partly; 38%, on the other hand, failed to recall their previous valid strategy or to devise a better one, and were unsuccessful in the second task. On the positive side, 9% of students devised a different and improved strategy in the exam, indicating additional learning had occurred in between the two tasks. Peer review of key coding tasks could improve transfer by forcing weaker students to compare and evaluate different design strategies

    Flexible Low-cost Activities to Develop Novice Code Comprehension Skills in Schools

    Get PDF
    The lack of code comprehension skills in novice programming students is recognised as a major factor underpinning poor learning outcomes. We use Schulte’s Block Model to support teachers’ understanding of how to break the skill down into component parts that are more manageable for a learner. This analysis is operationalised in three code annotation-based learning/assessment exercise formats, two helping students to identify and describe programming concepts and the third enabling them to parse code correctly and carry out desk executions. A great benefit of the activities is that they are low cost and can be applied to any imperative style code and so can be easily adopted by schools anywhere; furthermore, they are active, not passive, an issue with some animation-based visualisation approaches. The exercise formats were included as part of a national schools computing science professional learning programme (PLAN C)

    Teaching computer programming with PRIMM: a sociocultural perspective

    Get PDF
    Background and Context: With computing now becoming a mandatory subject in school in many countries, there is a need for clearly deïŹned pedagogical strategies to support all learners; this is particularly pertinent when teaching computer programming, which novice adults have struggled with for decades. Vygotsky’s sociocultural theory emphasises the importance of language, mediation, and the transfer of skills and knowledge from the social into the cognitive plane. This perspective has inïŹ‚uenced the development of PRIMM (Predict, Run, Investigate, Modify, Make), a structured approach to teaching programming. Objective: The objective of the study was to ïŹnd out if using PRIMM to teach programming had an impact on learner attainment in secondary school, and the extent to which it was a valuable method for teachers. Method: We evaluated the use of PRIMM in 13 schools with 493 students aged 11-14 alongside a control group, using a mixed-methods approach. Teachers delivered programming lessons using the PRIMM approach for 8-12 weeks. Data were collected via a combination of a baseline test, a post-test to compare control and experimental groups, and teacher interviews. Findings: Learners who participated in the PRIMM lessons performed better in the post test than the control group. Teachers reported several beneïŹts of the PRIMM approach, including that PRIMM helped them to teach eïŹ€ectively in mixed-ability classes, enabling all learners to make progress. Implications: We hope that PRIMM makes a contribution to programming education research, as it builds on previous work in eïŹ€ective pedagogy for teachers, and encourages the use of language and dialogue to facilitate understanding. Through our evaluation of PRIMM and engagement with classroom teachers, we propose a framework for understanding the learning of programming in the classroom, and present this as an avenue for further research

    Defining and evaluating conflictive animations for programming education : the case of Jeliot ConAn

    Get PDF
    A review of the practical uses of errors in education reveals three contexts where errors have been shown to help: teaching conceptual knowledge, changing students’ attitudes and promoting learning skills. Conflictive animations form a novel approach to teaching programming that follows a long tradition on research and development on program animation tools. Conflictive animations link the benefits of errors with program animation tools and programming education. This approach involves presenting to the students conflictive animations that do not animate faithfully the programs or concepts taught. Conflictive animations are versatile enough to cover the fundamental building blocks of programs such as operators, expressions and statements. With conflictive animations a novel set of learning activities can be introduced to computer science classes. This conflictive dimension of activities augments an engagement taxonomy for animation tools at all levels. They are an example of activities that promote critical thinking. A particular implementation of conflictive animations has been empirically evaluated aiming for ecological validity rather than statistical significance. Results indicate that students using conflictive animations improve their metacognitive skills, and, when compared to a control group, their conceptual knowledge improves at a better rate
    • 

    corecore