What about a simple language? Analyzing the difficulties in learning to program

In this paper, we present the results from a two-part study. We analyze 60 programs written by novice programmers aged 16 – 19 after their first programming course, in either Java or Python. The aim is to find difficulties independent of the language used, and such originating from the language. Second, we analyze the transition from a “simple” language to a more “advanced” one, by following up on eight students, who learned programming in Python before moving on to Java. Our results suggest that a simple language gives rise to fewer syntax errors as well as logic errors. The qualitative part of our study did not reveal any disadvantages from having learned to program in a simple language when moving on to a more complex one. This suggests that not only can a simple language be used when introducing programming as a general skill, but also when providing basic skills to future professionals in the field.

[1]  Leon E. Winslow,et al.  Programming pedagogy—a psychological overview , 1996, SGCS.

[2]  Mark Toleman,et al.  Language trends in introductory programming courses , 2002 .

[3]  Dianne Hagan,et al.  Does it help to have some programming experience before beginning a computing degree program? , 2000, ITiCSE '00.

[4]  Ewan D. Tempero,et al.  Java pitfalls for beginners , 1998, SGCS.

[5]  Said Hadjerrouit Java as first programming language: a critical evaluation , 1998, SGCS.

[6]  Dale Shaffer The use of Logo in an introductory computer science course , 1986, SGCS.

[7]  Achla Agarwal,et al.  Python for CS1, CS2 and beyond , 2005 .

[8]  SimonBeth,et al.  A multi-national study of reading and tracing skills in novice programmers , 2004 .

[9]  Caitlin Kelleher,et al.  Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers , 2005, CSUR.

[10]  Tapio Salakoski,et al.  Why complicate things?: introducing programming in high school using Python , 2006 .

[11]  Christine Shannon Another breadth-first approach to CS I using python , 2003, SIGCSE.

[12]  Chris Stephenson,et al.  Language Choice and Key Concepts in Introductory Computer Science Courses , 1998 .

[13]  D OldhamJoseph What happens after Python in CS1 , 2005 .

[14]  George Milbrandt,et al.  Using Problem Solving to Teach a Programming Language. , 1995 .

[15]  Martina Schollmeyer Computer programming in high school vs. college , 1996, SIGCSE '96.

[16]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[17]  Danny Kopec,et al.  CS1: perspectives on programming languages and the breadth-first approach , 2000 .

[18]  Mark Guzdial,et al.  A media computation course for non-majors , 2003, ITiCSE '03.

[19]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[20]  Frank Stajano,et al.  Python in Education: Raising a Generation of Native Speakers , 2000 .

[21]  J. Geller,et al.  A low-tech, hands-on approach to teaching sorting algorithms to working students , 1998, Comput. Educ..

[22]  Robert McCartney,et al.  A multi-national, multi-institutional study of student-generated software designs , 2004 .