Turing Logo  

Designed for computer science instruction, Turing is simply the easiest, most fun, and most effective way of teaching programming concepts.


Quick Links
Home page of Holt Software Associates  | Home page of the Turing Programming Language, the fastest way to teach programming concepts  | Home page of Holt Software's Java products  | Home page of Ready to Program with Java(tm) Technology, a Java development environment designed for education  | Information about Holt Software's courses for teachers  | Information about how to contact Holt Software  | Information about how students can purchase Holt Software's books and software  | Information about how schools and bookstores can purchase Holt Software's books and software

Is Turing a better language for teaching programming than Pascal ?

by Jacqueline L. Martin

B.Sc. Computing Science and Education
Honours Dissertation
January 1996

University of Stirling
Department of Computing Science


Acknowledgments

There are some people whom I'd like to thank 'officially' for their help in various forms whilst I was researching and writing this dissertation.

Firstly, the students without whom there would have been no project :-
Simon Brodie, Chris Cheung, Tim Clarke, Matthew Conderan, Richard Kermath, Eric Marinko, Andy McInnes, Neil Penny, Robert Skruch and Paul Tichonczuk of Father Michael Goetz Secondary School, Ontario, Canada and Perth College of Further Education, Scotland.

Also to Winston Das, Roy Parteno and Lesia Skira who are teachers at Father Michael Goetz Secondary School, Ontario; Margaret Patterson, Derek Summers and Ian Wilson who are lecturers at Perth College, Scotland and Professor Ric Holt, Professor Diane Horton and Professor Pat Hume who are lecturers at the Department of Computer Science, University of Toronto.

Thanks also to Dr Roger Bailey of Imperial College, London for his comments on the Turing language and to Dr K Anjaneyulu of the National Centre for Software Technology, Bombay, Professor Elliot Solloway, University of Michigan and Professor D Sleeman, University of Aberdeen for kindly sending me articles and references when I was unable to obtain them through the normal channels.

A special thank-you to Chris Stephenson, Vice President, Holt Software, Toronto for her kindness, patience and good humour and to Mr Charles Rattray who supervised my project.

Thanks also to my two children Alan and Catriona for their cups of coffee, excellent posters and musical recitals during moments of stress.

I'd like to give an especially big thanks to my husband Donald for being a tower of strength during the past four years and for holding the fort when I was in Canada.

Last but not least I'd like to thank John Sanderson for his comments during the latter stages of writing this report, and my friend Katie Ross for her loyal support and trays of prize-winning energy and without whom I'd have been lost on several occasions!

Abstract

This project examines whether the Turing programming language might be considered to be more suitable than Pascal as a teaching language in Scottish introductory programming courses.

The project focuses on the syntax and syntax correcting environments of the two languages and the extent to which these are helpful to students.

Data were collected by the clinical observation of Scottish college students using Turbo Pascal and Canadian high school students using Turing. This was supported by interviews with the students and instructors of both languages, and the developers of the Turing language.

The report concludes that the syntax and programming environment of the Turing language would appear to allow students to make faster progress in programming exercises, and that use of the language would have certain advantages in high school computing courses. CHAPTER ONE

CHAPTER ONE
1 Introduction

1.1 Background

In the past decade, there has been a significant rise in the use of the micro-computer in the classroom. Part of the rationale for doing so, was the expectation of pupils developing improved problem-solving skills through programming. Computer programming is now an established part of the Scottish curriculum and is undeniably the most challenging teaching component of the Computing Studies syllabus.

More recently, empirical research has indicated that there is little evidence of students having developed better problem-solving skills as a result of exposure to computer programming, and the focus for research has shifted towards teaching methods and the choice of a first language.

Although Pascal is now almost 30 years old, it continues to be a popular first language because it is highly structured and strongly typed and is therefore believed to encourage good programming habits. Many students and teachers however, find its syntax cumbersome and research has shown that some students can become so enmeshed in correcting syntax errors that they achieve little benefit from programming exercises.

There are many implications that, despite having completed well-structured introductory programming courses, many novice programmers still experience extreme difficulty in writing even the simplest of programs.

In a study of approaches to experiments in program debugging and comprehension, Lukey (1981) remarked that "The programming language used in an experiment may well influence the results". Here, Lukey suggests that a language may have a bearing on the acquisition of debugging skills which consequently, may be instrumental in determining the degree of program comprehension achieved by an individual.

This study will look at the Turing language, a general purpose language which was developed in Canada in the early 1980's. Its developers claim that its easy syntax make it simple to learn, thus allowing its users more freedom to focus on the learning of programming concepts and the subsequent application of these in problem solving.

1.2 Aims of this study

The aims of the study are :-
  1. to ascertain whether students who are learning to program with Turing have fewer difficulties with syntax and syntax correcting than those learning to program with Pascal and, if so,
  2. to consider whether this, in turn, can benefit the student in terms of developing problem solving skills.
If this were thought to be the case, then there might be grounds for considering Turing as a suitable language for teaching programming in Scottish high schools.

Given that there is a limited teaching time in the Computing Studies syllabus (40 minutes per week in S1/S2 rising to approximately 160 minutes per week in S3/S4/S5), then any language which helps a student to progress more quickly through programming exercises, would offer considerable benefits to students and teachers alike.

1.3 Report Structure

The remainder of this report is divided into seven chapters as follows :-
2. Syntax
This chapter considers the potential effects of syntactic difficulty on the process of learning to program. It also reviews some previous research on debugging skills.
3. Requirements of a first programming language
This chapter reviews some previous research on what are the essential features of an introductory programming language. The characteristics of Turbo Pascal v1.5 and Turing are then outlined.
4. Planning the Empirical Study
This chapter describes the preparation of the actual research, the choice of methodology, the selection of suitable test data, the selection of suitable subjects, and discusses some potential strengths and weaknesses of these.
5. Conducting the Empirical Study
This chapter describes the tests which were carried out, the results of these, and considers the implications of the results.
6. The Interviews
This chapter summarises several issues which were addressed during interviews with students of Turing and Pascal, their instructors, the developers of the Turing software and one British University which has recently adopted Turing for use on its introductory programming course.
7. The role of the Teacher
This chapter discusses the importance of teaching methods on an introductory computing course.
8. Conclusion
This chapter summarises the conclusions which have been drawn from this empirical study and the results of other studies.

It was agreed with the individuals who were kind enough to take part in this study, that they would not be identified. Therefore, names of individuals and institutions have not been mentioned in the main body of the report.

CHAPTER TWO
2 Syntax

The purpose of this chapter is to examine the need for a closer look into the negative effects of syntactic difficulties on an introductory programming course.

2.1 Some definitions

The words 'bug' and 'error' are understood to be synonymous in the context of this report. A syntax error is one which prevents compilation and produces an error message. Semantic and logical errors or bugs will cause the program to :-
  1. fail to run/crash
  2. produce erroneous/no output

2.2 The difficulties facing novice programmers

In an effort to explain why a language's syntax is important in an introductory programming course, it is first necessary to consider the difficulties which novice programmers face.

There are three basic stages in programming :-

  1. planning
  2. coding
  3. testing
These requires two distinct skills :-
  1. problem-solving or logic skill
  2. knowledge of a programming language
Most research has focused on the former as it is rightly considered to be the more difficult of the two skills to acquire.

Knowledge of a programming language can also be separated into two distinct skills :-

  1. semantics - the underlying meaning of language constructs
  2. syntax - the representation of these constructs
