computer-assisted instruction in computer programming - CiteSeerX

3 downloads 68153 Views 911KB Size Report
Beginning in 1968, a computer-assisted course in computer programming ..... This concept is best introduced in assembly language programming and illustrated ...
COMPUTER-ASSISTED INSTRUCTION IN COMPUTER PROGRAMMING: SIMPER, LOGO, AND BASIC, 1968-1970 by PAUL LORTON, JR. University of San Francisco

and

PHYLLIS COLE Apple Corporation Cupertino, Calif.

THIS ARTICLE reports on a program designed to develop computer literacy by offering instruction in a wide range of programming languages. Beginning in 1968, a computer-assisted course in computer programming was conducted through the Business Department of Woodrow Wilson High School, an "inner city" school in the Hunter's Point-Bayview area of San Francisco. Each day for three semesters, between July 1968 and June 1970,90 high school juniors and seniors in classes of 15 students interacted with a course designed to teach the fundamentals of computer programming for business applications. For approximately 50 minutes a day each student was on-line with a computer operated by the Institute for Mathematical Studies in the Social Sciences (IMSSS) on the Stanford University campus 30 miles away. The program was seen as a way of anticipating the growing demand in business and industry for people able to adapt to computerized operation of jobs. Such tasks as filing and stock-room control, formerly available to minimally trained individuals, would soon require personnel able to see and solve problems in terms understandable to a computer. Computer literacy and the ability to use computers would become important for all. Three courses were constructed in languages that were representative of the wide variety of programming languages commonly used at the time. Generally, the main goals of the instruction were to develop computer

The research reported in this article was partially supported by National Science Foundation Grant G] 197 to Stanford University.

841

842

LORTON & COLE

literacy and to present the concept of a digital computer as a tool for solving problems. Three computer languages were chosen to represent the domain: SIMPER, an assembly language; (S)LOGO, a symbol-manipulation listprocessing language; and BASI C, an algebraic language. Each language, as a representative of a particular class of programming language, had the advantages and disadvantages inherent in its class. Each, however, had the common advantage of being simply constructed and easy to learn. For the project the disadvantages of one language were compensated for by the advantages of the other languages. The three courses were offered without prerequisite to students in the Business Department of Woodrow Wilson High School. As a rule students in this department are not "college prep," that is, for them high school is the last phase in their education. Thus this program, unlike other programs which enrich the education of college-bound students, sought to enrich the education of students who would soon enter the labor market. Much of the design effort for the sequence of courses and exercises in each course concentrated on insuring that limitations in the mathematical or verbal backgrounds of the students would not limit participation in the courses. In addition to those students enrolled in the normal high school classes involved in the program, several junior high school students participating in an on-going enrichment program conducted through Woodrow Wilson High School took the programming courses in the late afternoons. Adult education classes, specially constituted to use the materials developed for this project, met and interacted with the courses two or three evenings a week. Thus the project operated 14 hours a day for most of its duration. The students communicated with a computer at Stanford University by using standard terminals (Model 33 Teletypes) connected to the computer by telephone lines. A small computer (Digital Equipment Corporation PDP 8/1) served as station monitor at the school. The Stanford computer, in its role as a teacher, presented instructions and problems to the student by typing to his terminal. The student responded by typing on the same terminal. The response was relayed to the computer and analyzed. After analyzing the student's response, the computer replied, correcting the student if necessary, and then presented him with additional instruction. At the same time, the computer was handling a large number of other students who might be taking the same course or who might be enrolled in a variety of other courses. 1. LANGUAGES 1.1 Assembly Language SIMPER SIMPER was an attempt to make available to the student at a terminal a simple computer which he could program in a manner analogous to

COMPUTER PROGRAMMING

843

assembly-language programming on digital computers of modest size. The main purpose of the SIMPER coucept was to introduce programming of computers at a very low level. SIMPER was developed by Paul Lorton and is extensively documented elsewhere (Lorton, 1971). Table 1 lists the basic operations for SI MPER. T ABLE I

SIMPER Instructions Instruction

ADD SUB MUL

DIV FIX LOAD STOR

Purpose

Used Used Used Used

for for for for

addition subtraction multiplication division

Places specified number in specified register Places contents of specified location in specified register Stores contents of specified register in in specified register

CMP JMP

Three-way. branching command Branching command

GET PUT CPUT

Used to specify input during execution of the program The PRINT command for numeric values PRINT Character

AND OR XCH SHFT

