This paper presents a study of how visualization tools and methods are used to support the study of computer programming. The purpose of this study was to establish whether visualisation could be exploited more fully or more effectively to support this learning. Furthermore, if that were the case, then this study would aim to define the requirements of novice programmers. Greater understanding of the requirements of novice programmers is expected to steer this research towards finding better solutions to the challenges faced by students of programming. The paper presents a study of three distinct visualisation tools Jeliot(Moreno, Myller, Sutinen, & Ben-Ari, 2004), Online Python Tutor (Guo, 2013) and Visual Logic (Gudmundsen & Olivieri, 2011). The nature of how visualisation is exploited in each of these tools is evaluated. This evaluation is based on how the tool visualises the execution of (i) loops, (ii) object-oriented programming and (iii) the parameter –passing by value/reference. These three problems are a sample of problems that students find complex when writing programs (Eckerdal et al., 2006; Boustedt et al., 2007; Sanders et al., 2008). The results presented in this paper show the characteristics in the visualisation tools and the students’ preferences in using them. The students evaluated the following eight characteristics: tool availability, error explanation, expression evaluation, the interface, programming languages the tool supports, animation, class hierarchy and save the execution history. This work is organized as follows: First, section 2 views studies that have been conducted to describe the challenges of learning programming. In section 3, we discuss the educational visualisation method for learning programming. Section 4 is concerned with the threshold concepts in programming. The sixth section discusses the experiment and its results. Finally ,the last two sections are about limitations of the study and the conclusion. 2. The challenges of Learning Programming Numerous studies have investigated the difficulties in teaching and learning computer programming. For instance, Milne and Rowe (2002) conducted an experiment that demonstrated the inability of a student to absorb what is happening in the memory of the program. Another study (Husain, Tarannum, & Patil, 2013) was conducted to enhance students’ problem-solving skills and improve the learning and teaching of programming. That study showed that even better students (one with higher grade point average -GPAs) struggled to apply the programming concepts they have learned in lectures. The two most challenging factors for those students were (i) in the design and (ii) in the implementation phases when they started writing programs. There is high demand for innovations that support the teaching of programming and deal with these many inherent challenges faced by both teachers and students. 3. Visualisation Research studies have demonstrated the advantages of using visualisation when learning to program. Naps et al. (2003) define the visualisation in education as engagement taxonomy which means demonstrate the lecture using visualisation as viewing engagement . Kelleher and Pausch (2005) describe how the visualisation environment contributes in lowering the barriers to programming such as Mechanical and Sociological barriers. Kasurinen et al. (2008) introduced the approach of using visualisation in teaching programming for the purpose of increasing motivation and decreasing students’ failing or dropout rates. Many visualisation tools have emerged with the aim of supporting novice programmers as they learn to program. Examples include BlueJ (Hagan & Markham, 2000; Kölling, Quig, Patterson, & Rosenberg, 2003), DrJava (Allen, Cartwright, & Stoler, 2002), ProfessorJ (Gray & Flatt, 2003), Jeliot3 (Moreno, Myller, Sutinen, & Ben-Ari, 2004), VIP (Virtanen, Lahtinen, & Jarvinen, 2005) , Web Tasks (Rößling, 2010), Alice (Salcedo & Idrobo, 2011) and Online Python Tutor (Guo, 2013). Support tools often adopt visualisation to help students overcome the challenges of learning programming. Approaches which visualise code and/or use diagrams to represent the program memory have a vital contribution to the process of teaching and learning how to program. 3.1 Visualisation tools used in this study The three sample visualisation tools used were Jeliot, Online Python Tutor and Visual Logic. These tools all use memory referencing to show the effect of execution of each line of the program memory. However, each tool has its own features. The selection of each tool was done specifically in order to ease the comparison of student feedback. However, the tools differ in many aspects such as the way in which they trace through the code, how they represent the output, how they create error explanations, the programming languages they support and whether they are available online or offline. Jeliot is a visualisation tool for object-oriented programming. It provides dynamic visualisation for tracing the program execution (see figure 1). Jeliot builds a model of the program during execution. Therefore, students can understand the program construction. The Jeliot interface consists of four areas: the ‘method frame’ area, the ‘expression evaluation’ area, the ‘constant’ area and the ‘instance’ area. Each area is used to show the dynamic change of its components (method, expression, constant, instance). The error explanation in Jeliot highlights the line of the error and explains the reason for the error in the ‘error viewer’.Jeliot also has frames where inputs are requested, and outputs are printed (Moreno et al., 2004).
[1]
Erkki Sutinen,et al.
Visualizing programs with Jeliot 3
,
2004,
AVI.
[2]
Robert Cartwright,et al.
DrJava: a lightweight pedagogic environment for Java
,
2002,
SIGCSE '02.
[3]
Guido Rößling.
A Family of Tools for Supporting the Learning of Programming
,
2010,
Algorithms.
[4]
Michael Kölling,et al.
The BlueJ System and its Pedagogy
,
2003,
Comput. Sci. Educ..
[5]
Johnny Saldaña,et al.
The Coding Manual for Qualitative Researchers
,
2009
.
[6]
Ana Maria Orozco Idrobo,et al.
New tools and methodologies for programming languages learning using the scribbler robot and Alice
,
2011,
2011 Frontiers in Education Conference (FIE).
[7]
SandersKate,et al.
Threshold concepts in computer science
,
2007
.
[8]
Moula Husain,et al.
Teaching programming course elective: A new teaching and learning experience
,
2013,
2013 IEEE International Conference in MOOC, Innovation and Technology in Education (MITE).
[9]
Jasna Kuljis,et al.
Visualisation techniques for learning and teaching programming
,
2000,
ITI 2000. Proceedings of the 22nd International Conference on Information Technology Interfaces (Cat. No.00EX411).
[10]
Thomas L. Naps,et al.
Exploring the role of visualization and engagement in computer science education
,
2003,
ITiCSE-WGR '02.
[11]
Robert McCartney,et al.
Student understanding of object-oriented programming as expressed in concept maps
,
2008,
SIGCSE '08.
[12]
Robert McCartney,et al.
Threshold Concepts in Computer Science
,
2010
.
[13]
Philip J. Guo.
Online python tutor: embeddable web-based program visualization for cs education
,
2013,
SIGCSE '13.
[14]
R. Land.
Threshold Concepts and Troublesome Knowledge (1): linkages to ways of thinking and practising within the disciplines
,
2003
.
[15]
Iain Milne,et al.
Difficulties in Learning and Teaching Programming—Views of Students and Tutors
,
2002,
Education and Information Technologies.
[16]
António José Mendes,et al.
An environment to improve programming education
,
2007,
CompSysTech '07.
[17]
Jussi Kasurinen,et al.
A Study of Visualization in Introductory Programming
,
2008,
PPIG.
[18]
Robert McCartney,et al.
Putting threshold concepts into context in computer science education
,
2006,
ITICSE '06.
[19]
N. Hoffart.
Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory
,
2000
.
[20]
Caitlin Kelleher,et al.
Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers
,
2005,
CSUR.
[21]
Dianne Hagan,et al.
Teaching Java with the BlueJ Environment
,
2000
.
[22]
Matthew Flatt,et al.
ProfessorJ: a gradual introduction to Java through language levels
,
2003,
OOPSLA '03.