When students are not programmers

We present our experience from using Python to teach programming to high school students (aged 15). We selected Python as it is regarded to be a language suitable for teaching, while at the same time it has the advantage of being a production language, widely used around the world. Our experience shows that the success of a language in a professional setting does not predict success as a teaching tool. Based on our observations we offer some general conclusions on programming languages for teaching.

[1]  Tim Peters The Zen of Python , 2010 .

[2]  Mordechai Ben-Ari,et al.  Situated Learning in Computer Science Education , 2004, Comput. Sci. Educ..

[3]  P. J. Landin,et al.  The next 700 programming languages , 1966, CACM.

[4]  Donald A. Norman,et al.  Accretion, tuning and restructuring: Three modes of learning , 1976 .

[5]  Matthew H. Austern Generic programming and the STL - using and extending the C++ standard template library , 1999, Addison-Wesley professional computing series.

[6]  Csr Young,et al.  How to Do Things With Words , 2009 .

[7]  Mordechai Ben-Ari Computer Science Education in High School , 2004, Comput. Sci. Educ..

[8]  Donald E. Knuth,et al.  Structured Programming with go to Statements , 1974, CSUR.

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

[10]  Mitchel Resnick,et al.  Empowering kids to create and share programmable media , 2008, Interactions.

[11]  Donald E. Knuth,et al.  Algorithmic Thinking and Mathematical Thinking , 1985 .

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

[13]  Daniel Gooch,et al.  Communications of the ACM , 2011, XRDS.

[14]  Greg Lindstrom,et al.  Programming with Python , 2005, IT Professional.

[15]  A. Koller,et al.  Speech Acts: An Essay in the Philosophy of Language , 1969 .

[16]  Andrew Koenig,et al.  C Traps and Pitfalls , 1989 .

[17]  Etienne Wenger,et al.  Situated Learning: Legitimate Peripheral Participation , 1991 .

[18]  Federico Biancuzzi,et al.  Masterminds of Programming - Conversations with the Creators of Major Programming Languages , 2009 .

[19]  Ben Shneiderman,et al.  Program indentation and comprehensibility , 1983, CACM.

[20]  Warren Sande,et al.  Hello World!: Computer Programming for Kids and Other Beginners , 2009 .

[21]  John M. Zelle,et al.  Python Programming : An Introduction to Computer Science , 2003 .

[22]  Diomidis Spinellis,et al.  Code Quality: The Open Source Perspective , 2006 .

[23]  Steve McConnell,et al.  Code complete - a practical handbook of software construction, 2nd Edition , 1993 .

[24]  Steven Pemberton,et al.  An Alternative Simple Language and Environment for PCs , 1987, IEEE Software.

[25]  Ben Shneiderman,et al.  When Children Learn Programming: Antecedents, Concepts and Outcomes , 1985 .

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

[27]  R. Kent Dybvig,et al.  Revised5 Report on the Algorithmic Language Scheme , 1986, SIGP.

[28]  Jonathan Rees,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[29]  Michael H. Goldwasser,et al.  A graphics package for the first day and beyond , 2009, SIGCSE '09.

[30]  Patrick J. Schloss Questions and Highlights in CAI Modules , 1985 .

[31]  Diomidis Spinellis,et al.  Code Quality: The Open Source Perspective , 2006 .

[32]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

[33]  Donald E. Knuth,et al.  Computer Science and its Relation to Mathematics , 1974 .