Logical AND Logical OR Exchange registers Shift register

SOP

Special operation

BEGIN

Indicates beginning of a program I nrlicates end of a program

END NAME

Permits labeling

This instructional package can be most easily understood when viewed asconsisting of two main parts: a machine and an assembler. The latter was designed to generate the machine code for Sf MPER. The "machine" is a hypothetical digital computer which can be described in a formal way (Lorton, 1971) and for which programs can be written. Although the machine responds to IS-bit instructions in its "machine language," there is no direct access to the machine via 18-bit numbers. The purpose of the machine was to teach students to program, so the machine was only instructable through a "programming" language.

,

844

LORTON & COLE

The assembler for SIMPER was the route by which students could instruct the machine. The assembler generates code for SIMPER from assembly-language instructions typed by the student. Assemblers generate code instruction by instruction. This one was no different except that it generated code for SIMPER immediately after each instruction was typed by the student. This feature enabled the student to receive immediate correction on most syntactic errors and it meant that, when the student availed himself of the option, each line of code could be checked immediately to assure the student that the assembler translated the student's instructions as he wished.

\.2 Symbol Manipulation/List Processing Language (S)LOGO Stanford LOGO was adapted from the symbol manipulation language LOGO developed at Bolt, Beranek and Newman by Feurizig and Papert (1968). The language was designed expressly for teaching principles of computer programming. The Stanford version was developed by John Slimick and is extensively documented (Slimiek, 1971). (S)LOGO is a language designed to operate on words and sentences rather than on numbers as is the case with algebraically oriented languages. The use of such languages in teaching about computers enlarges the concept of a computer from a number handler to a symbol manipulator. Thus conceived, a computer· can be a more powerful tool. Table 2 lists the instructions implemented in the Stanford version of LOGO. \.3 Algebraic Language BASIC Beginners All Purpose Symbolic Instruction Code (BASIC) is a programming language designed for algebraic applications. I t was developed by Kemeny and Kurtz (1967) at Dartmouth College to be an easily learned language. BASIC is a problem solving language suitable for applications in the scientific, business, and educational areas. It can- be used to solve problems that are both difficult and complex. It is one of the simplest programming languages-only a small number of clearly understandable and readil y learned commands are required to use it. Since BASIC is usually implemented in timesharing environments and available through terminals, learning the language in an interactive environment would be quite appropriate to later uses in an interactive environment. The version used in this project was provided with the Digital Equipment Corporation PDP-IO Timesharing system. The BASIC instructions taught are listed in Table 3. 2. CURRICULA

2.1 Introduction-Fundamental Programming Concepts For all three courses, the main curriculum structure consisted of core lessons, homework assignments, and tests. Each core lesson had a dittoed

COMPUTER PROGRAMMING

845

TABLE 2

(S)LOGO Commands Command AND BUTFIRST BUTLAST CALL DIFFERENCE END FIRST

GO IF LAST NUMBER OF PRINT QUOTIENT RETURN SENTENCE SENTENCE? SUM TIMES TO TRACE UNTRACE WORD WORD?

Purpose Pseudo-command, used as in English; helps separate parts of instruction Gives all but first character of a word, or all but first word of a sentence Gives all but last character of a word, or all but last word of a sentence Used to name things CALL ''JULY 8" "MY BIRTHDAY" Used for subtractions Indicates end of a procedure Gives first character of a word, or first word of a sentence Branching instruction Conditional instruction Gives last character of a word, or last word 'of a sentence Tests to see ifinput is a number Pseudo-command, used to separate an instruction from its first argument Causes specified information to be typed Used for division Gives the specified value as the value of a procedure Creates a sentence from two arguments Tests to see if input is a sentence Used for addition Used for multiplication Used to define a procedure Prints out values of variables each time they occur in a procedure Stops TRACE Creates a word from two arguments Tests to see if input is a word

homework assignment associated with it. For about every five lessons a test was available. Homework and tests were assigned as desired by the classroom teacher; they were mainly corrected by the computer although the teacher needed to check computer programs. A student manual was prepared for each course. The manuals typically included a brief discussion of computers, a description of the instructional program and how to use it, a description of the programming language being taught, an outline of the course, a discussion of grading, a glossary, and a list of special symbols and characters used in the course. Each class of students was supervised by a teacher, who had little if any programming experience. Brief courses in SIMPER and (S)LOGO were presented to the teachers before the first use of the courses at Woodrow Wilson High School. In addition to this class, teachers became familiar with the materials by working through lessons as students. Close contact was

