PILOT, SNOBOL, AND LOGO AS COMPUTING TOOLS FOR FOREIGN-LANGUAGE INSTRUCTION Ruth H. Sanders ABSTRACT

Three programming languages widely available for microcomputers deserve attention from the foreign- language academic community because of their ease of use and their particular facility in manipulating language. PILOT, SNOBOL, and Logo are described and evaluated as tools for foreign-language CAI, and a small sample program in each language is given. A bibliography is included.

KEYWORDS: PILOT, SNOBOL, Logo, description, evaluation, pattern-matching, programming languages, courseware development.

Most programming languages would fail any reasonable test for user friendliness. BASIC, up to now the standard microcomputing language for computer non-professionals, can be daunting to those untrained in algorithmic thinking and manipulation of formal symbols. Higher-level languages like Pascal, C or Ada seem even less suited to computing novices. There are, however, programming languages that are relatively easy for beginners to learn and to use with some proficiency. Three of these, PILOT, SNOBOL, and Logo, are especially well suited to language manipulation. The foreign language professional who wants to write computer tutorials but does not want to invest a great deal of time learning to program should investigate these. In fact, even those who program in other languages may find that these three offer some advantages for certain kinds of programming tasks. This article describes these three languages but does not review any particular implementation of any of them. All are available for a wide range of microcomputers, at varying costs; implementations on various machines or operating systems are not identical, and some implementations offer advantages over others. A bibliography (at end) lists sources for further information about the three languages. Only briefly addressed in the evaluations is the question of foreign- character availability. Usually additional software (and possibly additional hardware) is necessary for the use of non- English characters on the screen from within a .1

PILOT PILOT (acronym for Programmed Inquiry, Learning Or Teaching) is a special-purpose language for educational programming, one of several and the one currently most easily and inexpensively available for microcomputers. PILOT is a true programming language rather than an authoring system or template and thus offers the possibility of creative educational programming even to the computer novice. Authoring languages like PILOT—computing languages that are especially designed for tutorial programming—address the need of educational professionals who want to program but are not expert or experienced at programming. Since, until recently, most educational computing was done on mainframe computers, most authoring languages were not available for microcomputers. Now, however, PILOT is available for virtually all microcomputers with CP/M operating systems, and for a wide variety of others as well, including the Apple and the IBM-PC. PILOT was created by Dr. John A. Starkweather at the University of California in the 1960s. Unlike the other well-known authoring languages and authoring systems, PILOT is in the public domain (i.e., the language itself is not copyrighted, though particular implementations of it my be). Many implementations are available at prices ranging from free to several hundred dollars. Usually at least 32K of memory is required. While some versions (for example, Common PILOT and its offspring Apple SuperPILOT) include graphics and sound, other versions do not. (The user should be warned that additional hardware may be necessary in order for graphics software to function.) As with so much computer software, price is no indication of quality. PILOT is not very good at numerical computing, organizing data, or solving general problems. However, it is very convenient for programming CAI tutorials, from the standard drill-and-practice exercises to games. As with any

CALICO Journal, Volume 3 Number 2 41 computer language, within the limits inherent in the design of the language, the imagination of the programmer plays the greatest role in determining the application.

PILOT EVALUATION

+FOCUS PILOT's problem domain is interactive, conversational computer-assisted instruction (CAI). Since CAI programming is usually done by computer novices, it is useful to have a programming language without the usual difficulties to non-experts. PILOT has been effective in this application. PILOT's focus is narrow: it is a good applications tool for many varieties of CAI, but it is not convenient for solving problems that exist independent of computer-human interaction.