Semantic skill is normally considered to be the more difficult and important of the two, and it is often assumed that syntactic skill is something which students will acquire as they become more familiar with a language - e.g. through feedback from the language's syntax checker, or from textbooks.

2.3 Should syntax error correcting be explicitly taught ?

Many experienced programmers make light of syntax error correcting skills, brushing them aside as something which can be acquired through practice "...we tell them "If you've got a syntax error - read the book" -that's trivial". (Pascal Lecturer A). This may work adequately for more able students, but there are some educators who believe that "Teaching in terms of pseudocode and leave the syntax details to the students doesn't work, in my humble opinion, for ordinary students and ordinary teachers" (McCracken, [24]). It may therefore be the 'ordinary' student and 'ordinary' teacher for whom a simplified language syntax can make the biggest difference.

Clearly, opinions differ in whether students should be taught to correct syntax errors. In reality, much will depend on the complexity of the language's syntax and the language's syntax checking environment "The programming environment provided to help the program developer use the language seems to be at least as important as the language itself, and probably more so, as a decent editor and syntax-checker integrated closely with the compiler renders most arguments about actual syntax redundant" (Roger Bailey, Imperial College).

2.4 How the programming environment can help

Often, syntax-checkers attempt to give two types of assistance. The first is where the error is located in the code and the second is what the error might be. Some software gives a third type of assistance in the form of a Help screen which gives further explanation of the syntax error message.

2.5 Three possible outcomes of syntax checking

Given that a syntax-checker attempts to locate and diagnose a syntax error, three categories of error message value can result.
  1. helpful diagnosis - where the syntax-checker locates the error correctly, and provides a helpful error message.
  2. unhelpful diagnosis - where it locates the error correctly but where the error message is less helpful.
  3. misleading diagnosis - where the syntax-checker indicates another part of the code as being the source of the problem.
As we shall see, the latter two can result in a student experiencing considerable difficulty in getting a program to compile.

Empirical research has indicated that although learning a programming language is much easier than learning problem solving skills, syntactic difficulties can significantly hamper a student's progress and that this, in turn, may affect the student's ability to produce a logically sound, working program (Walsh [10]). It has also been claimed that syntax errors can outnumber semantic and logical errors 2:1 (Friend [23]).

2.6 Previous research on debugging skills

There has been considerable research focused on the acquisition of logical debugging skills as this is perceived to be closely related to program comprehension. Weidenbeck [8] recognised that only when students automated their lower level skills, such as the correction of syntax errors, did they begin to develop some higher level skills, such as understanding the meaning of the code and the goal of the program (i.e. semantic and logic skills).

To acquire these automated lower level skills, a student must develop an ability to :-

  1. understand the meaning of a syntax error message
  2. relate the error message to the error
  3. repair the error
  4. recall this procedure if the error is re-encountered
If the error message is unhelpful or misleading, the student may experience difficulty in all of the above.

2.7 How students may handle difficulties

An investigation was conducted by Perkins et al [13] on two groups of young programmers at the Educational Technology Centre which is based at Harvard Graduate School of Education. The students were observed during a programming exercise and their behaviour recorded to ascertain the types of problems which they encountered.

The students were found to fall into categories of stoppers and movers. Stoppers gave up when they encountered a problem whereas movers tried out one idea after another until a solution was found. On the opposite end of the spectrum from stoppers however, were extreme movers who made alterations to their code in a manner which was unstructured and frequently haphazard. This haphazard 'tinkering' with their program led to a high incidence of frustration with the students frequently moving farther away from a correct solution in the process.

The languages used in the experiment were BASIC and LOGO. It was agreed however, that 'logical tinkering' did not necessarily have a negative effect and could in fact be instructive if done systematically with the student keeping a close track of the code's behaviour and how it was affected by the various changes. The educational benefits of syntactic 'tinkering' however are doubtful. Perkins et al [13] concluded that excessive 'tinkering', or stopping inhibited progress in any domain. They concluded, not unsurprisingly, that proper instruction in tracking programs and debugging skills might alleviate many of the problems.

2.8 Syntactic difficulty with Pascal

In a study by Walsh [10], 28 students were tested on their ability to write Pascal programs which would 'sort' and 'search'. The students had just completed an introductory programming course in Pascal at Stirling University. The experiment involved two programming tests. The first of these was conducted using a computer and the subjects were observed during the entire design and debugging processes. Only 40% of the students managed to produce a working program. The remainder of the students became so entangled in syntax errors, that they effectively lost sight of their goal. "As the test progressed, these students appeared to lose sight of the goal as they tried to cope with the repeated occurrence of compiler errors caused by mistaken syntax. Consequently, their programming behaviour seemed to be dominated by syntax rather than logic". (Walsh [10]).

If this is seen to be the case, then it is unlikely that these students will have derived any problem solving benefits from the exercise. Unfortunately, experience has shown that assisting with syntax errors can account for much of a Computing Studies teacher's time. Schneider et al [18] estimated that as much as 50-75% of a programmers time is spent debugging although it is unclear how much of that figure can be attributed to logic debugging and how much to syntax.

It is especially important on an introductory course, that the student sees his/herself making progress. Carver ([16] p 263) maintains that "...students who spend large amounts of their computer time waiting for the teacher, rewriting code ..... are unlikely to enjoy programming enough to persist through the hundreds or thousands of hours necessary to develop programming proficiency".

For this reason, we must look towards any tool or method which will alleviate the difficulties experienced with syntax, and allow the student to derive every possible benefit from a course in programming.

CHAPTER THREE
3 Requirements of a first programming language

There is much debate about which language should be used in introductory programming courses. A lot depends on the course itself and its aims and purpose. BASIC and Pascal are very popular in schools and colleges. In this chapter, we shall consider the opinions of some experts on what features should be required of a first programming language. We shall then look at the features of BASIC, Pascal and Turing.

3.1 Review of Empirical Research on Teaching Languages

Much empirical research has been conducted on the type of language best suited to teaching programming concepts. du Boulay et al [20] concluded that a first programming language should have "syntactic simplicity with few special cases to remember."

In a study of cognitive strategies and looping constructs (Soloway et al [2]), it was concluded that languages which operate closely with an individual's cognitive strategy are easier to use effectively and therefore suitable for novices. For example, Soloway concluded that a language which offers an exit in the middle of a loop, is providing a construct which novices find easier to use, and with greater programming success.

A study carried out by Ledgard et al [6] found that an English based language was preferred by subjects and led to a better performance. This is counter-claimed however, in a report by Pea [14] which found that many novice programmers using high-level languages attribute the computer with human-level understanding e.g. :-

if two variables are called 'odd' and 'even' and an input of, say, '2' and '1' is made in that order, then a novice may have the belief that the computer will assign '1' to 'odd' and '2' to even'.

Many also believe that introductory programming courses should use programming languages which are "industrially relevant" (Roberts [27]). This is an issue which will be examined in more detail at a later stage.

3.2 BASIC

BASIC is often favoured in school introductory programming courses because
  1. it is resident on most computers and is thus an economical option
  2. it offers a simple interpretive environment which provides immediate feedback for the student - a feature which is considered to have pedagogical advantages.
The fact however, that BASIC is "not inherently a structured language" leads many educators to believe that it "...does not promote a systematic or disciplined approach to programming". (Dalbey & Linn [19])