846

LORTON & COLE TABLE 3

BASIC Commands Command DATA DEF END FNEND FOR .. TO GOTO GOSUB

IF ...THEN INPUT LET NEXT PRINT READ REM RETURN SQR(X) STEP

Purpose Indicates data for program Used to define formulas or functions Specifies end of a program Specifies end of function that is more than one line long Specifies the beginning of a loop Branch command Branches to a subroutine and returns to the correct location in the program after the subroutine is performed Conditional command Allows input during execution of a program Assigns values to variables Specifies end of a FOR loop Causes specified information to be typed Indicates data to be read from a DATA liar Permits a comments within a program Branches subroutine back to the correct place in the main program Gives the square root of X Specifies step size in a FOR loop

maintained with the Institute (IMSSS) both by telephone and through visits by personnel to the school. A teacher's manual was available as a reference for each course; it typically contained a copy of the student manual, a copy of each homework assignmerit. answers to homework and tests, and discussion of possible student problems. Good computer programming, under the philosophy advanced by this project, depends on understanding certain programming concepts not particularly oriented toward anyone machine or language. The basic concepts necessary for understanding the kind of applications programming taught in this project include concepts that are related to making a stored-program machine work for the user, concepts that are related to symbol-manipulation list-processing, and concepts that are related to the translation of algebraic procedures into the machine. The following list contains the concepts that form the basic content for the three courses. Stored Program. A set of instructions contained in a computer and available to the machine for execution in some predetermined, sequential fashion. This concept is best introduced at the assembly language level. Stored Data. Any set of stored numbers. They are not required to have structure or meaning. Stored programs are one type of data. This concept is best introduced at the assembly language level and amplified through the data declaration statements employed by higher level languages.

COMPUTER PROGRAMMING

847

Variable. The name given to some part of the stored program. The variable name permits reference to an alphanumeric quantity or to a portion of a program. This concept is best introduced in assembly language programming and illustrated with increasing abstraction by its use in algebraic and symbol manipulation-list processing languages. Operations. Capabilities' contained in the Central Processing Unit. Two main classes of operations,are important: arithmetic and non-arithmetic. The clearest examples of the distinctions between these operations as well as the most basic presentation of their "machine level" functioning is through assembly language programming. Addressing. The process of pointing to various parts of the stored program as well as the ability to form data into clusters or arrays in some useful way. Three subconcepts are important: indexing, base addressing, and indirect addressing. Assembly language programming gives the most basic introduction to this concept while the higher level languages illustrate its function at a more abstract level. Branching. The ability of a stored program to reorder the sequence of events it performs in completing a task. Algebraic languages most clearly illustrate the functional use of this concept while assembly language programming introduces how it is accomplished by a computer. Loops. Portions of a program that confer the ability to re~execute a subsequence of the program in order to complete a repetitive task. Both algebraic and symbol manipulation-list processing languages illustrate this function in slightly different ways. Formula Translation. The process the machine, properly instructed, uses to execute a mathematical or logical "formula." Algebraic languages most easily introduce this concept while symbol manipulation-list processing languages are best for illustrating its power. Blocks/SubprogramslProcedures. These, with minor differences, are subgroupings of the stored task which form semi self-contained programs often capable of being introduced into the main event sequence by being "called." Algebraic languages most clearly introduce this function while symbol manipulation-list processing languages illustrate their operation at a more abstract level. Input/Output. The machine's methods for listening and talking to the user. Algebraic languages best illustrate simple levels of the use of this concept. Debugging. The complex of mysterious behaviors needed to cure problems in a stored program. All languages are useful in teaching this concept but simple assembly language programs are useful for introducing it. Data Handling. The method of viewing and manipulating the data a program handles. At increasing levels of abstraction the assembly language, algebraic and symbol manipulation-list processing programming illustrate how this is accomplished. Recursion. A self-calling ability of subblocks of the program. Symbol manipulation-list processing languages· best convey this concept. Arrays and Strings. General and efficient ways of clustering stored data so that their manipulation becomes a simpler task. Algebraic and symbol manipulation-list processing languages can be used to demonstrate this idea. Data Structures. Named functions which use indexing and pointers to locate elements in the stored data. Examples are trees, lists, graphs, etc. Symbol manipulation-list processing languages provide suitable illustrations of this area.

848

LORTON & COLE