+DEFINITION PILOT's syntax is simple. This simplicity also limits its flexibility. This problem can be overcome to some extent by imaginative programming, which however may not be available to its targeted users, novice programmers. PILOT's code consists of a one- or two-letter command followed optionally by a condition, then some text. Here are some typical commands in PILOT: T means Type this on the screen; A means Accept an answer; M means Match answer to this; C means Compute—assign a numerical value to a variable; Y and N mean Yes and No and are used as conditioners for commands, telling the program what to do if the learner's answer does or does not match the pattern of the most recent M statement. Standard dialect: The core commands, that is, the eight one-letter commands in the language, are shared by most implementations. Two-letter commands and numeric functions sometimes differ among dialects. The closest thing to a standard dialect is Common PILOT. Tutorial programs can be written using only the core instructions, and these should be relatively easy to transfer to machines other than those they were written for. Experienced PILOT programmers, however, will nearly always want to use more than the one-letter commands to make their tutorials more flexible and sophisticated. Programs written in PILOT are in principle widely portable. As with other programming languages including BASIC, portable should be taken with a grain of salt. What portable usually implies is that, although programs will have to be rewritten when being transferred to a different system, they may not have to be entirely rewritten, and the new code will most likely be easily understood by any programmer experienced in that language. As with other language documentation, manufacturer or distributor documentation varies in quality, sometimes making the language seem harder than it is in practice. For example, I find Starkweather's documentation of Nevada PILOT relatively clear even for novices, but I find Apple SuperPILOT's instruction booklet overwritten and oddly baffling. Unfortunately for the novice user, there do not appear to be any commercially available how-to booklets to supplement the official documentation.

+IMPLEMENTATION PILOT is generally implemented as an , rather than a . When a language is interpreted rather than compiled, an extra step between writing a program and running it is omitted. To the programmer, the program appears to run immediately, rather than having to be compiled—an extra step at the computer terminal. The ease of use of an interpreted language offers considerable attraction, especially to a novice computer user. However, this also means that a program written in the interpreted language will probably be subject to license agreement; that is, it can't be given away or sold without the agreement of the copyright owner of the interpretation. With a compiled language, programs written in the language are usually (not always) separate from the language, and can thus be given away or sold by the program author without permission from the language vendor. BASIC, like PILOT, is interpreted, but because most microcomputers come equipped with BASIC, the potential audience for the program already has permission to use the language. On the other hand, most vendors of PILOT understand that its main use is for CAI programs in schools and colleges, and will often give professors or teachers permission to let unlimited numbers of students use a PILOT program so long as only one person at a time can use the language disk itself. There are at least two versions of PILOT in the public domain. They are free of charge to anyone who gets the magazines where they appeared and types the program into the appropriate computer (one is for any Intel 8080 processor, and one specifically for TRS-80).2 PILOT is widely available in many implementations, often more than one for each machine. Some versions are quite complete; others limited. A few implementations, for instance, do not allow any numeric functions, which seriously limits tutorials' ability to provide help to students on the basis of how many errors they make.

+INTERFACE Versions differ in the amount of access they offer to the underlying hardware or software of the host machine. To the writer of foreign-language CAI, this may mean difficulty in taking advantage of foreign-language character sets even if they are available on the machine itself. Apple's versions of PILOT, for example, provide a facility for creating characters that do not appear on its American keyboard; the PILOT versions available for CP/M typically do not. Depending upon the target language of the lesson and the tolerance of student and teacher, lack of foreign characters may or may not be experienced as a serious disadvantage.

CALICO Journal, Volume 3 Number 2 42 +USAGE Writing a sophisticated CAI lesson with many and a variety of machine responses is probably no easier in PILOT than in BASIC, for the experienced programmer of either. Learning PILOT, however, if far easier at the early stages; and simple material is considerably easier to program in PILOT. Part of the reason is the simple syntax and dedicated lexicon of PILOT: its eight core commands provide in one letter the commonest functions needed by CAI programmers. The one-letter Match command in PILOT, for example, is a powerful one: combined with appropriate conditioners, it can match an input exactly to an anticipated response, or it can look for combinations of letters embedded in any response. This means the programmer need not anticipate word-for-word the responses of the student, but can look for the correct (or incorrect) elements of the answer. Furthermore, sets of variables can be assigned to the student's answer, or parts of the student's answer; other parts of the program may then be used or skipped over depending on these variables. This flexible Match statement is at the heart of PILOT. PILOT does not in general support . This means that novice programmers can get started right away, but it also means that they will be constantly tempted to write chaotic programs that will give them trouble during debugging and revision. Unless the programmer understands and uses structured programming practices in PILOT, very complete documentation is virtually a necessity, because even the program's creator may not be able to tell a few days later what a given section of code was intended to do. An experienced programmer who follows good programming practices in PILOT, however, will find that the simple nature of the commands makes a program almost self-documenting. Also, the nature of a typical PILOT program—small amounts of code followed by relatively large amounts of text—makes debugging usually straightforward.

