FLOW: A teaching language for computer programming in the humanities

FLOW is an instructional computer programming language which eliminates many of the difficulties beginners usually have when learning to program. The language is very limited in scope, and the pedagogical emphasis is on algorithmic design rather than extensive language features. It is used only for the very first lectures in programming in college and secondary level courses, where it allows immediate hands-on use of the computer. FLOW is always quickly supplanted by whichever "real" computer language is most suited to the needs of the course. The extreme interaction afforded by low cost minicomputers is exploited by the technique of "typing amplification" which completes the typing of keywords once their initial letter is entered. FLOW has proven easy to implement on many computer systems, and has been effective with a wide variety of students over the past four years. In the Report of the Conference on Computer Technology in the Humanities 1 the committee on courses and curricula concluded that a first course in computer programming in the humanities should "provide extensive instruction and practice in programming. Insofar as possible, programming should be taught algorithmically . . . rather than as aspects of a specific programming language. Such algorithms . . . provide an abstract structure onto which any given programming language can be mapped. Hence, the logical aspect of programming, rather than the details of a programming language, is given primary emphasis, and thus the inevitable shifts from one programming language to another necessitated by a change in computer or in research goals are facilitated." An institute 2 in programming in the humanities was proposed and implemented on the basis of the recommendations of this and other committees and during that institute, held in the summer of 1970, the FLOW programming language was developed by the author. It met the requirements outlined above, and it has been in use since then, proving itself to be a powerful teaching aid. 3 There are a number of impediments that come between the artist or humanities scholar and the art and technique of programming. These problems begin with the often expressed self-doubt of the students who feel that they are about to enter an alien field where they will be at a severe disadvantage. Later they will be forced to memorize arbitrary language conventions, they will work in a hostile and noisy environment and will have to learn many irrelevant facts about computers and operating systems. I f they happen to take a course not designed for humanists they will be given problems to solve that are intended to be trivial. But the students will too often find that the problems themselves are as troublesome as the programming part of the exercise. 4 For -the beginning student of programming any nonprogramming content serves to confuse the issue. FLOW solves these as well as a few other problems that arise in the earliest stages of teaching programming. FLOW works especially well when it is embedded in a curriculum designed substantively and psychologically around the needs of the humanities or arts student or professional. Part of FLOW's attractiveness is that it can run on very small (and inexpensive) minicomputers and that it is easy to implement and maintain. The original implementation was written by two of my students and myself in one day. s FLOW is designed for interactive terminals, but a version has been used successfully