From the above information it is apparent that each of the three classes of languages is most suited to introducing, illustrating or amplifying a certain set of these basic concepts. Since the goal was to teach the concepts in general and not some specific programming language, an instructional sequence was built from simple representatives of each class of language.

2.2 Instructional Strategws In addition to"the specific programming concepts that were contained in the course content, the structure of each course embodied two main pedagogical goals of providing both individualization and a learning environment in which students would develop techniques for self-evaluation. Particular attention was given to providing sufficient remedial work, practice, and review for less able students. Students were encouraged to evaluate their own progress to determine when such remedial work was needed. Each curriculum provided individualized instruction by the use of three response modes: multiple choice, constructed responses (where a student types a word, numeral, or phrase), and programs. Errors in multiple choice and constructed response problems are reported by the instructional program. When writing programs, the student is in direct communication with the interpreter for the programming language he is learning, and errors are reported by the interpreter. Although the instructional systems provided effective remedial instruction by analyzing student responses in detail and responding differentially, this scheme alone was not thought sufficient to accommodate the student who is aware that he cannot give the correct response, and would prefer more instruction before attempting an answer. Three student control commands were available to further individualize each course while encouraging self-evaluation by the student. The HINT control command allowed the student to access additional instruction at any time during the working of a problem by typing a special student control key. Since some students learn well with much less detailed instruction than others, the scheme of including optional instruction with each problem allowed the brighter student to move rapidly through the lessons while providing sufficient instruction for the less able (or more insecure) student. The ANSWER control command was available to the student at any time. About 75 percent of the problems in the course contained the text of the correct answer, which was displayed whenever the student typed the ANSWER control key. Often the older student can learn if he is shown the correct answer, rather than being required to construct a response. Past experience with this kind of device indicated that the older student does not tend to "abuse" such a privilege; in fact an ANSWER command is used quite infrequently.

COMPUTER PROGRAMMING

849

The GO control command allows the student to partially determine the sequence of materials by changing lessons, perhaps to skip back and review a lesson. This command was also used by the student to access homework assignments and tests. Each of the three courses was approximately one semester in length for the average high school student with a good command of sixth-grade arithmetic skills. However a more able student, or one who had been exposed to programming concepts before might complete a course in half the time by not requiring remedial work or review sessions and by taking advantage of omitting optional practice sessions. A slow student, taking full advantage of remedial and review materials, might take more than one semester to complete a course. In each course elements of the programming language are taught largely by examples in context, immediately followed by sequences of practice problems designed to create an awareness of the possibilities and limitations of each language element. The student is permitted to make any number of tries per problem in the core lessons of each course. It was stressed that wrong answers while learning were not part of the grade~ Only on the homework assignments and tests were trials-per-problem limited and results made available to the teacher. 2.3 SIMPER SIMPER is an assembly-type language designed for instructional purposes and contains the instructions listed in Table 1. Thecourse consisted of 38 lessons outlined in Table 4 which most students followed in sequence. Review was an inherent part of the structure of each lesson; additionally, four special review lessons were included in the course. Remedial help was available to students through the HINT and GO commands which allow a student to obtain optional material or review lessons at his discretion. Those students who needed more practice than average were able to use the four review lessons as well as the "Solving Problems" lessons to good advantage. Superior students were encouraged to omit these lessons. Before beginning, the course, the student in the classroom learned how to sign on and off the computer. Starting with the the basic concept of a stored program machine the lessons introduced the SIMPER instructions that could be used to store literal values in the machine's memory. The next step in the instruction was to explore the basic arithmetic operations of the machine covering addition, subtraction, multiplication, and division. Following coverage of the basic concepts of Stored Programs, Stored Data, Addressing, and Operations, the lessons covered simple inpu t and output of numerical information. Then lessons on branching and looping rounded out the SIMPER curriculum.

850

LORTON & COLE

TABLE 4 Outline of Lessons for SIMPER Lesson

101 102 103 104

105 106 107 108 109 110 III

112 113 114 115

116 117 118 119

120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

135 136 137

138

Description Introduction FIX, STOR: introduces these 2 SIMPER instructions BEGIN, END, PUT: more new instructions Practice: on instructions so far