Therefore, although widely used, BASIC is not considered to be a suitable first programming language.

3.3 Pascal

Pascal is often used in schools, colleges and universities because it is highly structured and strongly typed, thus providing a 'safe' programming environment for a relatively novice programmer. Pascal has however, been criticised for certain 'overheads' which require explicit teaching prior to use. These are the program header, begin/end pairs and statement separators (;). Turbo Pascal for Windows v1.5, which was used by the students who took part in this study, also requires an additional 'uses wincrt' statement following the program header. This provides access to a module which contains the input/output functions and procedures. Programs can be compiled only or compiled/run. Menu commands can be mouse or keyboard driven. Turbo Pascal also has a powerful debugger which allows the tracing of program execution.

Syntax errors appear one at a time as a highlighted line with a corresponding error message and message number at the bottom of the screen. Further explanation of error messages can be obtained from Turbo Pascal's 'Help' menu. It is necessary to recompile the program each time that a syntax error is corrected. Run-time errors return the program to the editor screen which displays a dialogue box containing an error number, and the memory address where the error occurred. Further explanation of the error can be obtained by looking up the error number on the help screen.

3.4 Turing

The Turing language was developed in 1982 at the Dept of Computer Science at Toronto University, Canada. Its developers claim that Turing has "BASIC's clean interactive syntax, Pascal's elegance and C's flexibility" (Holt & Cordy [21]). Fourteen years later, Turing is used in 65% of Ontario High Schools and provides many Computer Science students with their first exposure to computer programming. In 1993, Turing was adopted by Imperial College, London for use in their introductory M.Sc and Undergraduate Computing Courses.

Turing, like Pascal, is a strongly typed, highly structured language but with fewer syntax constraints than Pascal. One of its design goals was to provide "Graceful and diagnostic treatment of errors" because "Too often, the beginner is frustrated by incomprehensible program output or error messages, and cannot proceed without the aid of an expert" (Holt et al [25]). It uses 'natural' English language, is case sensitive to identifiers, and provides the option of an exit in the middle of a loop.

Additionally, it has a wide range of built-in graphics which make it suitable for using in schools where lessons are relatively short and pupils can be encouraged by quick results. There are no 'program' statements or compulsory statement separators. Iteration and selection constructs are terminated with an 'end' - ie 'end if', 'end for' etc.

Turing provides a simple editing environment, and users have the option of mouse or keyboard driven commands. Programs can be compiled and run with a single keystroke (F1). An additional feature of Turing is the F2 key which paragraphs the code.

Syntax errors appear as a highlighted line in the program with a corresponding error message at the bottom of the screen. If there is more than one error (or if Turing thinks there is more than one error), all lines containing these 'errors' will be highlighted. Run-time errors in Turing return the program to the editing screen and the line at which execution was halted is highlighted. There is no trace facility in Turing. Turing software is available for the PC and the MAC. The PC version supports colour, pixel graphics, sound and the MAC version supports colour and pixel graphics but not sound.

Turing would therefore appear to offer several of the features, as proclaimed by experts, which constitute a good first programming language.

This study will compare a group of Turing students and a group of Pascal students in their interactions with their relative software. In particular, the study will focus on the students' responses to syntax error messages and the way in which these either help or hinder the students in their efforts to produce a running program. Conclusions will thereafter be drawn about the impact which a language's syntax might have on the programming learning process.

CHAPTER FOUR
4 Planning the Empirical Study

4.1 Objectives of the Study

The main objective of the study was to ascertain whether students who learn to program with Turing, experience fewer difficulties with the correcting of syntax errors than those learning to program with Pascal. A positive corollary of this might be that the students and teachers could concentrate more on the supposedly pedagogically beneficial tasks of logic debugging and testing which are perceived to develop program comprehension and problem solving skills.

4.2 Preliminary Steps

The University of Toronto, was contacted and arrangements were made to spend a week at its Department of Computer Science. During this week, interviews were conducted with Professor Ric Holt, one of the developers of Turing, and some lecturers who use Turing in their introductory programming courses. Arrangements were also made to visit a high school in Mississauga, Ontario which uses Turing to teach programming. At the school, some pupils took part in an experiment which was designed to evaluate their responses to Turing's syntax checking environment.

In Scotland, similar arrangements were made with a Tayside college where Pascal is used as an introductory programming language. Henceforth, all students and lecturers who took part in the study will be referred to as Pascal Student One, Turing Lecturer C etc. These represent the order in which the students and instructors were tested or interviewed and is not a reflection of seniority.

Finally, Imperial College in London were approached and asked about their reasons for selecting Turing as a teaching language, and their thoughts and opinions since doing so.

4.3 Methodology

The following methodologies were used :-

4.4 Selection of suitable tests

The tests were designed to see if the language used to teach computer programming could affect :-
  1. the amount of teacher assistance required with syntax problems
  2. the speed at which a student progressed through his/her programming tasks
  3. a student's acquisition of logic skill
Further details will be given of the tests in the following chapter.

4.5 Selection of a suitable research methodology

In a report which considered different experimental studies into program comprehension and debugging, the point was made that "If individual differences were limited to quantitative factors such as speed and accuracy then the experimentalist could cope without too much difficulty. However, programming is such a complex intellectual task that it is reasonable to expect considerable qualitative differences between individuals" (Lukey 1981).

A qualitative approach was selected for the study since the focus was on the process of correcting syntax and this would involve individual observation of the subjects. Thus, the sample sizes are, by necessity, quite small. The possibility exists therefore, that the findings of the study, may not be entirely representative of Turing and Pascal communities as a whole. It will be seen, however, that patterns emerge from the study which at least make a larger, more quantitative study worthy of consideration.

4.6 Selection of Suitable Subjects for the Study

It was decided to seek subjects with enough experience of programming to be able to cope with :-

4.7 The Subjects

4.7.1 Age and Experience

The students were volunteers of varying age and programming experience. (See Appendix E). The Turing students ranged in age from 16-18 years, and the Pascal students from 19-31 years. The findings of the study will show that age and experience is not a reliable predictor of syntactic skill.

4.7.2 The Turing Students

There were five students from an Ontario Secondary School. All males, three were in the OAC grade (equivalent to 6th Year in a Scottish school) and two were in Grade 12 (equivalent to 5th Year in a Scottish school). The three older students had not recently programmed with Turing (see Appendix E).

Programming, is introduced at this particular school, in Grade 10.

4.7.3 The Pascal Students

There were five students currently studying at a Scottish College for a Scottish Higher National Diploma in Computing. The course is full-time, and successful completion of this course can enable 2nd year entrance to some University Courses. Four of the students were in their second year of the course and one was in first year. They were all currently programming with Turbo Pascal v1.5. (See Appendix E)

4.8 Method of Observation

"Observational studies are a valuable source of reliable data and can be an effective antidote to anecdotal evidence." Lukey [3].

The students were closely observed on an individual basis. This made it possible to record many details about the participant's behaviour during the exercises. In this type of study, the participants have an opportunity to explain their thought processes as they correct a program and also, to ask questions. This, to some extent, simulates genuine classroom activity where a student might discuss the problem at hand, and any difficulties which he/she may have, with another student or with the teacher.

A structured observation technique was used to record the subjects' behaviour. This initially involved devising a list of possible behaviour which might be exhibited during programming. This list was then used during the observation sessions, to record in numerical order if, and when, the behaviour was exhibited by each subject. By also making brief notes, it was possible to reconstruct the sessions later. This method was based on one used by Berman & Roderick ([17], p 176). See Appendix F for an example of an observation and reconstruction.

