Skip to main content
Juha Helminen

    Juha Helminen

    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... more
    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.
    In this paper, we report on the analysis of a novel type of automatically recorded detailed programming session data collected on a university-level web programming course. We present a method and an implementation of collecting rich data... more
    In this paper, we report on the analysis of a novel type of automatically recorded detailed programming session data collected on a university-level web programming course. We present a method and an implementation of collecting rich data on how students learning to program edit and execute code and explore its use in examining learners' behavior. The data collection instrument is an in-browser Python programming environment that integrates an editor, an execution environment, and an interactive Python console and is used to deliver programming assignments with automatic feedback. Most importantly, the environment records learners' interaction within it. We have implemented tools for viewing these traces and demonstrate their potential in learning about the programming processes of learners and of benefiting computing education research and the teaching of programming.
    Scaffolded learning tasks where programs are constructed from predefined code fragments by dragging and dropping them (i.e. Parsons problems) are well suited to mobile touch devices, but quite limited in their applicability. They do not... more
    Scaffolded learning tasks where programs are constructed from predefined code fragments by dragging and dropping them (i.e. Parsons problems) are well suited to mobile touch devices, but quite limited in their applicability. They do not adequately cater for different approaches to constructing a program. After studying solutions to automatically assessed programming exercises, we found out that many different solutions are composed of a relatively small set of mutually similar code lines. Thus, they can be constructed by using the drag-and-drop approach if only it was possible to edit some small parts of the predefined fragments. Based on this, we have designed and implemented a new exercise type for mobile devices that builds on Parsons problems and falls somewhere between their strict scaffolding and full-blown coding exercises. In these exercises, we can gradually fade the scaffolding and allow programs to be constructed more freely so as not to restrict thinking and limit creativity too much while still making sure we are able to deploy them to small-screen mobile devices. In addition to the new concept and the related implementation, we discuss other possibilities of how programming could be practiced on mobile devices.
    ABSTRACT The process of solving a programming assignment is generally invisible to the teacher. We only see the end result and maybe a few snapshots along the way. In order to investigate this process with regard to Parsons problems, we... more
    ABSTRACT The process of solving a programming assignment is generally invisible to the teacher. We only see the end result and maybe a few snapshots along the way. In order to investigate this process with regard to Parsons problems, we used an online environment for Parsons problems in Python to record a detailed trace of all the interaction during the solving session. In these assignments, learners are to correctly order and indent a given set of code fragments in order to build a functioning program that meets the set requirements.
    ABSTRACT In this paper, we present a tool that facilitates the learning of programming by providing a mobile application for Parsons problems. These are small assignments where learners build programs by ordering and indenting fragments... more
    ABSTRACT In this paper, we present a tool that facilitates the learning of programming by providing a mobile application for Parsons problems. These are small assignments where learners build programs by ordering and indenting fragments of code. Parsons problems are well-suited to the mobile context as the assignments form small chunks of learning content that individually require little time to go through and may be freely divided across multiple learning sessions.
    This paper reports on the results of a two year project in which visual algorithm simulation exercises were developed for a spatial data algorithms course. The success of the project is studied from several point of views, i.e., from... more
    This paper reports on the results of a two year project in which visual algorithm simulation exercises were developed for a spatial data algorithms course. The success of the project is studied from several point of views, i.e., from developer's, teachers's, and student's perspective. The amount of work, learning outcomes, and feasibility of the system has been estimated based on the data gathered during the project. The results are encouraging, which motivates to extend the concept also for other courses in the future.