ADD LOAD MUL, SUB, DIV: more instructions to do arithmetic Practice: emphasis on instructions for doing arithmetic Signing on to SIMPER: learning to write programs directly in the language; how to debug a SIMPER program GET: the instruction that lets you type in input while executing a program Problem solving: \vriting programs to solve word problems for you Negative numbers: using GET to input negative numbers Two operations: using more than 1 arithmetic instruction in a program Reviewing instructions: control commands and instructions are both reviewed Choosing programs: looking at different ways of doing the same thing Practice: especially in writing SIMPER programs Register B Remainders: when you divide a number in register A, the remainder is stored in register B Comparing numbers: given two numbers x and y, is x less than, equal to, or greater than y? CMP: the SIMPER instruction used to compare numbers, and how it works Practice: emphasis on CMP, division problems with remainders Introducing JMP: skipping within a program More about JMP Solving Problems: deciding what certain programs do Practice: emphasis on JMP JMP and 0: how to make sure a JMP will always work Review Introducing NAME: how to label locations More About Name Divisibility: seeing if a number is divisible by 2, 3, etc. Practice: emphasis on NAME, divisibility Review Introducing Counters: having your program check how many times you've done an operation Loops: using a counter Practice: emphasis on loops Solving problems: writing programs involving loops to solve problems Practice: emphasis on loops Review

COMPUTER PROGRAMMING

851

SIMPER has a feature that makes it particularly useful for demonstrating how a program works: the contents of the location counter and two general-purpose registers (used for performing operations) are printed out as each step is executed. This instruction-by-instruction execution of a program allows the student to monitor execution of his programs, giving insight into how each instruction operates and how a sequence of instructions can be converted into meaningful work. The feature also makes debugging programs an easier task. Faster execution may be gained by using a special command to suspend the instruction-by-instruction printout feature. 2.4 (S)LOGO The curriculum for (S)LOGO, while it was independent of the SIMPER curriculum, built on the concepts taught in the first phase of the project. (S)LOGO is a list-processing language and as such is suitable for manipulating alphanumeric strings of data as well as for doing straightforward arithmetic. The course consisted of the 48 lessons outlined in Table 5 and involves the instructions in Table 2. Those elementary (S)LOGO commands which allow simple string building and manipulation were introduced first. Instructions used in naming and building blocks of statements were then presented. Various tests used for branching in a string-oriented language were taught leading finally to lessons in functions and recursive functions. Most of the comments made about the SIMPER course apply to the (S)LOGO course: homework and tests are handled in the same way. An attempt was made to provide more lessons suitable for review and extra practice, particularly for less able students. The general pattern was four lessons of new material followed by two review lessons, the second of which was usually a cumulative review. One of the powerful features of (S)LOGO is the ability to write recursive functions. The course included an ll-lesson sequence designed to introduce and explore recursive functions. 2.5 BASIC The curriculum developed for BASIC emphasized the concepts most easily explored through an algebraic language. The BASIC course is designed to allow substantial student control. Within the course there are hundreds bf decisions points at which the student is asked to make a statement of preference. Most of the decisions to be made by the student concern the use of optional material such as detailed summaries, review guides, and self-tests. The 50 lessons outlined in Table 6 cover the instructions listed in Table 3. The lessons vary in length from 20 to 40 problems and require between one and two hours for an average student to complete. The main

852

LORTON & COLE TABLE 5

Outline of Lessons for (S)LOGO Lesson

Description

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

The Instructional Program Introducing LOGO; PRINT WORD; SENTENCE FIRST; BUTFIRST Review of Lessons 2-4 Review of Lesson 1 LAST; BUTLAST Introducing Compound Instructions Compound Instructions Signing on to LOGO Review of Lessons 7-10 Review of Lessons 2-10 Arithmetic· Instructions Negative Numbers The CALL Command CALL and Compound Instructions Review of Lessons 13 and 14 Review of Lessons 15 and 16 The SAME? Command WORD?; NUMBER?; SENTENCE? GTR? AND Compound Commands Functions Review of LOGO Test Instructions Review of Functions Editing Functions Functions with more than I Argument The GO TO Command Choosing Functions Review of Lessons 25-28 Review of Lessons 1-'29 An Astrological Function Introducing Recursive Functions Writing Recursive Functions Hide and Seek Review of Lessons 31-34 Review of Lessons 1-35 Figlatin More Recursive Functions Solving Problems Sets Review of Recursion Review of Lessons 1-41 Money The BOTH Command The EITHER Command Loops Counters Review of Lessons 43-47

COMPUTER PROGRAMMING TABLE 6

Outline of Lessons for BASI C Description

Lesson I

2 3

4 5 6

7 8 9 10

1I 12 13 14 15 16