4.8.1 Advantages of this method of observation

  1. It enables examination of the process as well as the end result.
  2. A record can be made of the times spent on each part of the process.
  3. A record can be made of everything which the subject might say, ask or do.

4.8.2 Potential drawbacks of the observation technique

  1. Observation may make the participant nervous and therefore the results might be affected adversely by non-typical behaviour.
  2. The results can produce rather superficial meanings about individual behaviour. EG :-
The graphs produced by the observations (see figures 1(b) and 1(c) in the following chapter), display a comparison between two sets of students correcting programs in two different languages. The 'compile/run' column shows the average number of attempts which the students made in correcting these programs and a low score is optimum. However, one subject gave up after one unsuccessful attempt to correct one of the programs and this also produced a low score. Therefore, further explanation of the readings is necessary.

It is also important to follow up this type of observation technique with an interview during which the researcher can quiz the participant about the session and any particular behaviour.

Chapter Five
5 Conducting the Empirical Study

5.1 Tracing a Program

5.1.1 Purpose

This exercise endeavoured to ascertain the students' understanding of the flow of control in a program which has been written in the language with which they were learning to program.

Specifically, the exercise attempted to assess the level of understanding which the students had of a simple program which included assignment, selection and iteration.

5.1.2 Method

The exercise involved tracing through the execution of a program (see Appendix C), keeping a track of the values of all the variables, and deducing what the output of the program would be.

5.1.3 The Results of Program Trace

Three of the Turing students successfully completed the exercise. Those who did, were older and more experienced than those who did not and this therefore may have influenced the results. Additionally however, the students who successfully completed the exercise had a different class teacher from those who didn't and this may also have been a factor if the second teacher had not covered program tracing. The advanced Turing students also recognised that the program output was a partial Fibonacci sequence.

Four of the Pascal students successfully completed this exercise. One of those asked several questions to assist in his understanding of the exercise. None recognised the output sequence although no particular significance is being attached to this.

5.1.4 Conclusions about Program Trace

There was evidence that those students who did not successfully complete this exercise had a tendency to trace through the program once or twice and thereafter to make assumptions about the output, filling in the answers without further traces. There was no conclusive evidence that either language was easier or harder to comprehend by reading.

5.2 Programming and Syntax Correcting Exercises

This section of exercises concentrated on the syntax error messages which the software packages gave and how helpful these appeared to be to the students. The objective of the following two practical exercises was to determine the extent which syntactic difficulty hindered the programming process.

A Compaq 386S/20 laptop computer was used for these exercises and consideration was taken of the student's unfamiliarity with the keyboard.

5.3 Programs containing Syntax Errors

5.3.1 Purpose

This exercise provided the researcher with an opportunity to monitor the students' responses to specific syntax error situations. The syntax errors are examples of those considered by teachers to be in common occurrence.

5.3.2 Behaviour categories

In this exercise, there were 7 predefined categories of behaviour (see Figure 1). An additional category ('other') was included to cover any unforseen behaviour.

5.3.3 Evaluation of the exercise

For each display of specific behaviour, a score of '1' was counted. There were a couple of exceptions to this and these are explained in figure 1(a).

Please refer to Appendix F for an example of use.

5.3.4 Method

The groups were presented with a series of programs with known syntax errors. The Turing group were given 6 programs to correct and the Pascal group were given 8 programs. This was because there was less time available with the Turing students. The results were then averaged to produce a graph which would enable comparison of the two groups.

5.3.5 Selection of common syntax errors

Since the languages are different, the syntax errors from each language were also different. However, errors were introduced into the programs following discussion with teachers of the two languages regarding common syntax errors which students made. These were decided to be :- Please refer to Appendix D which shows the type of syntax error covered by each program.

Within the restrictions of their particular language characteristics, an attempt was made to make the two series of programs as similar as possible. (see Appendices A and B).

5.3.6 Criteria for the Test Data

The test data was chosen to satisfy the following criteria :-
  1. common error messages should be produced
  2. the errors should not be too obscure
  3. the programs should not be too long
  4. an example of a program with more than one error
  5. an example of an error which produced 'false' error messages
The last two criteria were specifically aimed at Turing which highlights all errors at once - some of which may not be genuine errors, but rather a side-effect of other errors.

5.3.7 Assistance

There was no assistance given with syntactic difficulty unless 10 minutes had elapsed during which the subject had made no progress. At this stage, the subject was offered the option to come back to the error at a later stage. If the subject chose this option and experienced the same degree of difficulty on a later return to the error, he was offered assistance.

No student was allowed to spend more than 15 minutes on one syntax error.

5.3.8 Results of the Syntax Error Programs exercise

The results of individual subject performance are given in Appendix G. Graphs comparing the results of the two groups can be seen in figures 1(b) and 1(c) and an explanation of these results can be found on pages 28 and 29.

5.3.9 Pascal bug8

There are two separate graphs and evaluations, one includes Pascal bug8 (the eighth Pascal program containing a syntax error) and the other excludes Pascal bug8. (See Appendix A). There were two errors in this program. The first was a superfluous semicolon preceding an 'else' and the second was a missing 'end'. The error reporting in both cases was unhelpful. None of the students managed to correct this program. One student recognised that there was a missing end, but he was unable to position the 'end' correctly. Correct indentation of the program did not appear to help.

In the interests of fairness therefore, it was decided to report the results inclusive and exclusive of bug8. It can be seen however, that exclusion of bug8 makes little difference to the conclusions which can be drawn from the overall results.

5.3.10 Turing Students

The Turing students took less time to complete this section with fewer misconceptions about the meanings of syntax error messages and no alterations of program logic during the correcting of syntax. In general, the subjects responded spontaneously to the error messages.

Overall, the Turing students corrected 90% of the errors on the first attempt, and 100% of the errors were corrected eventually and without assistance.

5.3.11 Correction style of Turing students

It was noted that when a program contained two errors, the subjects were inclined to study the code and to correct both before attempting to run the program. Only one subject corrected the errors individually. However, on the occasions where one error produced several error messages, one of the younger students (Turing Student Four, bug6), attempted to make changes to the 'false' errors which resulted in making the program even more syntactically incorrect. This will be discussed in more detail at a later stage.

5.3.12 Pascal Students

The Pascal students had considerably more difficulty with syntax error messages. One student consulted the 'help' screen on several occasions. Three of the students passed over on some of the programs and returned to them at a later stage. Overall, 70% of the errors were corrected first time (61% if bug8 is included), and only 87% of the errors were corrected eventually and without assistance (76% if bug8 is included).

On the whole, the Pascal students were more inclined than the Turing students to study the code rather than be led by the error message when correcting syntax. This was despite the fact that the Turbo Pascal syntax checker attempts to be more specific than Turing in locating the probable position of the error.

Two of the Pascal students (Pascal Student Two for Bug6 and Pascal Student Four for bug4 & bug5) altered the logic of the programs after repeated attempts to get rid of syntax error messages

5.3.13 Correction style of Pascal students

The Pascal students had little option but to correct their errors one at a time since the Turbo Pascal compiler highlights only one error at a time. This would certainly minimise the danger of students responding to 'false' error messages.

Explanation of Syntax Error Programs Graph

The following are explanations of the results shown on graphs 1(b) and 1(c).

