Article Preview
Top1. Introduction
This paper considers the ‘evolution’, ‘realisation’, ‘optimisation’ and ultimately the ‘evaluation’ that for undergraduate first year programming ‘problem solving should be taught prior to a programming language’. The hypothesis is that ‘problem solving should be taught as a fundamental skill and then the programming language can be used/taught as a tool for solving problems’, originated during discussion at a Java and the Internet in the Computing Curriculum (JICC) Higher Education Academy (HEA) conference in 2001 (JICC5 (2001)). This paper, predominantly discusses the teaching of programming and problem solving to undergraduate first year computing students, using robots and graphical programming to emulate the robot tasks. It also introduces alternative opportunities to use robot simulators, where access to physical robots is limited.
Probably the most important skills a computer scientist or engineer must possess are those of problem solving, to the point where the role of computers as problem-solving tools is seen as increasingly useful (Gallopoulos et al, 1994). These skills are highlighted in numerous benchmark and guideline statements for engineering and computing (Houghton, 2004; Adams et al., 2008; Adams and Turner, 2008). While it is appreciated that being a good problem solver involves knowledge and experience, there are other interventions, such as training and practice that can improve process skills in engineering and computing undergraduates.
Mindstorm based robots have been used previously for teaching programming to computing and engineering students (Fagin, 2003; Lawhead et al., 2003; Price et al., 2003; Williams, 2003). Here we make use of them for problem solving. Synergies can be achieved using robots to develop problem-solving skills and skills of pre-object programming (for example Culwin et al., 2006) and simulation of robots for teaching programming as a visual approach using the widely used programming language Java.
The approach discussed here focuses upon the development of problem-solving skills first and not on learning a new programming language from the outset. Therefore, initially, any programming is kept simple with the minimum of commands, with objects unknowingly used, as these are later introduced/learned during the programming stage of the computing module. Work within the team (Turner & Hill, 2008) suggests that using Lego robots within the teaching of problem-solving and the resulting java graphical user interface (GUI) emulation has some benefits for the students. The students come on the courses with a range of experiences and abilities, but many of them have limited or no experience of programming (Jenkins and Davy, 2002). In other words, this is likely to be the first time they are exposed to programming or expected to program. It was felt within the course team that giving the students a tool that is non-threatening and that would also provide early success in a physical and visual form (which, if it were to break, it would not matter) would be beneficial. Lego-based robots are initially used, followed by the same problems being repeated as a graphical representation/simulation to satisfy these same criteria.
Other authors have noted the suitability of robots for teaching programming. Lawhead et al. (2003) stated that robots provide entry level programming students with a physical model to visually demonstrate concepts, that the most important benefits of using robots in teaching introductory courses is the focus provided on learning language-independent truths about programming and programming techniques and that robots readily illustrate the idea of computation as interaction. Robots have also been highlighted as a tool for improving engagement with group work (Gold, 2010). This paper advances the idea that developing problem-solving skills first, then embarking on programming concepts, constructs and principles, is beneficial. We explore this idea in detail by discussing the module where these ideas have been tested.