Introduction to the instructional program Using BASIC to do arithmetic Solving word problems involving one operation Parentheses; order of operations Solving word problems involving more than one operation Self-test Overview Decimals; some techniques of debugging More about debugging The LET command; introducing variables' The INPUT command The GO TO command Self~test

19

Overview Comparing numbers The command IF . : . THEN More about PRINT Using two counters Traces

20

Self-test

21

Overview The commands FOR, TO, and NEXT STEP Solving problems Loops with variable bounds Loops with INPUT or IF instructions Self-test Overview The READ and DATA commands Solving problems Introducing exponents The SQR command The DEF command Self-test Overview Neat output Patterns The STOP and REM commands The GOSUB and RETURN commands Equivalent programs Self-test Ovenriew Scientific notation Problems involving scientific notation Introducing nested loops Using nested loops "Realistic" programs Self-test Ovenriew How to learn more about BASIC

17 18

22 23

24

25 26 27

28 29 30 31 32 33 34 35

36 37 38

39 40 41

42 43

44 45 46

47 48

49 50

853

854

LORTON & COLE

strand of the course consists of five core lessons; each core lesson presents a new concept. Associated with each core lesson is an optional summary of the lesson; the summary is typed in a standard notebook sized format which the student could save as a permanent reference. An optional self-test designed to help the student evaluate his understanding of the concepts presented to date could be taken after each group of five core lessons. Since this test is available for student use and not for grading purposes, no report on student performance is available to the teacher. The self-test is followed by a general overview lesson that reminds the student what has been taught and which of the topics covered are essential to the subsequent material. The overview lesson is prepared as a one page guide that assists the stu~ent in locating any material he may need to review. After the student has taken the self-test and been given the opportunity to review, he is given a short graded test, which is evaluated partly by the computer and partly by the supervising teacher. The graded tests are encountered every week or ten days, depending upon how fast the student progresses in the course. When a student attempts to write a program in SIMPER, (S)LOGO, or BASIC he interacts directly with the appropriate interpreter, so he no longer has access to the hints, wrong-answer messages, etc., available via the instructional system. When writing a program, the student must rely on the error messages available from the interpreter, and often such messages are not sufficient help to a student who lacks a clear understanding of what is being asked of him. The BASIC curriculum has three main ways around this problem. The first approach is to make several hints available with each problem. The first time the student types the HINT key he receives the first message; the second time he receives the second message, etc. The second approach involves looking for particular wrong answers to questions regarding output of a program or a proposed plan for a program. Usually, wrong answers are corrected by a single message. In some cases, an expected wrong answer may indicate a need for more extensive instruction. The student is branched immediately to a series of remedial problems designed specifically to correct the misconception identified with that particular wrong answer. The remedial sequence may contain from one to twenty problems; such a sequence is provided at every critical point in the curriculum. Approximately 250 such remedial sequences are incorporated into the core lessons, usually in association with problems assigning the student to write a program. The third approach allows the student himself to initiate the remedial sequence by typing HELP after a programming problem is assigned.

COMPUTER PROGRAMMING

855

3. CURRICULA DELIVERY SYSTEM This project used the full facilities of the IMSSS Computer-Based Laboratory. Instructional material was presented via both the Digital Equipment Corporation PDP-l and PDP-IO computers at the Institute. Each of the machines presented slightly different problems and advantages for the program but, in general, the solutions were machine independent. The implementation of the project on each machine involved developing a "curriculum supervisor" to present the lesson material and evaluate student responses, and developing linkage to the language processor involved. Both the PDP-l and PDP-1O communicated with the terminals at the high school through a PDP-8I located on site and used as a terminal line concentrator. For the SIMPERJ(S)LOGO portion of the project the PDP-l System was used. For the BASIC portion, the PDP-1O System was used. The time sharing system and the curriculum supervisor used is described below, first for the PDP-l and then for the PDP-IO. 3.1 PDP-l Timesharing System The main computer used in the SIMPERJ(S)LOGO phase of the project was a Digital Equipment Corporation Programmed Data Processor-ID. The PDP-lD is a single address, 18-bit binary machine. The machine has 32,768 words of core memory of which 20,480 words are used by the "timesharing" operating system. User programs are permitted up to 12,288 words of core. The time-sharing system allows up to 26 "users" to run on the computer at the same time. This is made possible by the addition to the PDP-l of a very high speed drum with 26 tracks, each capable of holding a 4,096 word program. The timesharing system trades these programs in and out of core memory thereby greatly increasing the flexibility of the basic machine. The operation of the PDP-I timesharing system necessitates developing instructional programs which micro time-share. That is, each of the programs in the SIMPERJ(S)LOGO portion of the project was designed to run a number (16) of terminals by itself. The programs in this project occupied 10 of the 26 available drum tracks. 3.2 SLAKER: The PDP-l Curriculum Supervisor SLAKER, the instructional system developed for the SIMPERJ(S)LOGO phase of the project, was designed to provide the interface between the student at a terminal and the curriculum material of the project. The over-riding concern in the development of this driver was to provide as much freedom and flexibility for each user as possible within the constraints imposed by '!micro-timesharing" among all the users.