In this exercise, it can be seen that for 13% of the errors (24% if bug8 is included), the Pascal students would have required assistance from colleagues or from a teacher. How much time would have been wasted over these syntax errors would be determined by how quickly the students would have been prepared to seek this assistance.

5.4 Program Writing

5.4.1 Purpose

Lukey [4] criticises this method of evaluating programming skills on the grounds that "It is tremendously difficult to design a useful experiment in which programmers debug their own errors. This is because there is no good way of controlling the errors which will be made. Subjects in such an experiment would be likely to make a wide range of errors and, quite probably, no two subjects would be performing exactly the same debugging task. Because of this, most experiments have involved the debugging of programs prepared by the experimenter".

It was however, for precisely that reason that this exercise was included in the experiment. It was felt that by allowing the subjects to make and correct their own errors, it would portray a more realistic picture of the types of the syntax errors and difficulties encountered by students. The syntax error programs allowed a controlled measurement of the subjects responses to the researcher's idea of 'typical syntax errors' based on a prior discussion with instructors. However, this exercise allowed a real-life situation to be evaluated.

5.4.2 Program Writing behaviour categories

There are more categories in this section because of the planning element. See Figure 2(a).

5.4.3 Method

The students were asked to design and write a program which would convert temperatures 0-100 Fahrenheit (iteration) into Celsius, but which would only print out the Celsius temperature if the Fahrenheit reading was divisible by 5 (selection). See Appendix H for an example of the worksheet.

5.4.4 Assistance

During the programming exercise, students who experienced any difficulty with problem-solving were assisted (although in most cases, this proved unnecessary).

No assistance was given with coding unless the student appeared to be having considerable difficulty. All help was recorded, but not evaluated as explained above.

5.4.5 Results of the Program Writing Exercise

The student's programs and output can be found in Appendix I. Figure 2(b) is a graph comparing the results and there is an explanation of the results on pages 34 and 35.

5.4.6 Turing Students

None of the Turing students made use of the pen and paper which was provided for them to plan their program on paper. Only one of the students made notes of any kind and these were of a trivial nature.

One conclusion which may be drawn from this is that the students considered the exercise to be simple and therefore not requiring formal planning or design. Two others are that the students had not been taught to plan on paper or that they simply couldn't be bothered. In any case, none of the three older students had any difficulty in writing the program, taking no more than 10 minutes to do so and with little syntactic correction being necessary.

All of the older students made methodical use of the F2 key (paragraph) - especially when working on the loop.

Neither of the two younger students used the F2 key at all and both had difficulties with the logic of the program although not just with the loop. One of these younger students expressed that "..I was getting a little messed up because there was too much on the page I reckon". (referring to the instruction sheet)

One of the younger students had difficulty in developing a strategy which would output only those temperatures whose fahrenheit value was a multiple of 5. It was decided at this point to give all subsequent students a 'hint' by explaining the usefulness of the 'mod' function. The older Turing students were already familiar with 'mod'.

Again there were differences of experience and instruction. The older boys used the F2 key to paragraph their program every couple of lines. Two of them commented during their interviews that they liked it and thought that it helped them with loop constructs. One student remarked that the 'shape' of a program helped him to understand it. Schneiderman [4], [5], suggested that there is a close link between how well one can understand a program and how well one can remember it. His experiment indicated that well-structured programs were easier to remember than badly structured programs. His conclusions can however be questioned from the point of view that measurement of comprehension is somewhat subjective. It is entirely possible to understand a concept and still be unable to put this concept into practice.

5.4.7 Pascal Students

Only four of the Pascal students performed the program writing exercise as one student had run out of time with the syntax error program exercise.

The Pascal students are instructed in the use of Jackson Structured Programming (JSP) [7] which involves the design of a diagrammatic representation of the program. The students are then encouraged to use this diagram to design procedure stubs and finally, to write the code itself. In practice, only two of the students used this methodology, but they had least difficulty with this exercise and both produced a working program within 10 minutes.

None of the Pascal students had particular difficulty with logic in this exercise, although one student had problems caused by placing a semi-colon after the 'if...then'. The result was that this statement was ignored by the compiler and the output was erroneous. The student, who was in 2nd year, received considerable assistance with the exercise.

Explanation of Program Writing Graph

The following is an explanation of the graph in figure 2(b).

Ponders Problem
The Turing students spent about 50% longer considering the worksheet than the Pascal students.
Makes Notes
Both sets of students made equally few notes.
Works out Code on Paper
The Pascal students were more inclined to work out the problem on paper, but not to any great extent.
Performs Paper Trace
Neither group performed a paper trace of the program.
Draws Flow Diagram
Two of the Pascal students designed a JSP prior to keying in the code. None of the Turing students planned on paper at all.
Keys in Code
Some of the Turing students interspersed their keying-in with use of the F2 key (paragraph).
Ponders Syntax Error
The Pascal students had more difficulties in understanding their syntax errors than the Turing students.
Ponders Code
The Pascal students spent longer than the Turing students studying their code whenever an error was encountered.
Corrects Syntax Error
The Pascal students encountered more syntax errors than the Turing students during the exercise.
Alters Syntax Error
Both groups had a low occurrence of making the 'wrong' correction to the syntax error.
Alters another part of the Code
Neither group failed to locate a syntax error which they created themselves.
Compile/Run
The Pascal students had approximately 15% more compilation attempts than the Turing students.
Uses F2 Key
Some of the Turing students alternated use of the F2 key with keying-in their code.
Help with Logic
The Turing students more help with logic than the Pascal students although both scores were very low.
Help with Syntax
Only the Pascal students required help with syntax errors.

5.5 Remarks about the programming and syntax correcting exercises

It was noted that where experienced, the students became increasingly despondent and agitated with each unsuccessful compilation attempt. In such cases, students may perceive a problem solving exercise as having a higher complexity level than it actually has.

There had been a preconception that Turing students would be tempted to run their programs frequently during syntax correcting simply because it is a one key operation to do so. It was however, found not to be the case. Even when there was more than one error in a program, the students were inclined to correct both errors at the same time before running the program.

5.6 Programming style

The objective was not to see the most elegantly written programs, but programs which used loops, assignment and selection and to see as many students as possible so that interaction with the software could be observed. The students were therefore told that they need not use procedures for the exercise. One of the Pascal students did however use procedures and did in fact take one of the shortest times to write his program.

5.7 Remarks about Syntax Checkers

Earlier, it was suggested that syntax checkers can provide a programmer with three categories of error message :- In the context of the behaviour categories described above, it could be perceived that the students might respond to such error messages as follows :- This is perhaps a precarious assumption, because as a student becomes familiar with a language, he/she should become more practised at recognising unhelpful and misleading error messages, and will rely less on the syntax checker and more on his/her own expertise.

Nevertheless, it was decided to examine the error reporting on the syntax error programs and to categorise these as above. The results of the syntax correcting sessions were then compared with the categories to see if any patterns emerged. A fourth category was included for the Turing syntax checker. This was 'false diagnosis', where one syntax error produced a side effect of other 'false' errors.

The results can be seen in figure 3(a) and 3(b).

Consider first the categories of the error messages. It is apparent that Pascal has a higher incidence of 'unhelpful' and 'misleading' error messages. Turing has no 'misleading' error messages, although one of the 'unhelpful' messages also produces 'false' messages.

