Programming languages
Programming languages
Abstract—Computer science educators have tried to identify turn it into a program that works correctly and is easy
the best language for their first-year college students to use to understand and modify, we cannot ignore the role that
when learning how to program. Consequently, selecting a our choice of programming languages plays.
computer programming language for use in an introductory
programming course has been a hot-button topic within com- Many programming languages have been used in CS1
puting education communities. This paper builds on the work courses; several of them became popular, yet were eventu-
started by Richard Reid in the early 1990s, which surveys ally replaced by other languages. FORTRAN was a choice
institutions providing post-secondary education. It provides to be used as an introductory language, but the difficulties
educators with up-to-date information about common choices that students had with industry-standard compilers led to
for computer programming languages used in first computer
programming courses. This year’s survey results indicate clearly the development of WATFOR by Shantz et al. [2]. The
that, at the moment, Java and Python are the most commonly advent of structured programming led to the use of PL/I as
used languages. A new element in the survey is that we have an instructional language; Holt considered the use of PL/I
now started collecting data regarding the second programming a terrible way of teaching introductory programming [3].
course (CS2). Our findings show that 88% of all surveyed Despite the development of the PL/C compiler by
schools only use one of four languages (Java, Python, C++,
and C), with the adoption of Python growing steadily at Conway and Wilcox [4], PL/I died out because of the
the expense of the other languages. Java continues to be the difficulties students had in mastering it, and its compilers
most popular choice for CS2 courses, followed by C++ after a were too complex to run on the early generations of
significant gap. However, we are finding potential trends where personal computers.
institutions that start in Java or C++ tend to stay with their Niklaus Wirth derived the Pascal programming lan-
choice, while schools starting with other languages are likely
to transition their students over to a second programming guage from Algol and it was intended for use in teaching
language in CS2. good programming habits. However, it had shortcomings
of its own. Kernighan described Pascal as “meant for
I. Introduction learning”, but unsuitable for serious programming [5],
During the last four decades, many languages have an assessment with which Haberman concurred [6]. In
been used for teaching introductory programming. The 1996, Brilliant and Wiseman described Pascal as dated,
language choice is usually made locally, based on factors an assessment with which many educators agreed [7].
such as faculty preference, industry relevance, technical The question that computer science educators have
aspects of the language, and the availability of useful tried to answer since the early 1990s, is whether there
tools and materials. The process has become increasingly exists an ideal language to use when teaching college
cumbersome as the number of languages has grown [1]. freshmen how to program. Johnson considered C too
CS1 remains a subject of great interest in the same way complex a language for beginning programmers [8]. Many
it has been for over half a century. We usually consider it college programs switched to using C++ in their intro-
to be one of the foundations of an education in computer ductory programming course. The College Board decided
science. Since it is usually where students begin the study to embrace C++ for the Advanced Placement Computer
of the discipline, CS1 courses are critically important. Science exams in 1994 [9]. The Advanced Placement exam
While we concern ourselves with different approaches to subsequently switched to Java in 2003 [10], and so did
teaching beginners on how to develop an algorithm, and many introductory programming courses. Java was widely
considered an easier language to learn than C++ [11], [12]. TABLE I
While the TeachRacket (originally called TeachScheme) Regional distribution of Reid List Schools (2019)
approach has been around for a decade [13], it is only used
Region Schools (n = 402)
in a relatively small number of colleges. More recently,
Python has become popular. Mason and Cooper found New England 39
Mid Atlantic (incl. DC) 83
that it has become widely used in programming courses Southeast 94
in Australia and New Zealand by programs that choose Kentucky and West Virginia 8
not to focus on object-oriented programming in the first Midwest 95
Southwest 40
course [14]. Northwest 23
The choice of a programming language to be used in an Alaska and Hawaii 2
introductory programming course has been a “hot button” Non-US 18
topic within the computer science and information systems
communities. While the AP Computer Science curriculum TABLE II
continues to be based on Java, there are many programs Breakdown by Highest Degree Offered in Computing
that are questioning whether this is the language that they
Highest Degree Awarded in Computing 2011 2019
ought to be using. Some schools never used Java in their
CS1 courses, while others have either made a change or Associate’s 9 9
Bachelor’s 128 117
are contemplating it. Master’s 109 104
This paper builds on the work started by Richard Reid Doctoral 157 166
in the early 1990s, which surveys institutions providing
post-secondary education and attempts to determine what
computer programming languages are in use for their first The last list compiled by Reid included 527 colleges
computer programming course. This year’s survey results and universities, of which 352 were located in the United
indicate clearly that Java and Python are currently the States, and 25 were located in Canada. With Van Scoy
most common languages of choice for teaching CS1. A taking over the list, the number of colleges and universities
new element in the survey is that we have now started outside the US fell to 11, with only 3 from Canada. The
collecting data regarding the second programming course schools appearing on lists compiled in 2011, 2015, and
(CS2). 2019 were based on the 24th Reid List, which Van Scoy
Specifically, we asked the following questions: What is released in 2004.
the most common programming language of choice in The current Reid List (compiled in 2019) includes 402
post-secondary CS1 courses? What is the most common colleges and universities. The geographic distribution of
programming language of choice in post-secondary CS2 the Reid List schools over the past two decades is shown
courses? And, finally: Is there a relationship between the in Table I, with 384 of the colleges representing the District
languages used for CS1 courses and CS2 courses taught of Columbia and 49 states.
in post-secondary programs of study? If so, what is the Wyoming is the only state without representation de-
relationship? spite several attempts to obtain data from schools in the
In this paper, we begin to answer these questions. state.
Section II gives a brief overview of the history of the Reid While there is a reasonable geographic balance, the mid-
List and its methodologies. SectionIII further delves into Atlantic and southwestern states are overrepresented by
related literature. Section IV summarizes our research and the relatively large number of schools in New York, Cali-
previous work in the area. Section V discusses our current fornia and Pennsylvania that are on the List. Additionally,
active research and findings, and provides answers to our the New England states as a whole are significantly over-
research questions. Section VI addresses our conclusions represented in comparison to its college-age population,
and future work. partially due to the presence of several Ivy League colleges
and MIT.
II. The Reid List Table II shows the breakdown by the highest degree
Richard Reid was a Professor of Computer Science program offered in computing for the surveys in 2011 and
at Michigan State University and he began tracking the 2019. There is an almost even distribution between under-
languages used to teach introductory programming to CS graduate, master’s- and doctorate-granting departments
majors in the early 1990s. The Reid List was updated in 2001; however, only nine of the programs were in com-
when 10% or more of the included colleges changed the munity colleges, which are significantly underrepresented
programming language of instruction [15]. This resulted in in the sample. There was one vocational/technical school
a new list being released approximately twice a year until on the list. It was removed because the school no longer
Reid retired in 1999. Frances Van Scoy, an Associate Pro- offered a computing program. Five other schools are also
fessor of Computer Science at West Virginia University, no longer included for the same reason. Three colleges
updated the list from 2001 until 2006 [16]]. have been removed after they closed.
III. Literature Review of publications related to CS1 education discussed using
Java, and 39.1% discussed the use of Python. For CS2
The earliest peer-reviewed and published survey of education, they found that 34.8% of publications were
programming language choice was by Levy in 1996 [17], Java-centric.
who noted that there were 151 schools on the 11th Reid
List from 1994 and that of the remaining schools, C and IV. Methodology
Ada were the most common language. Updates to the Reid List were compiled in 2011, 2015,
Levy also noted the lack of consensus on what language, and 2019, with a few of the programs listed being updated
if any, was the best language for teaching beginners how in July 2020. The colleges and universities included in
to program. the 2011 survey for the twenty-sixth Reid List were taken
Several studies were conducted in Australia and New from the twenty-fourth Reid List, published online in 2004;
Zealand in 2001 [18], 2003 [19], 2010 [20] , 2013 [14], many of these did not appear on the twenty-fifth list from
and 2016 [21]. They ranked the popularity of program- 2006, which only listed 153 schools.
ming languages used in introductory programming courses The methodology used to collect the data used to
weighted by student enrollment. The studies show that compile the list has not changed significantly, despite the
in 2001, the most popular languages were Java, Visual work having been performed by different authors.
Basic, and C++; over the next fifteen years, this changed The authors recognize that there are challenges in
significantly and in 2016 the most popular programming using the existing Reid list as a basis for data collec-
languages were Python, Java, and C. tion. Specifically, the list is US-centric and it under-
Similarly, in 2001, the most common criteria for choos- represents community colleges. Furthermore, the scope of
ing a language for CS1 was its industry relevance and the study specifically excludes programming courses that
marketability, which was twice as common as pedagogic are taught as part of an interdisciplinary curriculum. As
benefits (39 universities to 19). In 2016, pedagogic benefits such, the results found in this study are self-contained.
were slightly more common than industry relevance (81% However, given the historic availability of the Reid list
compared to 78%). data, understanding the evolution of language adoption
There have been three other surveys looking at the can help researchers understand the meta-issues that
popularity of programming languages at European univer- impact language adoption and facilitate consideration in a
sities. Murphy et al. surveyed universities in the United longitudinal study. By studying a large number of schools
Kingdom in 2016 [22] and found that the most commonly over a long period of time, we can then further identify
used language was Java, followed by the C family of patterns that may be helpful for future trends.
languages (C, C++ and C#) with Python a distance third. Figure 1 illustrates the process followed to locate data
The most common reason for the choice was industry for each school. The methodology was designed to obtain
relevance effectively tied with object-orientation and avail- objective data points in a repeatable way while minimizing
ability/cost, and only after these was pedagogic benefits the inconvenience to individual faculty members.
a consideration. Becker [23] found similar results, where Using previous lists as a starting point, step 1 (Identify
49% of courses used Java, 28% used Python and 18% Program) identified what program (if any) would be
used JavaScript. Industry relevance, availability/cost and evaluated for the current revision.
pedagogic benefit were the most common reasons in that The school’s public web sites were reviewed to determine
order. Avouris [24] compiled data from 121 courses at 44 whether the school offered both Bachelor of Arts (BA) and
higher education institutions in Greece, and found that Bachelor of Science (BS) programs. If so, the requirements
73% of these courses used C and 9% used Python. for the BS were used. If the highest degree offered was an
Davies et al. surveyed 371 computer science programs Associate’s degree, as is common at community colleges,
in 2010 to determine the programming languages used the requirements for the Associate’s degree in Computer
in CS0, CS1 and CS2 courses [25]. They found that 179 Science were examined. Schools offered both Computer
programs used Java in their CS1 course, 107 used C++, Science and Information systems programs, Computer Sci-
48 used Python and 27 used C. In their CS2 courses, 207 ence was preferred over Information Systems. Computer
used Java, 134 used C++, 18 used C and 12 used Python. Engineering, Information Technology, and Data Science
While 75% used the object-oriented paradigm in CS1, 92% or similarly named programs were not included in this
used objects in their CS2 courses. Nevins surveyed the review. If no match was found, the school was removed
computer science programs in the California Community from the list, and no data was collected.
college system and found that 82% used a single language, The second stage in data collection was to review
with 48% using C++ and 31% using Java [26]. degree requirements for the selected programs. As before,
In a 2019 publication, Silva et. al [27] investigated the websites containing programs of study were analyzed, and
use of programming languages in CS1 and CS2 education the requirements for a degree program in Computing were
by comparing academic publications mentioning specific examined to determine the first required programming
programming languages. Their findings were that 41.3% course. If program requirements could be found with
Fig. 1. Reid List Data Collection Methodology