856

LORTON & COLE

If a student's program would cause a real machine to enter an infinite loop or write over his data then this should happen to him in the instructional setting. Certain obvious restrictions have been placed on this goal. A student's work was not free to interfere with other users (although this might well happen on a "real" machine) because this is not an especially useful experience for the other students. A student could "wipe out" his own effort and, to a degree, experience the pain of having to recover from the error. The major functions SLAKER performed included Text Delivery, Response Evaluation, Communication with the Language Interpreters, and Special Requests. Text delivery. One of the major tasks of SLAKER is the presentation of problems to the student at his terminal. Several of the disk files attached to the driving program contain the "curriculum material" which is organized into four "strands" (sequences of lessons and problems through which the student is to proceed). In addition to the lesson text, the problem code contains certain values which indicate various subsections of the problem, such as the "correct answer" or the "hint." The four strands into which lessons and problems are grouped for this project are: Lesson, Homework, Extra Credit, and Test: For problems in the Lesson strand SLAKER is charged with waiting until the student enters the correct answer before going on to" the next problem. With the other three strands SLAKER presents the next problem as soon as any answer is entered. In every case the student is informed of the correctness of his answer. Response evaluation. After transmitting problem-stating text to the user, SLAKER monitors his input, collecting it as an answer to the posed problem. When the user enters an "evaluate my work" request, SLAKER checks his answer according to the scheme indicated by the typeofproblem the student was given: 1. Multiple Choice. Under this format the answer is first compressed so that all duplicate characters are eliminated. Then the answer is searched for matches with the characters recorded as the correct answer. Up to twenty characters are collected from the student as possible answers for problems stated in this format. Only alphabetic (alpha) characters are collected so that spaces, punctuation marks, even numbers can be inserted in the answers without affecting the correctness of the alpha string. 2. Constructed Response. When the student's input is in answer to this type of problem all the characters he types, with the exception of carriage returns and line feeds, are collected. The checking routine· then examines the answer string looking for two kinds of characters: those that must be present and those designated as optional. The search and match routine is of such generality that, it is felt, all possible correct answers will be marked correct if they are defined in the criterion string.

COMPUTER PROGRAMMING

857

3. Anticipated Alternative. Although not a separate type of problem, this checking capacity is a separate skill of SLAKER. If alternative answers are expected they can be specified and checked for. If a correct answer is not found then the answer evaluation routine checks the student's effort, in the same fashion, against the strings specified as possible alternatives. If a match is found then an appropriate comment is given and the student is told to try again just as is the case when he is wrong. At present this capability is available on constructed response problems and single answer M/C prob~ lems. 4. Programming Problems. At present, evaluation of these problems is done by asking the user questions about his program after it ran. An eventual capability could be to process the programs written through an "equivalence checker" which would see whether or not the student's program met various criteria specified for a correct response. Some work is presently considering this problem and, in the saved SIMPER programs of the students, there exists the potential data for such an evaluative scheme. The current thought is that some "elegant" combination of the "constructed response" and "anticipated alternative" checking schemes will suffice for checking the equivalence of SIMPER programs.

Communication with language interpreters. Since the main aim of the course is to provide rich and varied experience in programming, a main responsibility of SLAKER is to readily provide this contact. Each language differs slightly in how it wants to be told a student is using it but basically SLAKER's role is to make the initial contact with the language processor, pass subsequent information to it, and await the user's indicated wish to return to the main program. Special requests, The following activities could be requested from a student station. As a group they provide the student with considerable flexibility in how he proceeds through the course. 1. Restart Terminal. Allows a user to request a terminal be restarted from the sign~on point. Used to correct improper sign-on efforts by students.

2. Sign-Off Terminal. Allows a user to terminate his lesson when he is ready. Part of the execution of this command involves storing where the student left off on his history file so that he may restart from this point on the following

