Supporting Acquisition of Programming Skills in Introductory Programming Education: Environments for Practicing Programming and Recording and Analysis of Exercise Sessions

Aalto University, P.O. Box 11000, FI-00076 Aalto www.aalto. fi Author Juha Helminen Name of the doctoral dissertation Supporting Acquisition of Programming Skills in Introductory Programming Education: Environments for Practicing Programming and Recording and Analysis of Exercise Sessions Publisher School of Science Unit Department of Computer Science and Engineering Series Aalto University publication series DOCTORAL DISSERTATIONS 69/2014 Field of research Software Systems Manuscript submitted 11 February 2014 Date of the defence 6 June 2014 Permission to publish granted (date) 23 April 2014 Language English Monograph Article dissertation (summary + original articles) Abstract The work in this thesis falls under two themes. First, we have experimented with a number of novel tools to lower the barrier to start practicing programming skills. Specifically, we present experiences on using Python novice environments that reduce the complexity of getting started with practicing programming in the following two ways. First, only a limited set of key functionality is provided in an integrated exercise environment. Second, only web technologies are used to improve portability and ease of access. Additionally, we present experiences on using a special type of program construction exercises, as well as, improvements to the automated feedback provided in these exercises. Finally, we present an application for practicing Python programming on mobile touch devices that is based on these exercises. As for the second theme, we have carried out automated recording of students' exercise sessions and explored what can be learned from such data. Particularly, we show how to visualize program construction exercise sessions as a graph in order to reveal common patterns and anomalies. We identified two overall patterns of constructing programs: line-by-line and control structures first. We also identified behavior that seems to be indicative of difficulties: backtracking, going in circles, and excessive, trial-and-error use of feedback. Additionally, we use this type of data to evaluate the effect of different types of feedback in program construction exercises. Students who received execution-based feedback needed on average more steps and took longer to solve an exercise than those who got line-based feedback. On the other hand, execution-based feedback was requested less frequently and the respective code was more commonly executable. Finally, we make use of automatically recorded data on programming sessions to identify and quantify how students use an interactive Python console, as well as, to study how frequently and which kinds of execution errors they encounter. Students made use of the console both for testing their code and for exploring language features. A variety of error types were observed while only a minority of those accounted for the majority of occurrences. As the key results of this thesis, many of the studied approaches to supporting the acquisition of programming skills have been successfully used on programming courses together with automated recording of exercise sessions that, in turn, has been made use of to identify and quantify common patterns and difficulties for the benefit of teaching and education research.The work in this thesis falls under two themes. First, we have experimented with a number of novel tools to lower the barrier to start practicing programming skills. Specifically, we present experiences on using Python novice environments that reduce the complexity of getting started with practicing programming in the following two ways. First, only a limited set of key functionality is provided in an integrated exercise environment. Second, only web technologies are used to improve portability and ease of access. Additionally, we present experiences on using a special type of program construction exercises, as well as, improvements to the automated feedback provided in these exercises. Finally, we present an application for practicing Python programming on mobile touch devices that is based on these exercises. As for the second theme, we have carried out automated recording of students' exercise sessions and explored what can be learned from such data. Particularly, we show how to visualize program construction exercise sessions as a graph in order to reveal common patterns and anomalies. We identified two overall patterns of constructing programs: line-by-line and control structures first. We also identified behavior that seems to be indicative of difficulties: backtracking, going in circles, and excessive, trial-and-error use of feedback. Additionally, we use this type of data to evaluate the effect of different types of feedback in program construction exercises. Students who received execution-based feedback needed on average more steps and took longer to solve an exercise than those who got line-based feedback. On the other hand, execution-based feedback was requested less frequently and the respective code was more commonly executable. Finally, we make use of automatically recorded data on programming sessions to identify and quantify how students use an interactive Python console, as well as, to study how frequently and which kinds of execution errors they encounter. Students made use of the console both for testing their code and for exploring language features. A variety of error types were observed while only a minority of those accounted for the majority of occurrences. As the key results of this thesis, many of the studied approaches to supporting the acquisition of programming skills have been successfully used on programming courses together with automated recording of exercise sessions that, in turn, has been made use of to identify and quantify common patterns and difficulties for the benefit of teaching and education research.