Permission to reprint this paper from the September 1995 SIGCSE Bulletin, Volume 27, Number 3, page 21-26 has been granted by the author and ACM. This paper was HTML-ized by Jack Beidler with the help of Mary Alice Lynott. The graphs were created using CorelDraw and are the HTML-er's best estimates of the figures in the original article. Report all errors in the article to beidler@uofs.edu
The Reid Report [Reid 94] is a list of more than 400 schools throughout the world and the language they are using in their first computing science course (commonly referred to as ACM’s CS 1). It is a voluntary report updated regularly. Its list of schools is not exhaustive or complete. Based on this report, 139 colleges and universities within the United States who are not using Pascal were surveyed. The intent of the survey was threefold:
The result of this survey, conducted in February 1995 are summarized below.
When computer programming was in its infancy, colleges taught programming skills using FORTRAN, BASIC, and COBOL. Why? These were the only high level languages available. During the late 60s, schools experimented with various languages like Algol and PL/1. With the introduction of Pascal in the 1970s, most schools adopted Pascal for their CS 1 course. Dr. Ted Lewis of Oregon State University believes this was due to two pragmatic factors: the invention of the personal computer, and the availability of Pascal compilers, [Noon 94]. This language remained popular for more than a decade.
During the 80s, many schools realized that Pascal was not a sufficient language to use in ACM’s CS 1 course. This was for a variety of reasons. Reusability of previous written code became an issue. Object-oriented programming was introduced. Pascal does not easily and consistently support these concepts. One of the most important issues, as far as the student was concerned, was employability. Pascal is not a real world language.
Schools wanted languages that provided students with an opportunity to learn to use a tool that will help them address problem solving issues, prepare them for further computer science study, and offer them a taste of the computer science discipline, [Noon 94]. As the results of this survey show, many schools have turned to more practical languages, like C, Scheme, Ada, and C++, in their introductory courses.
All of the Computer Science Department Chairs at the 139 schools in the United States not using Pascal (as listed in the Reid Report) were sent surveys to distribute to their faculty who teach the CS 1 course. Fifty-seven responses from forty-seven schools were returned. According to these responses, there are a total of 117 CS 1 instructors from these schools responded to the survey. Of the schools that responded, all but one were four-year schools (there was one two-year school). Most of the instructors (70 percent) had ten or more years experience teaching computer science.
The results being reported from the survey are based on the responses from the fifty-seven instructors. Languages which had three or fewer responses are grouped together in the category called Other. The chart above shows the language currently being used by the schools responding to the survey.
Though the survey did not ask if the school had a prerequisite for their CS 1 course, some instructors justified their choice of the language they use in CS 1 by indicating that they have a programming prerequisite for this course. The data from the survey is intended to be a basis for future research and discussion.
In an attempt to compare the languages currently being used, instructors were asked to compare their current language to Pascal based on fourteen topics typically found in CS 1 textbooks. As many of the instructors who use Scheme pointed out, the choice of topics was based on procedural languages aaand were difficult to apply to Scheme. Most Scheme instructors did respond to these questions, though, so their results are included. The charts below demonstrate how the instructors who currently teach these languages feel their language compares to Pascal. Instructors responses were based on a five-level scale: their language is significantly harder (1), moderately harder (2), the same (3), moderately easier (4), and significantly easier (5) than Pascal when it comes to teaching these programming concepts. The taller the bar, the more favorable the language is as compared to Pascal.
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
The range of languages thought to be best included not only the four languages discussed above, but also BASIC, FORTRAN, Miranda, Modula, Pascal, and Prolog. What is interesting is not which languages the instructors feel are best, but how many instructors think that their current language is best. Though Pascal is still taught by most of the colleges in the United States (Reid 95), these colleges were not surveyed. Hence Pascal is not included in the chart at the left.
There was a wide variety of opinion about which is the best language to use in CS1. Sixteen percent of the instructors felt that the language vehicle in not important. It is simply a tool to be used to teach problem solving. These instructors felt that the survey was flawed because it put more emphasis on the method used for delivery than on the message being delivered. As one Scheme instructor said, "Most students think of CS1 as a course to learn language syntax. This is a pity and it is our fault. Look at your questions: 13 questions about language features and only 1 question on software engineering. Let’s get the focus off language features and onto algorithm design and software engineering issues!".
According to the Computer Science Product Companion., "Each language possesses a unique strength." This article discusses the issues involved when choosing a language. Dr. Lewis stated, "when choosing a language, we ask ourselves a number of questions: Would we use a procedural or object-oriented language, and would the language be imperative or functional? The committee chose to focus on adopting the language that would do the most to help students get jobs. (Noon 94) This school chose to teach C++. Trinity University in choosing to use Scheme, wanted "a language that allows us to teach the art of programming as well as construct modes of the computer science concepts we which to get across and be usable in a wide variety of our courses, "(Konstam, Howland 94) Another professor, Charles B. Engle, Jr. of the Florida Institute of Technology, reported on why schools choose Ada. Some educators saw the merit of the enforced (encouraged?) software-development discipline embodied in Ada. The main pedagogic principles were supported quite nicely. The language was designed specifically to support good development (engineering?) principles, and this proved to be very valuable. (Engle 95)
Those instructors who responded to the survey and prefer C or C++, support the idea of choosing a language based on what is used in industry as well as in advanced computing courses. Scheme instructors felt that it is easier to teach students to write interesting programs sooner, while those instructors who prefer Ada felt that teaching good software engineering concepts is more important.
During the 70s and 80s when Pascal was used by most colleges, universities and many high school, transfer credit from two to four-year colleges was not a major problem. Now, with many different languages being taught, AP Exam credit as well as transfer credit are becoming substantive articulation issues. The result of this survey imply that we need to follow up on how each language currently being used in CS1 affects our student’s preparation for upper division courses and for their careers.
The results of this survey show that there is not consensus among computer science instructors about which language is best for CS1. One instructor who responded to the survey summarized what many instructors said: "It doesn’t matter much in CS1 (which language), since students are still mastering the basics found in most languages. In CS1, the emphasis should be on problem solving, algorithm development, and logical thinking; not on the intricacies or advanced features of a particular language."