+ENVIRONMENT Several versions of PILOT are equipped with their own full-screen editor; the editors I have seen seem easy to use. I would not recommend purchase of a PILOT program without its own full-screen editor. You could use any good word-processing program with a program editor to write your program; but having to interrupt the inevitable testing of parts of the program to go back and forth out of the language into another editor would be tedious and frustrating, especially for a novice who has not built up a tolerance for the rigidity of the machine.

+APPLICATIONS PILOT lends itself will to tutorials of any kind—tutorials for learning to use the computer, for learning PILOT itself, or for foreign-language lessons. It can also be used to create a template program—i.e., a question-answer program with which users can create programs by simply filling in blanks. Such a template could be written by a PILOT programmer who knows what kind of programs the instructors want to use, thus relieving them of the need to program. Of course, such a template would have the disadvantage of all templates—all the programs would have more or less the same format. PILOT is well suited to multiple-choice programs where there is only one right answer, or where the right answer may be identified by one or more key words. In addition, exact matches of student response to correct answers are possible. PILOT can also be used for various kinds of conversational or adventure games which may or may not have an educational content.3

+A SAMPLE PROGRAM IN PILOT (A Reading Comprehension Program) Here is a sample of a CAI session between a student and the computer. Computer text is in all capital letters; student response in upper and lower case print:

