Article Preview
Top1. Introduction
Teaching basic programming skills to novices has widely been seen as a problematic area responsible for the high dropout rates of around thirty to fifty percent (Dening & McGettrick, 2005; May & Dhillon, 2009) associated with computer science courses. Ma, Ferguson, Roper and Wood (2011) report that many first-year students perform worse than expected and that students can hold ‘non-viable’ mental models of programming concepts. They introduce a teaching model which utilises visualisation of programs as an aid to better understanding of key concepts. The visualisation they explore refers to visual models which depict the operation of a textual code fragment rather that the use of a blocks programming language itself to implement a program directly, which is the focus here.
When first encountered, basic programming concepts, such as repetition and conditionals, are inherently difficult to understand for a significant proportion of students. No single teaching approach seems to benefit all students. A proportion of students can readily comprehend a concept, such as repetition, as written in a textual language, for example Java, but a significant group will always be frustrated and require other forms of illustration of the concept which present less or differing cognitive load (Stachel et al., 2013).
This article reports an investigation into the efficacy of a blocks based language for learning programming.
The investigation has three stages for students:
- 1.
Performing a series of simple programming activities using Sense as detailed in a brief guide.
- 2.
Comparing the graphical programs that they have seen and run in step '1' with some textual equivalents which are similar to those found in more mainstream programming languages.
- 3.
Completing a short online survey concerning their experiences.
In the activities students were provided with visual block programs to execute which demonstrated four basic concepts (sequencing, variables, repetition and conditionals) found in all programming languages. For two of these (repetition and conditionals) students were asked to consider if their understanding could be transferred to similar textual constructs. After completing these activities students were asked to complete a brief survey.
Based on the responses the investigation focuses on two key questions:
- 1.
How well a blocks programming language communicates basic programming concepts.
- 2.
How easily an understanding of concepts based on a blocks programming language transfers to a mainstream textual language.
A student, having gained experience using a graphical language, will be faced with syntactic complexity and greater freedom for error when using a textual language. If central concepts themselves have already been learnt in a graphical environment then a student might be less burdened and better able to cope with greater syntactic and semantic freedom and complexity.
The initial parts of this paper cover background aspects, such as blocks programming languages, related work, the student population and the particular blocks language employed here. Subsequent parts examine the specific activities given to students and the response to the survey. The activities are available online (Simpkins, 2012) and the survey employed is given in Appendix A.
Top2. Background
Several innovations have sought to make programming more accessible by seeking to simplify aspects which are common sources of problems for a typical novice. Errors in syntax and semantic misuse of constructs are two prominent sources of problems.
Interactive Development Environments (IDEs) such as Eclipse (The Eclipse Foundation, 2013) provide context sensitive completion and help and also highlight syntactic errors in code. The syntactic and sematic complexity of languages such as Java means that these tools can be of limited assistance, if any, to novice programmers.