Fortran and the first course in computer science

  • Authors:
  • Anthony Ralston

  • Affiliations:
  • -

  • Venue:
  • ACM SIGCSE Bulletin
  • Year:
  • 1971

Quantified Score

Hi-index 0.03

Visualization

Abstract

The purpose of this paper is to assess realistically andpractically the merits and demerits of Fortran as the language tobe used in a first course in computer science. To do this computerscience education is first considered as a process in whichsuccessive courses should aim at increasingly greater depth ofunderstanding as in, for example, mathematics education. Then theaims of first courses in computer science are considered. It isconcluded that Fortran is a quite adequate vehicle for the studentto use in writing programs. It is further concluded that, despiteits manifest imperfections, Fortran is also adequate for thepurpose of teaching programming language concepts and programmingtechniques. Thus, it is finally concluded that, since Fortran willcontinue to be with us, it can be used, warts and all, and that thebest should be made of it.Even if a weed, Fortran has surely not prevented the blooming ofmore than one hundred other flowers (i.e. computer languages). But,in terms of ubiquity, these other flowers almost all are punygrowths indeed. Except for Cobol, Fortran is clearly the most usedhigher level language today. And it stands preeminent as thelanguage most often taught in college and university first coursesin computer science and "for 'scientific' problems...it willprobably remain (the most important programming language) for someperiod of time" (3). Yet we have such statements as "Fortran isdead" (6) and "It is remarkable that it would be difficult to finda language that would meet these important requirements (naturaland clear expression of program structure and data, exhibition ofbasic features and structuring principles) to a lesser degreethan...Fortran" (8). My purpose here is neither to bury Fortran norto praise it but to try to assess realistically and practically itsusefulness in a first course in computer science.I was originally moved to write this article by the recentarticle of Wirth (8) which I consider to be a beautiful expositionof an ideal in program construction and instruction. But, while Ido not disagree, except perhaps in emphasis, with the quotationabove from this article, I think this quotation, if takenliterally, implies something quite wrong about the value of Fortranin a first course in computer science by implying somethingpedagogically incorrect about teaching programming. I shall try toelucidate this below.Yes, Fortran is dead in the sense that Rosin (6)means, namelythat "intellectually it is dead." But in this sense so is calculusdead in all of the wide variety of courses taught to collegefreshmen and high school seniors. So what? The purpose of firstcourses in calculus is not and cannot be to teach students materialon the intellectual frontier of mathematics. Can it be said ofcalculus, any more than of Fortran, that its current use in anintroductory course "tends to propagate its intellectualmoribundity" (6)? The trouble with such negative remarks about theuse of Fortran in introductory programming courses is not that theyare too critical of Fortran but rather that they display amisunderstanding of the teaching of almost any subject with someintellectual depth by postulating a pedagogic ideal which can beattained with few, if any students.It is natural when teaching any introductory course to wish tomaximize the intellectual content of the course by presenting, inaddition to material on purely mechanical skills, subject matter ofreal intellectual content. But it is folly to expect the beginningstudent to grasp significant concepts in depth. (Or, if this ispossible, then the depth is not very great; if this is the case incomputer science, then perhaps we should rethink our pretensionsthat it is a discipline.) For example, it is not expected that thegraduate of a first year course in calculus will understand what aderivative is in depth although he may be very proficient inmechanical differentiation. I recall myself only realizing, aftertaking courses in advanced calculus and real analysis, how little Ihad really understood the concept of derivative when I had firststudied it in an introductory course.It is in a similar context that we must look at the teaching ofprogramming. The objectives of a first course in computer sciencemust be to teach the student some conceptual aspects ofprogramming, programming languages and computer science in additionto teaching him how to use a particular language. But unless anduntil we are willing to admit that there are programming languageconcepts which, while they may be introduced ina first course, cannot be expected to beunderstood in depth by the vast majority ofstudents until later, more advanced courses, there is danger thatattempts will be made to make the first course something it cannotand should not be. And we shall run the danger of falling into thesame trap as other disciplines of orienting our teaching so much toour own majors that we shall ill serve the majority who arenon-majors, with the inevitable result that an increasing number ofnon-computer science departments will decide to teach (badly)programming to their own majors.Of course, the current problem with most introductory courses incomputer science is not that they attempt too much but rather toolittle. But an increasing number of first courses, particularly atleading universities, are attempting to teach the first course at areasonable intellectual level.It is, therefore, just at this time during the transition fromthe just-teach-a-language course to a real computer science coursethat it is important to give some real thought to what that firstcourse should be and the place of a language like Fortran in it. Inthe remainder of this paper I shall address this question.