Now here is the program for this portion of the lesson (the program code is on the left; explanations of what each line does are on the right): WHAT PERCENT OF THE GRAIN PRODUCED IN A: (Accept an answer from student) ANCIENT SUMERIA WAS M:40,forty (Match student's answer against these two USED TO MAKE BEER? answers) TY:Right (Type this if answer matches) Forty percent. JY:*ALE (Jump to the place name ALE if the answer matches) RIGHT! TN: No, read this to find out. (Type this if no match above) UN:*GRAIN (Jump to GRAIN if not match, and return to this place in the program after executing the instructions in GRAIN) The real power of this simple tutorial program is in PILOT's Match statement. As an answer to the question, the student may write 40%, forty percent, about forty, I think it was forty, or anything with either 40 or forty in it. This searching through the user's input for one particular string, or combination of characters, can be done in other languages

CALICO Journal, Volume 3 Number 2 43 but is often a long procedure. Since the use of key words to define correct answers is so common in education programs, PILOT's powerful Match statement is particularly useful in that application. The Match statement may also be used to filter out everything to the left of a match, or everything to the right of the matched word, for further matching. In addition, the elements of a correct answer may be specified so that PILOT will look for them in a particular order. The second strategy used in this sample program, and very useful in tutorial programming, is the branching notion. This means that the program will not act the same to every single usr, but branches to different sections depending on the user's responses. For instance, a wrong answer might bring a paragraph of review, while a right answer would branch to the next section. Second or third chances to respond might be given. Branching offers one way to exploit the interactive potential of the computer. Because it can manipulate words easily and because it is easy to learn and use on microcomputers, PILOT has the potential to become a widely used language for education computing.

SNOBOL SNOBOL (acronym for StriNg Oriented symBOlic Language) was created in 1962 at Bell Laboratories by D. J. Farber, R. E. Griswold, and I. P. Polonsky, with the assistance of M. D. McIlroy. Since that time, it has been revised several times. Even better at pattern-matching than PILOT, SNOBOL is probably the reigning champion of pattern-matching languages. SNOBOL was developed specifically to manipulate text (strings), rather than numbers. It is very good at analyzing letters and words and comparing them to other letters and words. So striking is this language facility of SNOBOL, in fact, that it has been called a right-brain computer language, its pattern-matching abilities mimicking those in the inductive, parallel-functioning right brain.4 SNOBOL has long been one of the common languages for mainframe computers, and is probably still available at many university computing centers.

SNOBOL EVALUATION

+FOCUS SNOBOL's problem domain is string processing, that is, manipulation of letters, words and sentences. It can break down input text into words, storing the words separately, and matching them later against other input. For this reason it has been widely used in computerized library systems for indexing and retrieving documents or citations according to various identifiers and keywords. While its particular strength is non-numerical programming, SNOBOL can also do numerical calculations and is thus a general-purpose, rather than a special-purpose language.

+DEFINITION The syntax is simple. Current versions for microcomputers are based on SNOBOL4, the latest revision of the original SNOBOL, and are very much like, but not identical to, each other and mainframe implementations. Minimal rewriting will be necessary to move programs from one system to another. The syntax offers more freedom to the programmer than PILOT in some ways. Names of variables, for example, can be any length. Users will find this convenient as they can give easily recognizable names to the variables they set as counters and switches, rather than having to use one-letter variables as in PILOT; subroutines can also be freely named rather than being limited to eight characters, as they are in at least some versions of PILOT. SNOBOL can decompose student response into various elements, setting variables to equal these parts, and matching them against other variables. The result can be highly individualized pattern-matching, at times approaching the true syntactic parsing that characterizes artificial-intelligence programs in natural-language understanding. Documentation is at a generally more technical level than that of PILOT, as SNOBOL was not specifically designed for beginners. The language itself is easy to use, however; and if beginners can find an experienced user to help them at the beginning stages, they will probably find the documentation sufficiently helpful to continue on their own. In addition to the vendor's documentation that comes with the language, there are several commercially available books on SNOBOL. However, these may not satisfy a novice's need for a really clear description of the language.

+IMPLEMENTATION SNOBOL, like PILOT, is generally implemented as an interpreter. This has the same advantages, and the same disadvantages, as in the case of PILOT. SNOBOL is available for both microcomputers and mainframes. One of the advantages of SNOBOL for CAI is that many colleges and universities may still have it on their mainframe, so that CAI programs written in SNOBOL can be made available via terminals to large numbers of students. Microcomputer implementations are currently available at modest cost for all MS-DOS and CP/M-86 machines (this includes, among others, IBM-PC and its compatibles; TI- Professional and Tandy 2000). Usually, 128K of memory is required.

+USAGE SNOBOL's straightforward-looking code and its easy-to-learn success-or-fail gotos (i.e. jumps to another place in the program) make it quite easy for beginners. Like PILOT, however, SNOBOL does not support structured

CALICO Journal, Volume 3 Number 2 44 programming, which means the self-tutored programmer may quickly become mired in a morass of gotos not easily deciphered or debugged. SNOBOL is a pattern-matching and an associative language (i.e., it has an indirect reference operator which associates strings with each other flexibly throughout the program). In addition though, it is also an algebraic language and it can be used for numeric programming as well as for CAI. This means that the user who is attracted to SNOBOL because of its simplicity and its suitability for language CAI will be able to use SNOBOL for other applications as well. +ENVIRONMENT Current implementations of SNOBOL do not come with a full-screen editor. It is not at all difficult to use a separate editor to type in the programs, but moving back and forth between the editor and the language to test programs, possibly involving several desk changes, is tiresome. Lack of an editor is a definite drawback to using this language. +APPLICATIONS SNOBOL is a general-purpose language and can be used to solve most problems which are considered solvable by computer. However, it is particularly well suited to manipulating language. It has been used in many text manipulation programs in linguistics, social science, and library science. Problems of foreign-language CAI are easily and directly solvable in SNOBOL. +A SAMPLE PROGRAM IN SNOBOL The Optimist HELLO! HOW WAS YOUR In this conversation program, the machine (all-capital letters) plays the eternal WEEKEND? optimist to the user's pessimist. I never have good weekends. ACTUALLY, I ALWAYS HAVE Here is the SNOBOL code for this portion of the program, which explanations GOOD WEEKENDS. (programmer's comments) under each line of code, preceded by an asterisk: There were no good parties. ACTUALLY, THERE WERE A LETTER—'ABCDERGHIJKLMNOPQRSTUVWXYZ' LOT OF PARTIES. *defining letter PNEVER = BREAK(LETTER) .LEFT 'NEVER' NOTANY(LETTER) .RIGHT *defines a pattern for never with everything to the left of never as a variable called left, everything to the right of never called right PNO = BREAK(LETTER) .LEFT 'NO' NOTANY(LETTER) .RIGHT *defines a pattern for no, as above with never OUTPUT = 'HOW WAS YOUR WEEKEND?' *prints How was your weekend? on the screen START TEXT = INPUT *defines the student's input as text LNEVER TEXT PNEVER = LEFT 'ALWAYS' RIGHT :F(LNO)S(LNEVER) *replaces each occurrence of never in text by always LNO TEXT PNO = RIGHT 'A LOT OF' RIGHT :F(PRINT)S(LNO) *replaces each occurrence of no in text by a lot of PRINT OUTPUT = 'ACTUALLY,' TEXT :S(START) *answer by printing Actually, then the text with its replacements as above. Go back to the program start and accept another input. This is only a program fragment, and so it doesn't actually end! Of course, since this program is based on string manipulation with no semantic component to model understanding, it is easily fooled. For example, the input Never say die! would elicit the machine response Actually, always say die! Nevertheless, the program could, if imaginatively written, provide some fun and some foreign-language practice. Conversations like these, modeled on the tricks of Joseph Weizenbaum's early artificial-intelligence psychiatrist, ELIZA, can be constructed on various themes, and can be expanded with expected idioms and appropriate output.5 LOGO In a somewhat surprising twist, Logo (from the Greek for word), a programming language designed for children, is unusually powerful. This is only superficially a contradiction, however, for a language that is to be effective as a tool for young children has to combine simplicity of use with great flexibility. Logo was created in the 1970s by a research group at MIT, for the purpose of teaching children to use computers. It was based on the programming language LISP and is in fact virtually a dialect of it. Logo makes the programming concepts of LISP available to children as a tool for discovering mathematical principles. Because of its attention-getting success in teaching geometry through graphics patterns, Logo is probably best known as the language of turtle graphics. There are several microcomputer implementations of Logo that offer little else besides this graphics capability, and they can indeed by a delightful tool for children to play with as they learn geometric principles. Logo, however, can do much more than turtle graphics. The complete versions of Logo that offer language capability can produce impressive conversational programs. Logo is also well suited for applications in linguistics, for example, formal grammars. languages like Logo and LISP support the development of computer systems that can perform tasks that, if done by a human, would be considered intelligent. The range of such tasks is of course considerable. Probably the most startling to most observers are the programs that can converse via the screen with humans in natural language, play chess or give advice. The two programming concepts that give Logo much of its power in teaching as well as non-teaching applications are extensibility and recursion. CALICO Journal, Volume 3 Number 2 45 Extensibility means that new commands can be defined at will by the programmer, and effectively added to the language. A set of code that defines a certain procedure can be written, tested and then saved. Afterwards it can itself be used in any program as if it were an original part of the language. As CAI programmers know, being able to specify commonly used routines and call them up by name rather than reproducing a string of code whenever they are needed would be a great time saver in educational programming. Children use the extensibility of Logo as soon as they start playing with turtle graphics. Using the turtle as a kind of pen point to draw on the screen, they direct it to take a certain number of steps in one direction, to turn at a certain angle, and take steps in another direction. If they find that one set of directions produces a pleasing pattern, they can save it under a name by heading it with the instruction To and its name. Simply typing the name will cause the same pattern to appear again on the screen. The principles of geometry are learned as users—adults or children—discover that telling the turtle to go forward 50 steps, for instance, then turn right 90 degrees, forward 50 again, then right 90 again, then forward 50, then right 90, then forward 50 produces a square. The Logo program might look like this: Increasing the number of steps without changing the angle of turn increases the size of To Square the square; but changing the angle of turn produces a different figure altogether. Forward 50 Superimposing simple figures on top of one another produces complex figures. To make a Right 90 complex shape, the user will eventually learn to proceed by breaking the large shape into small Forward 50 shapes, and combining them. Right 90 Not coincidentally, the last technique—breaking a large, possibly insoluble-appearing, Forward 50 problem into smaller and smaller steps until the steps are manageable, then building the Right 90 Forward 50 solution from them—is a building block of mathematical thinking. Logo's power as a teaching Right 90 tool comes from its ability to allow users to discover such important principles for themselves. End Furthermore, the geometry concept—the drawing of interesting shapes on the screen by writing instructions to the cursor—is an excellent learning tool in programming itself. Adults who have never programmed may find, as I have in using Logo, that it clarifies computer concepts and problem-solving techniques in a graphic and entertaining way. Foreign-language professionals who need to program but who suspect they might not be good at learning programming the traditional way may be pleasantly surprised at the easy entree into programming offered by Logo. The second powerful concept represented in Logo is recursion—defining something in terms of itself. This idea lies at the root of many complex natural-language understanding systems. For example, ancestors may be defined recursively as follows: Ancestors are one's mother and her ancestors and one's father and his ancestors. In this definition the line of reasoning curves back upon itself, so that reading the second ancestors and the third ancestors causes a reference back to the first ancestors.