day. 3. Go to Choice Point. Places the user at a point where one of the following choices can be made: a. Return to Last Problem. Allows the student to continue working from where he last signed-off in the strand he specifies. b. Go to Specific Lesson. Allows the student to begin working on the lesson number in the strand he indicates. c. Attach a Language Processor. Allows the student to call forth one of the language processors available in the course. 4. Skip Problem. In the Lesson strand, only a correct answer will advance a student on to the next problem. This feature allows a student to skip out of this loop. As the next problem is called, the correct answer to the skipped problem is printed.

858

LORTON & COLE

5. Give Hint. Commands SLAKER to print the "hint" provided for the particular problem.

6. Erase Answer. The user has the option of erasing all of the answer he has typed or merely the last character. Erasing the last character can be repeated until the entire answer is erased if wished. 7. Communicate with Stanford Monitor. This feature allows student stations to type messages to the monitor terminal at Stanford. Usually its use is reserved for the classroom teachers who may want to correct a lesson, enter a new ~tudent, or ask a question. As part of this feature it is also possible to communicate from the monitor terminal to anr of the student stations.

Further details of this curriculum delivery system are developed in Slimick and Lorton (1971). 3.3 PDP-10 Timesharing System The central processor in the BASIC phase of the project was a DEC PDP-10. The Time Sharing monitor on this computer operates hy allocating each user a certain area in the 256,000 words of core memory it has at its disposal and then rotating the running time in the processor among the users in core. The monitor also has the capability of segmenting a user's program into a "shared" (purely executahle read-only code) and unshared portion. This means that many users can be served by a single program without the necessity of that program itself sorting out the input and output in order to share its time. Thus many users can have access to the BASIC language processor or the curriculum supervisor without the arbitrary limitation imposed by the less flexible PDP-1 timesharing system. The number of possible users on the PDP-lO system at the time of this project was 128. 3.4 INSTRUCT The coding language INSTRUCT is a high-level programming language designed for programming computer-assisted instruction. The language was developed by Jamesine Friend and is extensively documented elsewhere (Friend, 1971). The setaf instructions available to the lesson author and that will be given to the computer about how to present a lesson to students include: 1. what exercises to type and when to wait for an answer.

2. how to analyze the student's answer to determine whether or not it is correct. 3. how to respond to the different possible answers a student may give. 4. what exercise to present next.

These instructions to the computer must be written in a language the computer understands, and INSTRUCT is one such programming language. After the instructions are written, they are entered into computer memory where they are stored until some student needs them. The student takes the lesson by using a computer program called 1NST which interprets

COMPUTER PROGRAMMING

859

the language INSTRUCT into machine language so that the computer can operate. The lessons are grouped into "courses" in computer storage. Each course consists of a number of strands and contains a number of lessons. Each lesson consists of a series of exercises, written in the language INSTRUCT. In addition to interpreting the coded lessons, the program INST also keeps track of which students are enrolled for which courses, how far each student has progressed, and how well he is doing. A number of optional features included in the INST program allow the student to request the correct answer to an exercise or allow him to do

exercises in any order he wishes. Which optional features are used depends upon the "course type," and each course is identified as one of six possible types. Some course types give the student control over his own sequence of exercises, others allow him to request additional instruction before he responds to an exercise. Some permit an unlimited number of trials on each exercise, while still others restrict the number of allowable trials, etc. In addition to the content of certain "standard messages," the course type determines what characters are designated as "student control keys." For example, one student control key is the "tell" key; the student types the CTRL key and the letter G simultaneously or he types a slash (I) to get the answer. The end of a response may also be indicated by typing an "enter" character; in one course type the "enter" character may be the RETURN key; in another it may be a space or a period. A lesson is coded by using a series of commands or instructions that cause the computer to present problems, via teletype, to students. For example, commands cause a problem statement to be typed; commands cause student answers to be analyzed (checked for correctness); commands cause specified messages to be typed if the student is correct, etc. Each command must begin with an "op code" followed by a space. Op codes, the vocabulary of the coding language, are mnemonic words, such as EXER, HINT, and EQ, and serve to specify the kind of command. EXER, for example, is the op code for a command that causes an exercise to be displayed. Of course, the text for the exercise must also be supplied by the coder, so an EXER op code is followed by a text string containing the text of the problem. The text must be enclosed in text delimiters, such as + or t. These text delimiters serve as "quotation marks"-in fa