Personal computers invade the classroom. John Kemeny.
Each fall one speculates how the Freshman class may differ from previous classes. But we already know how the class entering Dart-mouth College this fall will be unique: each member of the class will be strongly encouraged to buy his or her own personal computer. The college has made the terms so attractive (pay over four years, payments eligible for financial aid) that we expect that most students will graduate owning a computer.
Dartmouth College will be in the first group of institutions to make personal computers universally availabe. Personal computers are also appearing in significant numbers at other colleges and in our high schools. In the future they will constitute the most important tool for educational computing.
The question I want to address is: "What use will our colleges and high schools make of personal computers?"
There are some obvious uses. If the institution has the capability of connecting large numbers of personal computers to a mainframe (and dartmouth does have a network that makes this possible) the PCs will be very fancy terminals. Second, PCs can be used for word processing; I am sure that future generations of students will write all term papers on their computers. Third, there is a variety of utility programs. And fourth, there are games. While there uses are attractive, I would like to suggest that if they define the scope of personal computing in higher education, those computers will have a negligible impact on the quality of education.
Whatever else a personal computer may be good for, it is first and foremost a computer--and a very powerful one at that. We now have an opportunity to integrate the use of computers into the curriculum to the point where asking a student to carry out a computer assignment will be as routine as asking him to read a book. Putting first rate hardware into the hands of our students is only half the battle, however--and possibly the easier half. Readers of Creative Computing will surely be aware of the fact that the quality of software usually lags behind the quality of the hardware. And educational software is in a particularly sad state.
The major bottleneck in preparing good educational software is a lack of good language for personal computers. And, typicall, no two personal computers speak the same dialect of a language. Faculty members who have prepared excellent software for their classes are frustrated in trying to "export" them. Textbooks that include computer programs must be published in several different versions, each tailored to a particular personal computer. This is a very expensive and wasteful process. It is also a poor use of the resources of an institution: students are limited to a single brand of personal computer in using a particular software package. These facts have significantly retarded the availability of first rate educational software.
I hope I will be forgiven if I address my remarks to the most widely used language, Basic. After all, I did (with Tom Kurtz) invent the language! Ugly Implementations
The versions of Basic available on personal computers are vintage 1970. The vast improvements made by modern computer science in all languages, which have been reflected in the more advanced versions of Basic, have had no influence on the Basic found on most personal computers. And as software houses wished to take advantage of the special capabilities of microcomputers, they added many new features to the language. Many of these implementations are ugly, and they violate the design philosophy of Basic.
Basic was designed as a fast, easy to learn language that protected the user from the peculiarities of hardware. The existing implementations are typically interpreters rather than compilers, and therefore Basic has acquired the reputation of being a painfully slow language. The implementations do not have good error messages; indeed there is a limitation on the quality of error messages that an interpreter can produce. And the addition of hardware-dependent features to the language has made various versions of Basic incompatible. Even versions of the language written by the same software house for two different personal computers are inconsistent in important ways.
Let me give some examples. From the beginning Basic refused to make a distinction between "integers" and "floating-point numbers." This is a distinction that creates great hardship for the novice programmer and can easily be handled by a good implementation. The reason for this distinction in other languages was that mainframes did not have floating-point hardware. As such hardware was built into machines, any excuse for distinguishing two kinds of numbers disappeared. I was horrified in trying Basic on the IBM PC to find that there were not two kinds of numbers but four!
Equally horrible is the fact that the programmer is forced to learn the peculiarities of a graphic screen in order to draw graphs. We have had an implementation of Basic at Dartmouth for many years that allows the user to express coordinates in a coordinate system of his own choice. It is this implementation that allows a faculty member to prepare a graphics program on one terminal, demonstrate it in the classroom on a different make, and give it to students to run on any of the graphics terminals on campus. It is this kind of design that would allow the same program to run on a wide variety of personal computers.
But there is an even more fundamental problem with the available languages. Educational software differs in a fundamental way fro spreadsheet programs and word processors. The latter are used by typing appropriate commands and data; the user never sees the source code.
In educational software there are two reasons why users must examine source code. First of all, we want our students to learn how to program computers. Second, programs included in a textbook are an essential part of the pedagogic material. I am convinced that the best way to teach an algorithm is to teach it as a computer program. A great deal of material in mathematics as well as in the sciences and social sciences deals with the teaching of algorithms.
If the programs are to be readable, they should be written in an elegant language. And the standards I found acceptable 20 years ago are now hopelessly obsolete. A significant contribution of computer sciences has been the literature on "structured programming." Modern versions of Basic are completely structured and allow the rewriting of horrendously messy and unreadable programs (in old-fashioned Basic) in a style that is both easy to read and much easier to debug. Those of us who have made the transition can testify to the fact that it is a relatively easy and painless process (much easier than learning programming in the first place) and that we would never return to old-style Basic. A Bright Future
Until recently we faced the problem that, while the elementary portions of Basic had been standardized, no such standard was available for advanced, structured Basic. But such a standard was proposed in 1983 and this opens the door for widespread implementation of structured Basic. Tom Kurtz and I, together with three outstanding systems programmers, are in the process of implementing a powerful and elegant version of the language on a variety of microcomputers. And it would surprise me if we were the only one engaged in such an important endeavor.
It is my hope that, as once elementary Basic made it possible for millions to learn how to write computer programs, a modern structured version of Basic will set new high standards for the quality of programs.
And as compatible versions of structured Basic are implemented on a variety of microcomputers, it will become vastly easier to export educational software and to get it published and distributed. I predict that within five years it will be very common for textbooks to include a floppy disk which contains copies of the program used within the book. It will then be possible to turn every dormitory room and every home into an educational computer laboratory.