LOGO EVALUATION +FOCUS Logo was designed to be used by children, but is a powerful language that offers particular advantages in various language analysis techniques useful in CAI. The primitives, the commands that make up the original language, are few and simple and can easily be used even by computer novices as soon as they are exposed to Logo. The operations possible, however, are quite powerful. Together with the language's capability of accepting procedures to define new commands, they make Logo suitable for many kinds of problem solving. +DEFINITION The syntax of Logo is simple. There is no standard dialect. Versions of Logo for microcomputers vary greatly in their size and in their primitives. Some have only commands to the turtle graphics capability; others contain verbal commands as well. There are several good introductory manuals, and a number of versions of Logo come with very clear documentation. Logo lends itself to modular programming (i.e., the programs can be broken down into independent chunks which can be used in other programs). This means that users can find published Logo definitions useful to their own programs, and re-use them. +IMPLEMENTATION Logo is generally implemented as an interpreter. It is widely available, because of its reputation as a simple children's language, for many microcomputers. Since there is no standard implementation, portability is about the same as for other programming languages, which is to say, programs written in Logo are likely to have to be rewritten if transferred to another machine. +INTERFACE Availability of access to the underlying hardware and software of the computer running Logo depends on the implementation. Thus, as with PILOT and SNOBOL, the ease of using foreign characters varies from version to version of Logo. +USAGE Logo is considerably easier for the novice to learn than BASIC. In fact, some people who have taught Logo to college students have observed that those who have never programmed before seemed to learn recursion, for example, more easily than those who had previously programmed in BASIC.6