It can be seen that with both syntax checkers, there is a higher incidence of errors where the message is misleading and unhelpful or where 'false' errors are produced. This is not perhaps surprising, but given that the students who took part in the test were not novices, it might be reasonable to suggest that complete beginners would have considerably more difficulty with Pascal than with Turing.

5.8 Summary

This chapter has examined and compared the two groups of students as they performed exercises in program tracing, syntax correcting and program writing. The program tracing exercise was designed to assess the students' ability to trace the flow of control in a program written in their programming language. There was no conclusive evidence that either language was easier to trace than the other.

It was concluded from the syntax correcting and programming exercises that the Turing students spent less time and needed less assistance with syntax correcting than Pascal students. They were also more likely to resolve syntax errors on the first attempt and less likely to require assistance in doing so. The Pascal students were more likely to be misled by syntax errors and to alter the logic of the program in the syntax correcting process.

There was no difference in the amount of assistance required with logic. Students in both groups required assistance with logic to roughly the same (minimal) extent.

A comparison of the value of the error messages produced by the two syntax checkers, shows that Pascal produces more unhelpful and misleading messages than Turing although Turing produces some 'false' error messages. Statistically, these were the error messages which caused the students most difficulty and it is felt that complete beginners might have considerably more difficulty with Pascal error messages than with Turing.

CHAPTER SIX
6 The Interviews

6.1 Student Interviews

The student interviews addressed several issues :-
  1. to find out if the students had understood what they had been asked to do
  2. how they felt that they had learned syntax correcting
  3. what specifically had helped them with the exercises
  4. what they thought of their programming language
  5. what their understanding was of certain programming concepts
None of the students felt that their instructions had been unclear and a few of the students expressed that they had enjoyed the exercises. These were however, students who had experienced no difficulties with any of the exercises.

On the whole, 'trial and error' appeared to be the main method by which syntax correcting was learned. Most of the teachers stated that they did not 'teach' syntax correcting, but rather 'assisted' with individual problems as and when they occurred. "..it's difficult to pick out which one's you're going to teach them because they'll always find another one !" (Pascal Lecturer C). Interestingly though, several of the students appeared to perceive individual assistance as 'teaching'. In this respect, it seems that some teachers may only regard themselves to be teaching when they are addressing the entire classroom. At the College, there are exercises given in first year, in the form of syntax error programs, to assist the students in becoming proficient at recognising and responding to syntax error messages. Some of these errors were repeated in this study.

Textbooks were only considered to be useful in syntax correcting by the Turing students. This is possibly because Turing has no 'help' screen. One of the Pascal students particularly felt that the 'help' screen was useful. This student was alone in making use of the help facility during the exercises.

All of the students stated that previous experience of the syntax errors in the exercises had enabled them to correct them. Several students claimed to have seen some errors previously, even when they were unable to correct them instinctively.

All of the students were happy with the language which they were learning. A few of the Turing students admitted that at first they were a little suspicious of Turing which they knew was not a mainstream language, but that they now felt that it was a good language with which to learn to program. Those who were now using other languages, felt that Turing had assisted them in making the transition "..if I didn't know basic Turing, I wouldn't have been able to get past the first chapter in my tutorial for C++." (Turing Student Two).

None of the Pascal students felt dissatisfied with learning that particular language. This may be due to the fact that often, "Pascal is erroneously thought to be a language of business.." (Turing Lecturer C). Interestingly, despite the difficulties which were experienced during the exercises, none of the Pascal students felt that they spent an unreasonable amount of time correcting syntax errors. One student (Pascal Student Five) felt that the semi-colons were an irritation, but accepted that "...the errors you get, you've put them in yourself..".

Undoubtedly, the F2 key is one of the more popular features of Turing - "...it sure helps with the organisation of the loops and the if statements - especially when it gets long and it helps even more when we learn procedures" (Turing Student Three). Certainly from a teacher's point of view, it is easier to mark a program which is correctly laid out on the screen. In a comparison of the eight available programs which the students wrote for this exercise (see Appendix I), only the first three Turing programs and the first Pascal program are indented in a manner which makes them easy to read. The others are either not indented at all, or indented in an exaggerated way making them equally difficult to read.

Several students however, felt that Turing was not powerful enough and restricted them in the size of program which they wanted to write "I think Turing is really limited. It has a global data size of 64k or something like that and it isn't necessarily quick when you run it...." (Turing Student One); "It's pretty hard to do something that takes a lot of lines" (Turing Student Five); "[A disadvantage is] just how powerful it is. You can only do so much" (Turing Student Three)

Most of the students gave good answers to the questions aimed at ascertaining their understanding of certain programming constructs (see Appendix G).

6.2 The Teacher Interviews

The teacher interviews served the purpose of finding out :-
  1. what teachers think are specific problems in teaching and learning programming
  2. how they feel that a language can worsen or lessen these difficulties
  3. how they teach syntax correcting
  4. what they think of their programming language
All of the teachers had experience of teaching other languages and these included COBOL, BASIC, PL/1, FORTRAN, C and C++. Length of teaching ranged from 8 months to 40 years.

Without exception, the teachers agreed that problem solving is the most difficult aspect of programming to teach. Opinions on how a language can help to overcome this varied :-

Notably, of the Turing instructors who expressed an opinion, all mentioned syntax. None of the Pascal instructors mentioned having a simple syntax as being a way in which a language could help a student to overcome difficulties in learning to problem solve. Several of the Turing students had experience of teaching with Pascal, so with the benefit of that comparison, it is entirely possible that they recognise the extent to which syntax difficulties can slow down a student's progress.

Turing is popular with those who teach it and it's popularity is accredited to it's easy syntax and graphics capabilities. These are perceived as being useful for teaching beginners and, in particular, to younger students. The teachers agreed that Turing is very easy to learn.

The Turing teachers claimed not to explicitly teach syntax correcting although Turing Teacher C felt that it would be a positive teaching method to do so. The lecturers and the other teachers however, all felt that explicit teaching of syntax errors was unnecessary with Turing because of its clear syntax.

Turing Lecturer B also felt that algorithms translate easily into Turing so that at University level, students can be told "You've got the book, you can look up the syntax, this is basically near enough what it looks like".

Perceived disadvantages of Turing included being unable to import graphics from other applications and having to contend with complaints from students who feel that they should be learning a language which is 'industrially relevant'.

No Turing teacher commented on students being misled by 'false' errors.

The Pascal lecturers like Pascal for "..its clarity, its rigor [and] the constraints it puts on students to model the world correctly" (Pascal Lecturer A); "It's well structured...it's more English oriented even although I think C's not too bad. It follows a JSP and I still think the students pick it up quite easily" (Pascal Lecturer B). Pascal Lecturer B, however also has the opinion that it is "...difficult to teach logic or problem solving through Pascal...".

At present, the college used in the study is in the process of deciding whether to introduce C as it's first taught language. It is felt that there are advantages to teaching a language which is considered to be 'industrially relevant' from the beginning, thus giving the students an opportunity to develop expertise in this language. Feelings are mixed among the staff. It is felt that much depends upon the calibre of the students who are being taught and what their previous experience has been. Pascal Lecturer A feels "Fearful...I think that the teaching of an untyped, poorly constrained language in all its complexity to beginners is bad practice because they have no feeling for how you define objects, what the constraints are when you define them, and what the safety is by defining them safely.....if Pascal does one thing, it does produce safe programs". Pascal Lecturer C on the other hand, does feel that there is a case for "getting right into teaching something that [the students] are going to use outside....you've seen the adverts, people want C, they want Visual Basic...".

