A multi-national study of reading and tracing skills in novice programmers (original) (raw)

Relationships between reading, tracing and writing skills in introductory programming

Proceeding of the fourth international workshop on Computing education research - ICER '08, 2008

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.

On Students' Ability to Resolve their own Tracing Errors through Code Execution

Proceedings of the 53rd ACM Technical Symposium on Computer Science Education

When students attempt to solve code-tracing problems, sometimes students make mistakes as they read code that get in the way of correctly solving the problem. In this paper, we explore the degree to which students can correct their errors by executing the provided code on a computer. Specifically, we performed a qualitative between-subjects think-aloud study to compare what kinds of errors students can resolve by just executing the code versus which they can resolve by using a line-by-line debugger. From observing our participants, two factors appear to be necessary for them to independently resolve their errors. First, they need to be using a tool that provides visibility into the error itself. When using a tool that provided only the output of the code, our participants could only resolve dataflow-oriented errors. In contrast, when given the ability to step through the code, some of our participants could additionally resolve control-flow errors. Second, the error must affect the output. In all of the cases where students arrived at the correct answer in spite of having errors in their understanding of the code, none corrected their error independent of the tool they were using. Presumably, they were not forced to confront their error because of an incorrect answer. Finally, while necessary, these conditions appear not to be sufficient, as students still need to be able to correctly interpret the information that the tool provides. CCS CONCEPTS • Social and professional topics → Computing education.

A closer look at tracing, explaining and code writing skills in the novice programmer

Proceedings of the fifth international workshop on Computing education research workshop - ICER '09, 2009

Abstract The way in which novice programmers learn to write code is of considerable interest to computing education researchers. One research approach to understanding how beginners acquire their programming abilities has been to look at student performance in exams. Lopez et al.(2008) analyzed student responses to an end-of-first-semester exam. They found two types of questions accounted for 46% of the variance on the code writing portion of the same exam. One of those types of question required students to trace ...

A Study of Tracing and Writing Performance of Novice Students in Introductory Programming

The tasks of programming include complex knowledge and skills that is, from understanding problems to evaluating validity of program. Novice students often face difficulties in learning programming due to various issues and the nature of the subject, which can be vague and invisible. A survey was conducted on 294 students from two universities to study novices’ problems in dealing with tracking the logical flow and writing a simple code. The average score for tracking and writing skills were quite disappointing. Students were only able to master the static part of programming knowledge. They lacked the knowledge in understanding and tracing the dynamic behavior of the program. This research attempts to propose a model to shift the internal working memory load of students through integrated visualization tools that can reveal the dynamic behavior of programs and related concepts that appear in each level of program abstractions.

A study of the difficulties of novice programmers

ACM SIGCSE Bulletin, 2005

... This work stud-ies the difficulties in learning programming in order to support de-veloping learning materials for basic programming courses. ... The survey studied the students' and teachers' perceptions of the difficulties in learning programming. ...

What vs. how: comparing students' testing and coding skills

The well-known difficulties students exhibit when learning to program are often characterised as either difficulties in understanding the problem to be solved or difficulties in devising and coding a computational solution. It would therefore be helpful to understand which of these gives students the greatest trouble. Unit testing is a mainstay of large-scale software development and maintenance. A unit test suite serves not only for acceptance testing, but is also a form of requirements specification, as exemplified by agile programming methodologies in which the tests are developed before the corresponding program code. In order to better understand students' conceptual difficulties with programming, we conducted a series of experiments in which students were required to write both unit tests and program code for non-trivial problems. Their code and tests were then assessed separately for correctness and 'coverage', respectively. The results allowed us to directly compare students' abilities to characterise a computational problem, as a unit test suite, and develop a corresponding solution, as executable code. Since understanding a problem is a prerequisite to solving it, we expected students' unit testing skills to be a strong predictor of their ability to successfully implement the corresponding program. Instead, however, we found that students' testing abilities lag well behind their coding skills.

Strategies that students use to trace code

Proceedings of the 2005 international workshop on Computing education research - ICER '05, 2005

How do beginning students approach problems which require them to read and understand code? We report on a Grounded Theory-based analysis of student transcripts from 12 institutions where students were asked to "think aloud" when solving such problems. We identify 19 strategies used by students. Primary results are that all students employ a range of strategies, there were (in total) many different strategies that were applied, students use multiple strategies on each individual problem, students applied different strategies to different types of questions, and students often applied strategies poorly. We show that strategies conform with existing education theories including Bloom's Taxonomy and the Approaches to Study Inventory. Additionally, we discuss emergent theories developed through a card sort process.

A fresh look at novice programmers' performance and their teachers' expectations

Proceedings of the ITiCSE working group reports conference on Innovation and technology in computer science education-working group reports - ITiCSE -WGR '13, 2013

This paper describes the results of an ITiCSE working group convened in 2013 to review and revisit the influential ITiCSE 2001 McCracken working group that reported [18] on novice programmers' ability to solve a specified programming problem. Like that study, the one described here asked students to implement a simple program. Unlike the original study, students' in this study were given significant scaffolding for their efforts, including a test harness. Their knowledge of programming concepts was also assessed via a standard language-neutral survey. One of the significant findings of the original working group was that students were less successful at the programming task than their teachers expected, so in this study teachers' expectations were explicitly gathered and matched with students' performance. This study found a significant correlation between students' performance in the practical task and the survey, and a significant effect on performance in the practical task attributable to the use of the test harness. The study also found a much better correlation between teachers' expectations of their students' performance than in the 2001 working group.

Conditions of Learning in Novice Programmers

2013

Under normal instructional circumstances, some youngsters learn programming in BASIC or LOGO much better than others. Clinical investigations of novice programmers suggest that this happens in part because different students bring different patterns of learning to the programming context. Many students disengage from the task whenever trouble occurs, neglect to track closely what their programs do by reading back the code as they write it, try to repair buggy programs by haphazardly tinkering with the code, or have difficulty breaking problems down into parts suitable for separate chunks of code. Such problems interfere with students making the best of their own learning capabilities: students often invent programming plans that go beyond what they have been taught directly. Instruction designed to foster better learning practices could help students to acquire a repertoire of programming skills, perhaps with spinoffs having to do with "learning to learn." * The research reported here was conducted at the Educational Technology Center, based at the Harvard Graduate School of Education, and operating with support from the National Institute of Education. The ideas expressed here do not necessarily represent the opinions or policies of the supporting agency.

Further evidence of a relationship between explaining, tracing and writing skills in introductory programming

ACM SIGCSE Bulletin, 2009

This paper reports on a replication of earlier studies into a possible hierarchy of programming skills. In this study, the students from whom data was collected were at a university that had not provided data for earlier studies. Also, the students were taught the programming language "Python", which had not been used in earlier studies. Thus this study serves as a test of whether the findings in the earlier studies were specific to certain institutions, student cohorts, and programming languages. Also, we used a non-parametric approach to the analysis, rather than the linear approach of earlier studies. Our results are consistent with the earlier studies. We found that students who cannot trace code usually cannot explain code, and also that students who tend to perform reasonably well at code writing tasks have also usually acquired the ability to both trace code and explain code.