Most courses of study in computer science begin with students learning to think algorithmically, and to express the solutions to problems using a programming language. The choice of which programming language is usually considered secondary to the choice of concepts, but the reality is that the vehicle we choose for teaching concepts shapes the way that students understand those concepts, and enables or inhibits the learning of certain concepts. Most departments use one of a small number of mainstream languages that are well-established in industry and are backed by teaching and learning resources. A minority of departments choose to work with non-mainstream languages, finding that the advantages of those languages outweigh the disadvantages. What issues should we consider when choosing a programming language for our introductory courses? A. Use in the “real world”. A department may be pressured to use a language that is prevalent in local industry, local feeder schools, or standardized tests. For example, local companies might like students to be prepared for internships by being taught in whatever language they use for production. Unfortunately, “real world” languages often come with complex features, that, while useful on large industrial projects, make them unsuitable for students, particularly beginning students, and have a tendency to become
[1]
Andrew P. Black,et al.
Seeking grace: a new object-oriented language for novices
,
2013,
SIGCSE '13.
[2]
Ben Fry,et al.
Getting Started with Processing
,
2010
.
[3]
Martin Odersky,et al.
Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition
,
2010
.
[4]
Matthias Felleisen,et al.
DrScheme: a programming environment for Scheme
,
2002,
J. Funct. Program..
[5]
Douglas S. Blank,et al.
Calico: a multi-programming-language, multi-context framework designed for computer science education
,
2012,
SIGCSE '12.
[6]
Bhim P. Upadhyaya,et al.
Programming with Scala
,
2017,
Undergraduate Topics in Computer Science.