For some educators, it would appear that the choice of first language depends on the course. Clearly, in an FE college, the objective of the course is to prepare students for a competitive job market and in this case, it may be felt that there are convincing arguments for "Training students to be marketable commodities, immediately useful to an employer". (Laker [22])

In a school setting however, the syllabus is geared more towards preparing the students for further or higher education and from this point of view, there is perhaps more flexibility in a choice of programming language.

The issue of student calibre was raised and considered to be of significance. Where a class contains students of very mixed abilities, it is more important to "[have] easy to learn and use, basic syntax" (Turing Lecturer C). This is certainly a major consideration in Scottish high schools nowadays.

As was earlier stated, some of the instructors who were interviewed in this study, had experience of teaching with both Pascal and Turing. They, are therefore in the strongest position to make a comparison.

All of them felt that Turing was easier to teach and to learn. Turing's main advantages, they feel, are its uncomplicated syntax and error handling. Imperial College in London selected Turing because it was the cheapest system available which offered most of the features which they considered desirable for an introductory programming course. There, it is felt that "The students certainly learn faster at the beginning using Turing ... we can get on to more advanced ideas more quickly ..." (Roger Bailey, October 1995).

In general however, Dr Bailey feels that "..our students are high-achieving computer geeks who aren't fazed by syntax anyway. Inconvenient syntax is usually only a temporary hurdle, but possibly more for, say, schoolkids....".

CHAPTER SEVEN
7 The role of the teacher

In his 1994 study, Anjaneyulu [1] attributed certain bugs to the type of instruction which the student received and this must not be underestimated.

It was noted during the study that there were occasions where students who shared the same teacher, displayed distinct similarities in approach to the exercises. This included weaknesses such as failure to make use of the F2 key.

Linn & Dalbey [12] studied over 500 students and concluded that the success of introductory programming classes is strongly influenced by the quality of instruction, reasonable access to computers and curriculum materials - all of which they found largely lacking. In Linn & Dalbey's study, the students who had scored highest in the tests, were those high and average ability students (both made similar progress), whose teachers provided exemplary models and debugging techniques. This is a method whose success is endorsed by Pascal Lecturer B.

Linn & Dalbey [12] identified the chain of programming instruction as having three components :-

  1. simple language features
  2. design skills
  3. general problem solving
They describe the need for much of the early part of introductory courses to be concentrated on familiarisation with the programming language although this knowledge is of relatively little use on its own. If there are numerous rules to be learned, and time is very limited, the introductory course may not progress much further than familiarisation of language features. In this situation, the value of such a course must be questioned.

They also concluded that quality of teaching was a major factor in the success of a computing course. Husic et al [15] found that teachers of programming, especially in a pre-college setting, may know little more about programming than their students. Often, the teacher has learned to program by attending a few workshops or classes in programming. As a result, there was a perpetuated emphasis on syntax-oriented organisation of computing as a result of the teacher's main or only programming experience having been acquired through attending classes or workshops.

Pascal Lecturer B feels strongly that good teaching is of more significance than any particular software. He noted that his students benefited more from a system of teaching which involved informal tutorial sessions, where he would sit with a group and work through a problem together and to completion. This he felt was a better teaching strategy than giving out handouts with examples and solutions.

This is certainly a common-sensical viewpoint. However, unless a student can reinforce such quality teaching by trying out the ideas quickly, many benefits will be lost. The immediacy of this is essential. The longer it takes a student to compile and test an idea, the weaker will be the understanding of what has been taught.

Others agree that "The truth of the matter is that a good teacher can teach a good student regardless of the quality of the teaching tool" (Chris Stephenson, Vice President of Holt Software).

What must be considered however, is "What happens in the absence of good teaching ?". Holt Software feel that they are providing a solution "...Turing is a good tool for the rest of the teachers and students for whom programming is not always immediately accessible".

In other words for 'ordinary students' and 'ordinary teachers'.

CHAPTER EIGHT
8 Conclusion

It would be naive to conclude that use of the Turing language in introductory computing courses would solve all of the problems highlighted by Soloway [2] [9], Walsh [10] and others. Many other factors contribute to the successful outcome of a course in programming such as teaching methods, access to computers and not least of all, the ability of the students undertaking the course. However, there are potentially many benefits to be derived from the use of a language whose basic syntax is not in danger of becoming the main or only learning achievement of some students.

This study considered some benefits which might be derived from reducing the time which students and teachers spend correcting syntax errors. The speed at which the Turing students worked through the programming and syntax correcting exercises, is a clear indication that Turing is a language with which students will quickly become familiar and this is something upon which an astute teacher should be quick to capitalise. The Pascal students took approximately 35% longer than the Turing students to complete the exercises. (This approximation includes an allowance for the fact that they also had two extra programs to correct.)

The fact however, that three, of the five of the Turing students re-adapted to the language with such ease when they hadn't used it for some time, is a strong case in favour of its suitability for beginners. Often, there can be confusion over minor syntactic details when there has been a break from using a language and especially where another language has been learned in the interim.

Obviously, syntax is an issue which many educators consider to be a technicality and often a minor one at that. It certainly should be, but all too often it is not. For many programmers, a language is considered in terms of its capability to produce complex and powerful programs. However, the objective of an introductory programming course is to convey programming style and concepts in ways which are both easy to comprehend and, to reinforce through quality practice.

Comfort must not be taken from reassurances that most students will gradually learn the syntax of a language through time. 'Gradually', can mean 'soon' for some students and 'never' for others. It is the students in the middle of that scale for whom the biggest difference can be made.

Syntactic errors have also been seen to have an impact on the logic of programs. On three occasions, Pascal students altered programs which were previously logically correct in their efforts to get those programs to compile. Similar findings were made by Walsh [10]. This matter raises further questions about the findings of other studies which have looked at novice programmers' semantic miscomprehensions (Spohrer et al [11]). In this study, the researchers selected as their data, a total of 158 'syntactically correct' programs from a group of non- science, humanities oriented students who had completed an introductory Pascal programming course. This data comprised of the first syntactically correct program that a subject generated on the basis that it would contain more bugs than later, partially debugged versions.

It is suggested however, that in many circumstances, these programs would not in fact provide an accurate representation of the subjects' semantic miscomprehensions since their sample might include logical errors which were manufactured during the syntax correcting process. Soloway [2] and Anjaneyulu [1] both conducted research which suggested that many novice programmers' semantic misconceptions are directly related to the Pascal language. The design of the Turing language addresses some of these difficulties such as having an exit in the middle of a loop, and preventing array indexes from going outwith their bounds.

Conceptualisation was high on the list of things which teachers considered to be a problem for students. Concepts such as assignment, iteration and selection are often totally alien to a novice. In this sense, Turing is seen to help by providing a feature which reinforces correct layout for the student. By 'shaping' the program in this way, students can conceptualise loops more easily.

Although it does not have a facility for tracing through programs, the fact that a run-time error will highlight the part of the code at which execution terminated, is considerably more helpful to a novice than an address in memory.

Little has been said about Turing's graphics and nothing has been mentioned about its powerful string handling capabilities. However, these are two features which make Turing an exciting language with which to satisfy the programming requirements of the curriculum. The graphics are easy to use and offer an interactive, fast moving, and interesting introductory programming course to younger children. "... we've turned the focus on graphic and music because very simply, that is a way of motivating the kids. You can teach them a loop with a dry example or you can teach them how to bounce something around the screen and they realise that they are learning it..." (Turing Teacher C).