CALICO Journal, Volume 3 Number 2 46 +ENVIRONMENT Most versions of Logo come with at least an on-screen editor. Some larger versions, not meant solely for children, also provide debugging tools. One version provides its own operating system, a program editor, multiple text windows, and a debugger. +A PROBLEM AND A SOLUTION IN LOGO Here is a simple sentence-generator that illustrates the word-handling capacity of Logo.7 Working from three lists of bureaucratic phrases (not given here), the generator combines the elements at random for a one-sentence communication from the IRS. Sample output follows, all in caps. IRS (1)IN ACCORDANCE WITH STATE LAW YOU ARE REQUESTED TO ANCEL THE TRANSATION. (2)AFTER YOU HAVE COMPLETED THIS QUESTIONNAIRE YOU MAY PREFER TO FORGET THE WHOLE THING. (3)AT THIS TIME YOU ARE REQUESTED TO FILE A NEW RETURN. (4)AT THIS TIME YOU WILL HAVE TO FORGET THE WHOLE THING. The program for this sentence generator (minus the procedures that create the three lists of phrases) is given with explanatory comments in parenthesis:

To IRS :11 :12 :13 (defines a procedure call IRS which uses three lists) Print sentence first shuffle :11 sentence first shuffle :12 first shuffle :13 (pick an element at random from each list, combine them into a sentence and print them)

