How beginner-friendly is a programming language? A short analysis based on Java and Python examples

In this paper, we are interested in criteria to help us choose a programming language for a freshman programming course. The audience is future engineers who won’t be computer scientists or IT professionals. We are therefore more interested in conveying elements of computational thinking and logic rather than full mastery of a given language. Following a rather exceptional situation where we had to give substantially the same course, in parallel, once in Java and once in Python, we relate here some syntactic and semantic aspects of the two languages which, in our experience, ease the teaching or learning of basic programming concepts. We argue that in quite a few cases, Python makes basic concepts easier to introduce because of less syntactic noise and less conceptual noise. We also propose a short list of syntaxand semantics-related desiderata for a beginner language—which neither Java nor Python completely answer.

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

[2]  Richard L. Wexelblat,et al.  The consequences of one's first programming language , 1980, SIGSMALL '80.

[3]  Noa Ragonis,et al.  A Diagnostic Tool for Assessing Students' Perceptions and Misconceptions Regards the Current Object "this" , 2018, ISSEP.

[4]  Neil Brown,et al.  Ten quick tips for teaching programming , 2018, PLoS Comput. Biol..

[5]  Matthias Felleisen,et al.  The structure and interpretation of the computer science curriculum , 2004, J. Funct. Program..

[6]  Jeannette M. Wing An introduction to computer science for non-majors using principles of computation , 2007, SIGCSE.

[7]  L. McIver,et al.  Seven deadly sins of introductory programming language design , 1996, Proceedings 1996 International Conference Software Engineering: Education and Practice.

[8]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[9]  Keith J. Holyoak,et al.  The cognitive basis of knowledge transfer. , 1987 .

[10]  Tapio Salakoski,et al.  What about a simple language? Analyzing the difficulties in learning to program , 2006, Comput. Sci. Educ..

[11]  Linda McIver Evaluating Languages and Environments for Novice Programmers , 2002, PPIG.

[12]  Lauri Malmi,et al.  A survey of literature on the teaching of introductory programming , 2007, ITiCSE-WGR '07.

[13]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[14]  Philip Wadler,et al.  Java generics and collections , 2006 .

[15]  M F Sanner,et al.  Python: a programming language for software integration and development. , 1999, Journal of molecular graphics & modelling.