There was however, no evidence that the Turing students had developed better problem solving skills as a result of the language's easier syntax, only that the students wasted less time in dealing with syntax errors. In order to measure progress in developing problem solving skills, a much larger, more controlled experiment would have to be set up with two 'matched' groups of beginners learning the two languages in parallel, with the same teacher instructing both groups. No such experiment has ever been carried out and Roger Bailey, for one, doubts if anyone ever will.

There remains only the question as to whether there is an argument in favour of using a more suitable, but less well known language in an introductory programming course instead of one which is widely used, but with which less progress may be made. The answer must lie in the programming course itself.

There is a strong argument in favour of using such a language initially in order to convey as many programming ideas in as short a time as possible. Given the relatively short class times on a High School computing course, this benefit must not be underestimated. The school aims to provide a solid foundation of understanding upon which a pupil can build. It is therefore more important at this stage that the language which is used, acts as a means to an end rather than the end in itself.

For the vast majority of school pupils and University undergraduates, an introductory course in Computing serves only to fulfil the partial requirements of a syllabus. It is estimated that less than 10% of these students will go on to take computing as a major subject "For many of these students, the introductory course will be the only computer course they take, and it is important for it to provide a good foundation in the discipline of computing" (Roberts [27]).

For the organisers of computing courses in Colleges of Further Education and at University postgraduate level however, there are different considerations. These courses are intensive and specialised. The students are closer to the job market and therefore, a convincing argument remains in favour of training students entirely in an industrially relevant programming language such as C.

One argument put forward by this school of thought, is that good programming style can get lost in the transition from one language to another and that students are being "...taught to become good programmers only in the context of a language that they will never use again". (Roberts [27]). This is one argument which would certainly require consideration in the planning of more intensive and specialised computing courses.

It is accepted that there may always be potential difficulties in progressing from one language to another, but for more than 90% of the students who take introductory computing courses, this will never be a problem. For this reason, languages such as Turing remain the best possible choice to meet the objectives of such courses.

From the viewpoint of a Computing Studies teacher therefore, there is clearly sufficient evidence to merit at least further investigation into the use of Turing as a teaching language in Scottish schools.

REFERENCES

[1] KSR Anjaneyulu (April 1994) Bug Analysis of Pascal Programs (ACM SIGPLAN NOTICES, Volume 29 (4)

[2] E Soloway, J Bonar, K Ehrlich (1989) Cognitive Strategies and looping constructs : An Empirical Study (in Studying the Novice Programmer, Edited by E Soloway & J Spohrer, Lawrence Erlbaum Associates Inc, NJ

[3] F J Lukey (1981) Comprehending and Debugging Computer programs (in Computing Skills and the User Interface, Ed. Coombs M J & Alty J L, Academic Press

[4] Schneiderman B (1977) Exploratory experiments in programmer behaviour (Int J Computer System Sci., 5, 123- 143)

[5] Schneiderman B and McKay D (1976) Experimental investigations of computer program debugging and modification (Technical Report No 48, Computer Science Dept., Indiana University

[6] Ledgard HF, Whiteside J Singer A and Seymour W (1980) The natural language of interactive systems Commun ACM 23, 10 556-563

[7] Pressman R S (1994) Software Engineering A Practitioner's Guide (MgGraw Hill, Berkshire, England

[8] Weidenbeck S (1985) Novice/Expert differences in Programming Skills International Journal of Man-Machine Studies, 23 383-390

[9] Soloway E , Ehrlich K, Bonar J & Greenspan J (1983) What do Novices Know about Programming ? In Directions in Human- Computer Interactions, B Schneiderman and A Badre (Eds) Ablex Inc

[10] Walsh T, (1989) Rationale for and problems involved in teaching programming. Unpublished M.Ed. Dissertation, University of Stirling, Stirling

[11] Spohrer JC, Pope E, Lipman M, Sack W, Freiman S, Littman D, Johnson L and Soloway E (May 1985) BUG CATALOGUE: II, III, IV Tech Report 386, Dept of Computer Science, Yale University, New Haven, Conn

[12] Linn MC and Dalbey J (1989) Cognitive consequences of programming instruction (in Studying the Novice Programmer, Edited by E Soloway & J Spohrer, Lawrence Erlbaum Associates Inc, NJ)

[13] Perkins DB, Hancock C, Hobbs R, Martin F, Simmons R, (1986) Conditions of Learning in Novice Programmers (in Studying the Novice Programmer, Edited by E Soloway & J Spohrer, Lawrence Erlbaum Associates Inc, NJ, 1989)

[14] Pea RD (1986) Language Independent Preconceptual "Bugs" in Novice Programming J Educational Computing Research, Vol 2 (1)

[15] Husic F, Linn MC and Sloane KD (1989) Adapting instruction to the cognitive demands of learning to program J of Educational Psychology , 81, 4, 570-582

[16] Carver S M (1988) Learning and Transfer of Debugging Skills: Applying Task Analysis to Curriculum Design and Assessment, In Teaching and Learning Computer Programming:Multiple Research Perspectives, (Ed) Mayer RE, Lawrence Erlbaum Assoc, NJ, pp 259-297

[17] Berman LM, Roderick JA (1977) "Curriculum: Teaching the What, How and Why of living" Charles E Merrill Publishing Co., Ohio

[18] Schneider GM, Weingart SW & Perlman DM (1978) An Introduction to Programming and Problem Solving with Pascal John Wiley and Sons, New York

[19] Dalbey & Linn (1985) The Demands and Requirements of Computer Programming: A Literature Review J Educational Computing Research, 1 (3), pp 253-274

[20] du Boulay B, O'Shea T & Monk J (1989) The Black Box within the Glass Box: Presenting Computing Concepts to Novices (in Studying the Novice Programmer, Edited by E Soloway & J Spohrer, Lawrence Erlbaum Associates Inc, NJ)

[21] Holt RC & Cordy JR (1988) The Turing Programming Language, Communications of the ACM, 31 (12), pp 1410-1423

[22] Luker, P A (1989) Never mind the language, What about the Paradigm? SIGSCE Bulletin, 21, pp 252-256

[23] Friend (1975) Programs Students Write Technical Report No 257, Institute for Mathematical Studies in the Social Sciences, Stanfor University

[24] McCracken DD, (1992) Programming Languages in the Computer Science Curriculum SIGSCE Bulletin, 24, pp 1-4

[25] Holt RC, Matthews PA, Rosselet JA, Cordy JR (1987) The Turing Programming Language: Design and Definition Prentice Hall

[26] Pennington N & Grabowski B (1990) The Tasks of Programming in Psychology of Programming, Eds Hoc JM, Green TRG, Samurcay R & Gilmore DJ, Academic Press, London, 1990

[27] Roberts ES (1993) Using C in CS1: Evaluating the Stanford Experience, SIGSCE 25.

Additional Reading

Hume JNP (Summer 1994) A Comparison between Turbo Pascal and Turing as Programming Languages for Problem Solving, Journal of Computer Science, Vol 4 (4).

Hume JNP (1993) Turing Tutorial Guide, Holt Software Associates Inc, Toronto, Canada. 10 A brief look at Gender Differences


[ Turing Home ] * [ Top of Page ] * [ Feedback ]