This program illustrates how Logo's primitives (in this case, Print, Sentence, Shuffle, First) can be combined to create a new command, IRS, which can be subsequently called within another program simply by its own name. Furthermore, by defining IRS as a procedure using three lists, we have generalized it further by making it possible to have libraries of possible lists; we might use the IRS program with different lists to write sentences of apology, for example, or excuses. Logo's extensibility means that the programmer can customize the language in many ways. CONCLUSION PILOT, a computer language designed expressly for interactive computer tutorials; SNOBOL, a text-manipulating language; and Logo, based on the artificial intelligence language, LISP, but simplified for use by children, offer advantages for the foreign-language CAI programmer. Easy to learn and to use, they are especially suited for certain kinds of programming that language teachers may find useful. Although they must, unlike BASIC, be purchased separately from the microcomputer, they are available at modest cost and in many variations.

1 For a discussion of the foreign-character problem, as well as a list of sources of software, see Robert L. Baker, "Foreign Character Font (FCF) SIG Report," CALICO Journal, 2,2 (Dec. 1984), 9-18. 2 John A. Starkweather, "Guide to 8080 PILOT, version 1.1," Dr. Dobb's Journal, 2,4 (Spring, 1977), 17-19 (173-185 in the bound volume); and John A. Starkweather, "Source Code for 8080 PILOT, version 1.1," Dr. Dobb's Journal, 2,5 (May 1977), 18-33 (216-231 in bound volume); and Randy Hawkins, "PILOT—The Language of Computer-Aided Instruction," Microcomputing, July, 1981 (for a TRS-80). 3 A description of an adventure game tutorial using PILOT is contained in Ruth H. Sanders, "PILOT-SPION: A Computer Game for German Students," Die Unterrichtspraxis, 17, 1 (Spring, 1984), 123-129. 4 Mark Emmer, Preface to SNOBOL4: The SNOBOL4 Language for the 8086/8088 Computer Family, documentation from Catspaw Inc., Salida, Colorado. 5 Karen C. Kossuth describes how ELIZA-like conversational programs (in any programming language) can be effectively adapted to foreign- language instruction in her "Suggestions for Comprehension-Based Computer-Assisted Instruction in German," Die Unterrichtspraxis, 17, 1 (Spring, 1984), 109-115. 6 G. Fischer and V. Kling, "Logo—Eine Programmiersprache fur Schuler; inhaltliche und methodische Aspekte ihrer Anwendung," in RGU '74: Fachtagung (series, Lecture notes in Computer Science), ed. by K. Brunnstein, K. Haefner and W. Hander, Berlin: Springer, 1974, 290-297. 7 For a description of a more complex sentence generator and how it is used in linguistics classes, see Robert G. Hackenburg, "GENERATE: A Natural Language Sentence Generator," CALICO Journal, 2,2 (Dec., 1984), 5-8.

BIBLIOGRAPHY (Note: For up-to-date information on purchasing various versions of these programming languages, check the advertising in recent issues of computer magazines such as BYTE and Dr. Dobb's Journal. Most are sold by third-party vendors, not by computer manufacturers or in computer stores.) PILOT "Nevada PILOT," Microcomputing, Jan. 1983, 158-159. John A. Starkweather, "A Common Language for a Variety of Conversational Programming Needs," in Readings in Computer-Assisted Instruction, ed. by H. A. Wilson and R. C. Atkinson, New York: Academic Press, 1969, pp. 269 ff. SNOBOL Griswold, Ralph E., James F. Poage, and Ivan P. Polonsky, The SNOBOL4 Programming Language (2nd ed.), Englewood Cliffs, NJ: Prentice-Hall, 1971. Griswold, Ralph E. and Madge T. Griswold, A SNOBOL4 Primer, Englewood Cliffs, NJ: Prentice-Hall, 1973. Maurer, W. Douglas, The Programmer's Introduction to SNOBOL, New York: North Holland, 1975. Logo Abelson, Harold, Apple Logo, Hightstown, NJ: Byte McGraw-Hill, 1982. Kildall, Gary and David Thornburg, "Digital Research's DR Logo: A User-friendly Language Comes of Age," BYTE, June 1983, 208 ff. Papert, Seymour, Mindstorms: Children, Computers and Powerful Ideas, New York: Basic Books, 1980. CALICO Journal, Volume 3 Number 2 47