Trailing-Edge
-
PDP-10 Archives
-
decus_20tap2_198111
-
decus/20-0074/gnosis.doc
There are 2 other files named gnosis.doc in the archive. Click here to see a list.
GNOSIS - A CAI Author Language and Preprocessor
===============================================
(c) Copyright 1978 by Walter Maner
Department of Philosophy
Old Dominion University
Norfolk, VA. 23508
Based in part on an earlier manuscript
by Jacob Palme, Swedish Research
Institute of National Defense,
Stockholm, Sweden
ABSTRACT
GNOSIS provides a CAI authoring language which makes it
relatively easy for any teacher with a basic understanding
of "programmed" textbooks to develop computerized tutorials
for his students. Although material already written in such
a format can be transformed virtually as-is by GNOSIS into a
form suitable for computer delivery, the teacher would
normally be writing his own "script." This script, because
it simulates the dialogue one might overhear if that teacher
were tutoring a student in private, can be made to "come to
life" on a computer terminal by the addition of a few simple
GNOSIS command words. The computer driven tutorial is, in
reality, a compiled version of the ALGOL program GNOSIS
writes in response to the script prepared by the teacher.
In fact, GNOSIS has been designed in such a way that the ANY
of the facilities of ALGOL can be exploited anywhere in the
lesson.
The fact that GNOSIS has been designed to function as a
TEACHING rather than as a TESTING system is reflected in
program logic at all levels. In accord with this design
philosophy, GNOSIS tempers negative and positive feedback
according to psychological context, simulates a correct
response (and the comment which would have accompanied it)
when all else fails, encourages student control through
skipping and backstepping facilities, and generates teacher
reports which are geared to lesson improvement.
KEY WORDS AND PHRASES: GNOSIS, Computer Assisted
Instruction, CAI, instruction, teaching, education,
computer, learning, school, pedagogy, pedagogics, Digital
Equipment Corporation, DEC, PDP, ALGOL, SIMULA.
GNOSIS.DOC Page 2
*
TABLE OF CONTENTS
1.0 WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
1.1 What Are The Supposed Advantages Of CAI?
1.2 What Is CAI Supposed To Do For The Teacher?
1.3 What Is CAI Supposed To Do For The Student?
1.4 What Are The Supposed Disadvantages Of CAI?
2.0 BASIC CHARACTERISTICS OF GNOSIS
3.0 THE GNOSIS COMMAND LANGUAGE
3.1 A Simple GNOSIS Lesson
3.2 Advice For Beginners
3.3 Alphabetical List Of GNOSIS Commands
4.0 GNOSIS TWO-PAGE SUMMARY
5.0 PRECEDENCE TABLE FOR GNOSIS COMMANDS
6.0 ERROR DIAGNOSIS AND RECOVERY
6.1 GNOSIS Translator Messages
6.1.1 GNOSIS Error Messages -
6.1.2 GNOSIS Warning Messages -
6.2 ALGRTS (ALGOL Run-time System) Messages
6.3 ALGOL Compiler Error Messages
7.0 WRITING ALGOL SEGMENTS INTO YOUR LESSON
7.1 Standard Variables And Procedures
7.1.1 GNOSIS Variables -
7.1.2 GNOSIS Procedures -
7.2 Creating Variables
7.3 Creating Procedures
8.0 WRITING GNOSIS LESSONS
8.1 Question Types
8.2 Lesson-generated Diagnostic Profiles
8.3 Some Advice
9.0 RUNNING GNOSIS
10.0 SETTING UP STUDENT ACCOUNTS
GNOSIS.DOC Page 3
INDEX OF GNOSIS COMMANDS
A.0 SELECTED BIBLIOGRAPHY
B.0 ILLEGAL LABEL NAMES
C.0 USE OF IF-CLASS COMMANDS
C.1 Example I
C.2 Example II
D.0 USEFUL MIC PROGRAMS
D.1 GNOSIS.MIC
D.2 SORT.MIC
E.0 MACRO ROUTINES
E.1 INTRUT Intercept Routine
E.2 R Routine
E.3 RUN Routine
F.0 SAMPLE GNOSIS PROGRAM
G.0 FORMATTING THE <LESSONNAME>.ALG FILE
H.0 CONTENTS OF GNOSIS DISTRIBUTION TAPE
I.0 IMPLEMENTATION CHECKLIST
I.1 Essential Steps
I.2 Other Desirable Steps
I.3 Testing
GNOSIS.DOC Page 4
'
*
ACKNOWLEDGMENT
The author wishes to express his appreciation to Jacob Palme
for much insightful advice and for his assistance with
Swedish texts; to the Old Dominion University Research
Foundation for a Summer Research Grant (1976) which funded
preliminary work on GNOSIS; to the National Science
Foundation's program for Comprehensive Assistance to
Undergraduate Science Education (CAUSE) which funded, via
the ODU CAUSE office, crucial work on GNOSIS during the
summer of 1977; and to the ODU Computer Center for a
generous allowance of computer time throughout a three-year
period.
*
GNOSIS.DOC Page 5
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
*
1.0 WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
The surprising answer to this question is that, with
the possible exception of certain kinds of generative or
simulation programming, there is nothing inherently new
about CAI. The computer -- grand as it is -- simply
provides a new vehicle for doing the various kinds of things
teachers have always done, though perhaps with less
convenience and efficiency. From the teacher's point of
view, then, the invention of the computer should be viewed
on a par with the invention of the erasable chalkboard, the
printing press, the pencil, the video tape machine, the
overhead projector, and so on. Each provided nothing more
than a distinct instructional medium which could then be
exploited by the teacher and learner alike. No matter what
the computer does for us, it is still true that curriculum
materials must be organized, developed and evaluated by the
trained teaching professional. The computer is about as
much a threat to the competent teacher as the textbook.
It is true that suitably programmed machines will
increasingly do certain things faster or longer or more
accurately or in more places than human beings. But note
that this amounts to a continuing REDEFINITION of what
should henceforth be considered "the human use of human
beings"! If there is any teaching function which could
better be left to some automatic medium, then it clearly
SHOULD be left to this medium most of the time. Why?
Because it would be DEGRADING for any human being to
continue to perform such a menialized task (e.g., grading
homework). The computer revolution promises, therefore, to
give teachers increasingly more time to concentrate on their
"higher" roles -- a vision of the future which should please
all but the incompetent.
CAI is often confused with Computer Based Instruction
(CBI) and Computer Managed Instruction (CMI). We say a
course is computer BASED when the computerized materials can
stand alone as a complete and adequate resource. Very few
courses now claim to be computer based and, in this sense,
GNOSIS.DOC Page 6
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
only a scarce few ever will be. Computer MANAGED
instruction, in contrast to both CAI and CBI, has little to
do with the delivery of instruction. CMI fulfills a role
which is largely (or even exclusively) administrative. That
is, it assists the teacher with what has been called
"classroom management": student records, test construction,
test grading, statistical chores, and so on. CAI provides
exactly what the term "assisted" implies -- i.e., a helpful
extension of the usual course methods and materials. The
role of CAI at the present time, and for the foreseeable
future, is primarily one of course enrichment.[1]
1.1 What Are The Supposed Advantages Of CAI?
Whatever claims are made for CAI, it is clear that
their proper evaluation is an empirical matter. If CAI IS
better then it will have to prove itself better in the usual
way, through educational research. What follows below,
then, is a discussion of some advantages commonly ALLEGED
for this mode of instruction. They represent conjectures
this author finds plausible apriori and, as such, they could
probably best serve us as research hypotheses. And who
knows? Perhaps your own research will be a factor in
determining which of these guesses are more nearly in line
with the facts.
1.2 What Is CAI Supposed To Do For The Teacher?
1. By making it unnecessary for the teacher himself
either to present or to evaluate the large amount
of drill and practice students will need to have in
skill-oriented courses, CAI should in theory free
the teacher for more creative and intellectual
encounters with students.
2. Because a CAI program can routinely manage a
student's path through curriculum material (based,
of course, on decision criteria the teacher
supplies), the computer should in theory make it
possible for the teacher to individualize
instruction in circumstances where it was not
administratively feasible to do so before CAI.
---------------
1. There is much progress being made in a number of
related areas, however. These include GCAI (Generative
CAI), SCAI (Simulation CAI), CAG (Computer-assisted
Guidance), CAT (Computer-administered Testing), CGT
(Computer-generated Tests), and even certain administrative
applications.
GNOSIS.DOC Page 7
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
3. Because a CAI program can AUTOMATICALLY generate
teacher reports on individual student progress
through curriculum material, it can provide
diagnostic or evaluative data which would be
decidely less convenient to develop using more
traditional approaches.
4. Because teacher reports are developed immediately,
CAI should afford the teacher the opportunity to
evaluate instructional content and strategies while
there is still time to change them for the better.
5. Because CAI programs can be edited at any time the
author feels so inclined, even while in active use
by students, revision can be continuous and
responsive.
6. Because changes can be effected in computer
programs without the need to retype and reformat
the program as a whole, the editing chore is
comparatively painless from the standpoint of
"manuscript management."
7. For all the reasons given above, desirable changes
are more likely to be made than they would be if,
say, the instructional vehicle were a published
textbook.
8. Because a CAI program always performs exactly as
designed, it provides an unsurpassed opportunity
for the teacher qua educator to do research under
carefully controlled experimental conditions.
1.3 What Is CAI Supposed To Do For The Student?
1. Because a computerized lesson can be delivering
instruction in any one of several places,
simultaneously, it should normally prove to be more
accessible than the teacher.
2. Because a computerized lesson can in principle be
delivered at any time, the student should in theory
be able to benefit from a more flexible scheduling
of his workload.
3. Because CAI permits a student to make his mistakes
discretely, it should in theory promote greater
involvement by students who are normally reticent
or who find the typical classroom environment
intimidating.
GNOSIS.DOC Page 8
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
4. Because a well-designed computerized lesson
simulates sessions of private tutoring, the student
should come to look upon the medium as a vehicle
for personalizing instruction.
5. Because the student can proceed at his own pace,
slower learners should not ever have to be
embarrassed by their more gifted peers; nor should
these gifted themselves ever have to wallow in
boredom while the teacher struggles with the less
advantaged.
6. Because the machine never tires, it should be able
to provide whatever amounts of drill and practice
are necessary for a student to become successful.
7. Because feedback is immediate and pertinent, there
should be little opportunity for the learner to
become entrenched in bad habits.
8. Because the student may exercise some control over
the delivery of the computerized lesson, he should
in theory be able to contribute to the
individualization of instruction in partnership
with the teacher.
9. Because a computerized program IS so attentive and
responsive, it should be more motivating for
students to learn in this way than in circumstances
where the student is lost in a sea of faces.
10. Because the computer forces the learner into an
active role, he should be able to learn more ...
better ... faster, and he should be able to retain
it longer.
11. Because CAI furnishes the student with tangible
indications of his progress through the curriculum,
he should in theory be more highly motivated than,
say, the student who is told of his progress (or
lack of it) only at examination time.
12. Because the program can be made to adjust to the
level of competence actually demonstrated by the
student, he should be able to get precisely the
amount of instruction he needs on each occasion so
that his time is used to maximum advantage.
GNOSIS.DOC Page 9
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
1.4 What Are The Supposed Disadvantages Of CAI?
1. Because computerized lessons are easy to revise, it
is difficult to excuse oneself from this
essentially endless chore.
2. Because the routine use of computerized lessons can
generate an avalanche of valuable data about
students, the onus is on the teacher as never
before to make informed judgments about students.
3. Because of the highly tutorial nature of CAI lesson
design, the author is forced as never before to
enter the minds of his students, to anticipate
their responses, and to prepare individualized
diagnostic comments. Not every teacher -- not even
every GOOD teacher -- commands the necessary
insight.
4. Because the preparation of computerized lesson
material demands a degree of organization not
normally required either for lecturing or textbook
authoring, CAI can force the teacher to spend
considerable time restructuring his course.
5. Because a well conceived, half-hour computerized
lesson will require, on the average, about twenty
hours of authoring time, many teachers will have to
move slowly into CAI.
6. For the same reason, teachers will be reluctant to
change textbooks once they have written
computerized lessons to accompany them.
7. Because a CAI program is, like a book, a direct
indication of the author's mastery of the material
and of his techniques for presenting it, any
deficiencies which may exist are likely to be
highly visible to students and colleagues.
8. Because computer resources are -- and will continue
to be -- limited relative to demand, both teacher
and student will find themselves competing for
their "piece of the machine."
9. Because of the present anti-competitive nature of
the computer industry (and for other reasons), a
CAI program will not be nearly as sharable or as
marketable as a textbook, video cassette, or film.
10. Because the use of computer lessons presupposes
some minimal typing ability, certain students may
not avail themselves of the opportunity CAI
provides unless special orientation is provided.
GNOSIS.DOC Page 10
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
11. Because approximately correct responses and
misspelled responses are usually treated exactly
like wrong responses by the program, a student may
become frustrated.
12. Because CAI permits flexible pacing by learners,
the teacher must be prepared to confer with
students on ALL aspects of the course at any time.
It is not enough just to be prepared for the unit
at hand.
GNOSIS.DOC Page 11
BASIC CHARACTERISTICS OF GNOSIS
*
2.0 BASIC CHARACTERISTICS OF GNOSIS
GNOSIS provides, through its ten basic commands,[2] a
simple CAI authoring language which makes it easy for any
teacher with a basic understanding of "programmed" textbooks
to develop computerized tutorials for his students.
Although material already written in such a format can be
transformed virtually as-is by GNOSIS into a form suitable
for computer delivery, the teacher would normally be writing
his own "script." This script, because it simulates the
dialogue one might overhear if that teacher were tutoring a
student in private, can be made to "come to life" on a
computer terminal by the addition of a few simple GNOSIS
command words. The computer driven tutorial is, in reality,
a compiled version of the ALGOL program GNOSIS writes in
response to the script prepared by the teacher.
As in the ordinary tutoring environment, the student's
path through the material can be guided in various and
subtle ways, e.g., by routing students having difficulty to
supplementary material. The program qua tutor can also
react in helpful ways to a variety of anticipated false
responses to questions, e.g., by giving appropriate
diagnostic commentary or hints, followed by a repetition of
the wrongly answered question. Although unanticipated
responses can be saved for inclusion in teacher reports
(along with statistics on individual student performance),
the data which are generated exist for the sake of improving
the lesson pedagogically. This is in keeping with the
general design philosophy that GNOSIS should be a TEACHING
system rather than a TESTING system. GNOSIS is a
general-purpose test-and-branch system for Computer Assisted
Instruction. The teacher prepares a lesson or "script"
containing short texts and questions. This lesson is input
---------------
2. See below, section 3.2. Of course, GNOSIS also
recognizes many advanced commands which will be valued by
the sophisticated CAI author.
GNOSIS.DOC Page 12
BASIC CHARACTERISTICS OF GNOSIS
to the computer and translated by the GNOSIS into the ALGOL
language. The ALGOL compiler will then translate the lesson
into executable machine code and, after that, the lesson can
be run by the student.
Because GNOSIS lessons are ultimately compiled en bloc
and because the compiler which does the final translation
generates highly efficient machine code, the CPU time
consumed by students using GNOSIS lessons will be dramaticly
less than for those using interpretative systems like
SCHOLAR-TEACH.
Compared to SCHOLAR-TEACH, its principal competitor on
DEC hardware, GNOSIS has the following additional
facilities:
1. Use of highly mnemonic and natural English command
words (e.g., "QUESTION" to output a question,
"TEXT" to output a text block); this makes writing
lessons in GNOSIS as simple as writing a script for
a programmed textbook.
2. Availability of both upper and lower case
characters to improve readability and provide
emphasis.
3. Automatic (defeasible) vertical segmenting of
display so that the "scrolling effect" will not
disadvantage students working at a CRT.
4. Automatic (defeasible) right justification of
display with a "ragged right" at column 72.
5. Automatic (defeasible) generation of teacher
reports which, instead of containing all manner of
irrelevant information, store precisely the data
necessary to make improvements in the lesson
design.
6. Automatic (defeasible) simulation of a response the
program would have considered correct if the
student fails on repeated attempts to supply an
acceptable response.
7. Automatic (defeasible) collection of student
comments on the lesson, whether the comments are
brief or voluminous.
8. Automatic (defeasible) use of the student's first
name in commenting and feedback routines.
9. Capability (defeasible) for student to back up or
skip ahead to an arbitrary point in the lesson.
GNOSIS.DOC Page 13
BASIC CHARACTERISTICS OF GNOSIS
10. Availability of a large number (13) of pre-defined
branching conditions, far more than exist in any
other CAI language.
11. Convenient access of the full facilities of ALGOL
whenever they are desired.
12. Convenient access to external FORTRAN procedures
via ALGOL.
13. Automatic (defeasible), context-sensitive
dispensing of hints.
14. Efficient entry and storage of global help texts.
15. Six times faster lesson execution than with CAI
languages requiring an interpreter (e.g.,
SCHOLAR-TEACH).
16. Automatic (defeasible) use of the bell to prompt
student.
17. Absolute control of how branching is effected at
run-time (can be entirely teacher controlled,
entirely student controlled, or any mixture of the
two).
18. Automatic (defeasible) transfer to another lesson.
19. Availability of multiple-choice question-and-answer
strategies which require the student to pick two or
more of the presented alternatives but do not
necessarily penalize him for a partially wrong
response.
20. Automatic generation of positive and negative
feedback, suitably individualized according to
context.
As the GNOSIS author becomes more sophisticated in his
needs and aspirations, there will come a time when he will
"turn programmer" and begin to write brief ALGOL segments
into his lesson script. GNOSIS supports this transition,
but does not force it. Because of this, more study may be
required in order to take full advantage of GNOSIS than
would be required for, say, SCHOLAR-TEACH. But the
important thing is that these easy-to-acquire programming
skills will give the author better, more flexible, and more
extensible facilities once he has mastered them. In fact,
through ALGOL, GNOSIS gives him access to all the facilities
of a powerful, high-level programming language. No other
CAI author language provides such an opportunity.
GNOSIS.DOC Page 14
BASIC CHARACTERISTICS OF GNOSIS
The principal disadvantage of GNOSIS is that the
ready-to-run lesson (.SAV file) is large compared to the
script which generated it -- about five times larger on the
average. While regrettable, this situation is wholly
consistent with a design philosophy which calls for
sacrificing storage efficiency whenever that would improve
runtime efficiency. It is part of the cost of avoiding
interpretive execution.
GNOSIS.DOC Page 15
THE GNOSIS COMMAND LANGUAGE
*
3.0 THE GNOSIS COMMAND LANGUAGE
The GNOSIS language consists of approximately forty
simple commands which are used in conjunction with texts,
questions, canned answers, hints, and comments. All GNOSIS
commands begin with a reserved symbol, usually "%",[3] in
the first column (extreme left margin) of a line. Only the
first three letters of the command are significant, so one
may freely abbreviate "%QUESTION" to "%QUE", etc.
3.1 A Simple GNOSIS Lesson
Even if you have no experience in computer programming,
you will have little difficulty understanding the following
simple GNOSIS lesson. In fact, such lessons have more in
common with theater scripts than with any programming
language you have ever heard of. Roughly, in the lines
following %TEXT or %QUESTION, the teacher is speaking to the
student; in the word or phrase immediately following %RIGHT
or %WRONG, the student is responding to the teacher; and,
in the lines following %RIGHT and %WRONG, the teacher is
reacting to the student's response.
--------------------- A SIMPLE LESSON ---------------------
%TEACHER Dr. Walter Maner
%DISK
COMMENT: "%DISK" causes the lesson to
generate reports for the teacher. See
section 3.3 for a full description of this
command.
%NAME
---------------
3. The "!" cannot be used since it is a comment
marker. (This implies that the first line cannot be a
comment.) However, any other symbol can be chosen.
GNOSIS.DOC Page 16
THE GNOSIS COMMAND LANGUAGE
COMMENT: "%NAME" causes the lesson to ask
the student to enter his name. See section
3.3. for a full description of this command.
%TEXT
This lesson contains some riddles. Put on your thinking cap
and try to answer them.
%QUESTION
What was the President's name in 1951?
%RIGHT Jimmy
Of course, Jimmy Carter was not President in 1951, but the
name of our President (i.e., Jimmy Carter) was "Jimmy" back
in 1951. (He didn't change his name.)
%RIGHT Carter
%SAME
COMMENT: The %SAME command is explained in
section 3.3. Basically, it enables a single
teacher reaction to be paired with several
different student responses. Here, the
dialogue appearing after "%RIGHT Jimmy"
will be delivered to the student if his
response contains either "Jimmy", "Carter",
or "James".
%RIGHT James
%SAME
%WRONG Harry
Harry Truman was the President in 1951, but I didn't ask you
who was President. I asked you what our President's NAME
was in 1951. Do you see the difference?
%WRONG Truman
%SAME
%WRONG
Hint: His initials are J.C.
%WRONG
Another Hint: What is our President's name now? Has it
changed since 1951?
%QUESTION
How many three-cent postage stamps in a dozen?
%RIGHT 12
A dozen is still a dozen. It doesn't matter what makes
up the dozen.
%RIGHT twelve
%SAME
%WRONG 4
You divided 3 into 12. That gives 4, but you outsmarted
yourself! Really, now, how could there be only 4 stamps
in a dozen? Where did you go to school?
%WRONG four
%SAME
%WRONG
It takes twelve objects to make a dozen, doesn't it?
Does it matter whether the objects are three-cent stamps,
eggs, or what-have-you?
GNOSIS.DOC Page 17
THE GNOSIS COMMAND LANGUAGE
%END
--------------------------- END ----------------------------
As you can see, the formula for writing a GNOSIS lesson
is simple indeed:
1. Display text to the student with %TEXT commands.
2. Ask questions with %QUESTION commands.
3. React to right answers with %RIGHT commands.
4. React to wrong answers with %WRONG commands.
Most GNOSIS lessons will deviate very little from this
paradigm.
An actual terminal session (see below) would follow the
lesson script (see above) faithfully but not blindly. At
every point, GNOSIS would be making judgments about the
student, the lesson environment, and other relevant factors
in order to generate intelligent comments and displays.
Note especially how GNOSIS would manage the interaction
between the computer and the student, e.g., by providing
feedback appropriate to the context. In certain situations,
the student would be recycled through the question; in
others, GNOSIS would realize that the student is guessing
wildly, that the program is no longer providing useful
diagnostic help, and would determine that the best approach
under the circumstances would be to simulate a correct
answer. The student's first name would be used occasionally
to personalize dialogue -- often enough but not too often.
Here, then, is an actual terminal session based on the
simple lesson script given above:
------------------ ACTUAL TERMINAL SESSION -----------------
Hello! This is GNOSIS talking.
I'd like to know your full name--
just type it in after the arrow.
(Unless you enter a made-up name, GNOSIS will
generate personal data based on this session.)
-->Walter Maner
Glad to meet you, WALTER!
Welcome to the lesson 'RIDDLE'.
This lesson was produced by the GNOSIS system for computer
GNOSIS.DOC Page 18
THE GNOSIS COMMAND LANGUAGE
aided instruction (CAI) from the Research Institute of
National Defense, Stockholm, Sweden, and the Old Dominion
University Research Foundation.
The author of this lesson is...
Dr. Walter Maner
IMPORTANT: You can interrupt the lesson at any time by
typing the single character "%" on your terminal and then
pushing the RETURN button.
GNOSIS will then explain how you can type
(1) 'STOP' to end the lesson immediately;
(2) 'SKIP' to move on to the next question; or
(3) 'BACK' to return to the previous question.
Push RETURN -->
This lesson contains some riddles. Put on your thinking
cap and try to answer them.
Push RETURN -->
What was the President's name in 1951?
-->Harry Truman
Wrong!
Harry Truman was the President in 1951, but I didn't ask
you who was President. I asked you what our President's
NAME was in 1951. Do you see the difference?
Please try again.
What was the President's name in 1951?
-->Lyndon Johnson
No, you're wrong this time, WALTER.
Another Hint: What is our President's name now? Has it
changed since 1951?
Please try again.
What was the President's name in 1951?
-->James Earl Carter
Exactly right, WALTER! There is hope for you after all!
JAMES EARL CARTER
^^^^^^
COMMENT: In certain ambiguous contexts,
GNOSIS will flag the word or words it
took to be significant in the student's
response.
Of course, Jimmy Carter was not President in 1951, but the
name of our President (i.e., Jimmy Carter) was "Jimmy" back
GNOSIS.DOC Page 19
THE GNOSIS COMMAND LANGUAGE
in 1951. (He didn't change his name.)
Push RETURN -->
How many three-cent postage stamps in a dozen?
-->four
No, you're wrong this time.
You divided 3 into 12. That gives 4, but you outsmarted
yourself! Really, now, how could there be only 4 stamps
in a dozen? Where did you go to school?
Please try again.
How many three-cent postage stamps in a dozen?
-->three
Sorry.
Just for the record, GNOSIS will simulate an acceptable
answer:
-->12
Very good.
A dozen is still a dozen. It doesn't matter what makes
up the dozen.
Push RETURN -->
During the lesson "RIDDLE" you answered 2 questions,
and you gave the right answer 1 times.
On 0 questions your answer was right on your very first
try.
If you have any message for the teacher, then type it now,
one line at a time. Finish with an EXTRA push on the
RETURN key.
-->This was a silly lesson.
-->
Leaving the lesson "RIDDLE"...
Have a nice day, WALTER!
--------------------------- END ----------------------------
3.2 Advice For Beginners
Beginners should note that, while there is a fairly
large number of GNOSIS commands, a very powerful lesson can
be written using only TEN of these: %TEXT, %QUESTION,
%RIGHT, %WRONG, %NOEXTRA, %EXTRA, %NOORDER, %ORDER, %GOTO,
and %END. Learn how to use these basic commands first
GNOSIS.DOC Page 20
THE GNOSIS COMMAND LANGUAGE
before you advance to more sophisticated devices. As a
novice, you should also take note of the fact that it is NOT
necessary to know how to program in ALGOL in order to write
GNOSIS programs. In fact, you can ignore everything said in
this manual about ALGOL "code" and ALGOL "segments" until
you are ready to extend your abilities in this direction.
In the normal case, the ALGOL coding would be done by the
Academic Support Service of your computer center anyway.
When you have mastered the ten basic commands, study
the demonstration program "HOW.GNO" provided in an appendix.
Try to imagine what "HOW" will do when it is run. Then "R
HOW" and, as "HOW" runs, try to discover in the "HOW.GNO"
script the lines which are producing the effects you see.
Compare these effects with the documentation provided in
this manual.
Since GNOSIS commands cannot appear in an arbitrary
order, beginners are also encouraged to make faithful use of
the "Precedence Table for GNOSIS Commands" (section 5.0,
below). In addition, the discussion "Writing GNOSIS
Lessons" (section 8,, below) should be helpful. (In a later
release, a series of GNOSIS lessons which themselves teach
GNOSIS will be available.)
3.3 Alphabetical List Of GNOSIS Commands
Note: The character "|" is used to separate items of a
set from which one, and only one, member can be chosen. The
characters "[" and "]" are used to enclose an item which may
be present or absent. The characters "<" and ">" are used
to enclose non-literal elements, i.e., elements which would
have to be REPLACED by a literal before the code would be
valid. Of course, "<empty>" is to be replaced by a null
literal, namely, nothing. Items not enclosed by these left
and right carats are literals, hence can be put in the
GNOSIS script just as they appear.
1. %ALGOL <one or more lines of ALGOL code>;
This command causes one or more lines of ALGOL
code to be transferred unchanged to the ALGOL
translation of the teacher's script. The segment
must be legal in ALGOL and, in addition, must mesh
with the GNOSIS lesson at the point of insertion.
2. %BELL <empty>
Causes the bell to be rung at the student's
terminal whenever the computer is awaiting input
from him. Useful in noisy environments and with
first-time computer users.
GNOSIS.DOC Page 21
THE GNOSIS COMMAND LANGUAGE
3. %COPYRIGHT <line containing copyright notice>
If this command is used then, each time the
lesson is run, a copyright notice will be output as
part of the lesson header. This copyright applies
only to the lesson itself, of course -- not to the
GNOSIS software.
4. %DISK <empty>
Causes teacher reports to be created at lesson
runtime, then routed to preexisting disk files
named <lessonname>.DTA and <lessonname>.SRT. The
<lessonname>.DTA file contains a page of data for
each run of the lesson. These data include the
student's name, a trace of his unexpected
responses, lesson statistics, and any message he
may have left for the teacher. The
<lessonname>.SRT file contains only the "unexpected
response" traces, converted to a format suitable
for sorting.
Unless the %DISK (or %DISC or %DSK) command is
used, then teacher reports (if any) will be routed
to the lineprinter and no machine readable records
will remain. The reports queued to the lineprinter
are equivalent to those which would have been
contained in the <lessonname>.DTA file except that
each page is printed as a separate item. Without
the %DISK command, no <lessonname>.SRT file is
generated.
When using the %DISK command, care must be
taken to ensure that the blank files
<lessonname>.DTA and <lessonname>.SRT have been
created IN THE ACCOUNT WHERE THE LESSON WILL BE
RUN. They must exist there before the lesson is
used for the first time. Otherwise a mysterious
error message will be sent to the student by ALGDDT
as he tries to exit from the lesson. A protection
of <155> should be given to these report files.
This isn't adequate for all purposes, of course,
but it is a workable compromise for the teacher who
wishes to inspect, print or copy-and-sort these
records from another account.
The %DISK command executes implicit %TEACHER
and %KEEP commands. Thus, an explicit %TEACHER
command will be required only if it is necessary to
add the teacher's name and address.
Technical Note: Unless %NAME is used in
conjunction with %DISK, only one student at a time
may use a report-generating lesson. When the %NAME
GNOSIS.DOC Page 22
THE GNOSIS COMMAND LANGUAGE
command is used, however, temporary .DTA and .SRT
files (based on his first name) are opened at
runtime. Writing to these files (until the very
end of the lesson) usually avoids any
conflict-of-access problems connected with writing
the main <lessonname>.DTA and <lessonname>.SRT
files.
5. %END <empty>
This is -- MUST be -- the last command of a
lesson. Any text after this command will be
ignored by GNOSIS.
6. %EXTRA <empty>
This command will influence the way in which
student responses are compared to canned answer
patterns. After a %EXTRA command, and until the
next %NOEXTRA command, student responses will be
considered correct even if they contain extra
characters not part of the %RIGHT answer pattern
PROVIDED they do at least contain all the essential
characters. If the response DOES contain extra
characters, then GNOSIS will flag the essential
characters with uparrows.
GNOSIS is initialized in %EXTRA mode and will
remain in this mode until it encounters the first
%NOEXTRA command line. Note that, in %EXTRA mode,
the response "yes or no" will be considered a
correct response to any "%RIGHT yes" or "%RIGHT no"
command! GNOSIS will obligingly flag the "yes"
part as correct in one case, the "no" part in the
other.
7. %FINISH <empty>
This command will enable the user to place one
or more lines of ALGOL code in the GNOSIS
translated lesson immediately before its final
"END". (Ordinarily this would be possible only
through editing the .ALG file produced by GNOSIS.)
"%ALGOL <one or more lines of ALGOL code>;" MUST
follow the %FINISH command. Note too that %FINISH
does NOT terminate the lesson script; a %END is
still necessary to close the lesson.
8. %GOTO <label>;
Normally the student will proceed through the
teacher's script in more or less linear fashion.
This ordinary flow of control can be overridden,
however, by use of the %GOTO command. This command
GNOSIS.DOC Page 23
THE GNOSIS COMMAND LANGUAGE
will cause the lesson to branch (or jump)
immediately and unconditionally to the line bearing
the label. The %GOTO may appear anywhere in the
lesson. However, if it is used in association with
the comments or hints following one of the answer
commands (%RIGHT, %WRONG, %LACK or %NEUTRAL), then
the %GOTO command must FOLLOW these comments or
hints. The <label> which serves as the argument or
"destination" for the %GOTO command can be one
which you have explicitly written into the lesson
or it can be one of the standard, predefined labels
provided by the GNOSIS system.
The five standard labels in the GNOSIS system
are:
1. "start"
Marks the beginning of the whole lesson.
Thus "%GOTO start;" causes the entire lesson to
be repeated.
2. "endoflesson"
Marks the end of the lesson. Thus "%GOTO
endoflesson;" causes the lesson to be aborted.
3. "repeat"
Marks the beginning of the last question
cycle. Thus "%GOTO repeat;" will have the
effect of repeating the previous question.
4. "simulate"
Marks the place where GNOSIS begins
simulating a correct response. (For this
purpose, GNOSIS uses the answer supplied as an
argument to the FIRST %RIGHT command.) If, for
example, you want GNOSIS to count several
divergent responses as correct but go on to
simulate what you take to be the best response,
then you could type "%GOTO simulate;" after
your comment (if any) for a %RIGHT command
which took as its argument one of the less
desirable answers.
5. "next"
Marks the point of exit from the current
question cycle. Thus "GOTO next;" will have
the effect of skipping past the current
question routine to whatever happens to be next
in the program.
GNOSIS.DOC Page 24
THE GNOSIS COMMAND LANGUAGE
If for some reason you do NOT want GNOSIS
to simulate a correct response after a student
has repeatedly failed to give one of his own,
you can insert "GOTO next;" after the last
"%WRONG <empty>" command.
User defined labels can be inserted almost anywhere
by using a %ALGOL command but it is usually more
convenient to associate them with %TEXT and
%QUESTION commands. If you do not insert a %GOTO
command after an answer command, then the default
action is "%GOTO repeat;" in %WRONG or %LACK
environments, "%GOTO next;" in %RIGHT or %NEUTRAL
environments.
9. %HELP <unique one-word designation for help text>
<one or more lines of help text>
The %HELP command causes GNOSIS to establish a
global help text, i.e., one which is potentially
accessible by the student from any part of the
lesson. "%ALGOL <help text name>;", wherever it
may appear in the program, will subsequently cause
the help text to be displayed.
10. %IF <switchname>
Assuming <switchname> has been declared and
initialized by a %SWITCH command, the occurrence of
%IF will cause the text between the %IF and the
next %IFEND to be deposited in the translated
lesson ONLY if <switchname> was initialized TRUE.
Otherwise these lines of text will be skipped.[4]
11. %IFEND <switchname>
This command turns off the %IF/%IFNOT
facility. In other words, the SCOPE of each %IF or
%IFNOT extends to the next occurrence of a %IFEND
command. Thus, all text following %IFEND will be
included in the translated lesson as usual,
regardless of previous %IF's or %IFNOT's.
Subsequent %IF's or %IFNOT's will, of course,
create another need for an %IFEND to define THEIR
scope -- unless that scope extends all the way to
the end of the lesson. %IFEND must therefore
follow some %IF or %IFNOT command.[5]
---------------
4. Use of these commands if discussed further in an
appendix to this documentation.
5. Use of these commands if discussed further in an
appendix to this documentation.
GNOSIS.DOC Page 25
THE GNOSIS COMMAND LANGUAGE
12. %IFNOT <switchname>
Assuming <switchname> has been declared and
initialized by a %SWITCH command, the text between
%IFNOT and the next %IFEND command will be included
in the ALGOL translation of the lesson ONLY if
<switchname> is FALSE. Used only in conjunction
with a previous %SWITCH.[6]
13. %INITIALIZE <one or more line of ALGOL code>;
This command is normally used to initialize
global variables which have been declared with the
%VARIABLES command, although it could just as well
be used to reinitialize GNOSIS system parameters if
that should ever be necessary. %INITIALIZE
operates like %ALGOL (see above), except that the
code following %INITIALIZE is written into the
lesson at the point where data are initialized,
just before the start of the main program.
14. %JUSTIFY <empty>
Causes all text, including the text in
%QUESTION blocks and %HELP blocks, to be
semi-justified to produce a ragged right at column
=< 72. It also causes such text material to be
paged out in such a way that nothing will be lost
scrolling off the top of a CRT.
Although GNOSIS begins processing text
material in the %NOJUSTIFY mode, an occurrence of
the %JUSTIFY command will change the mode of
processing until a subsequent %NOJUSTIFY command is
encountered.
In the %JUSTIFY mode, GNOSIS will treat
spaces, tabs, linefeeds and carriage returns as
mere separators. Only blank lines will be output
exactly as typed in. Moreover, when operating in
the %JUSTIFY mode, GNOSIS will be sensitive to the
occurrence of certain characters. These include
the doublequote, the left and right bracket, and
the semicolon.
---------------
6. Use of these commands if discussed further in an
appendix to this documentation.
NOTE
Failing to avoid these characters in blocks
of text processed in the %JUSTIFY mode is
certain to cause peculiar and even fatal
effects.
This sensitivity is caused by the way ALGOL string
scanner works. In later releases of GNOSIS, a
workaround should be provided.
The only ALGOL carriage-control command which
can be safely used inside the scope of %JUSTIFY is
the "[T]" command, for tabbing. This
carriage-control command, if used at the very
beginning of the %JUSTIFY text or after a blank
line in that text, will not cause any peculiar
effects. It may, however, cause the right margin
to be exceeded by a few characters.
15. %KEEP <empty>
This command is useful only in association
with a %TEACHER command, i.e., in report-generating
lessons. Unless %KEEP is used in such a lesson (or
unless %DISK is used, which executes an implicit
%KEEP command), the student will be directed to
pick up the teacher report generated by the lesson
(after it has been printed by the lineprinter), and
to bring this report to the teacher. This command
is probably not needed any longer since reports can
conveniently be kept on disk.
16. %LACK <element(s) likely to be missing from answer>
<optional line(s) of comments>
This command causes GNOSIS to search for
something which (a) is essential to a correct
response but which (b) is likely to be missing. If
the the item is not found in the student's
response, then he receives appropriate negative
feedback from GNOSIS and the text (if any) on the
optional line(s) after the %LACK command is
displayed to him at that point. If more than one
element is expected to be lacking from the
student's response, then he receives feedback and
commentary (if any) as soon as ANY of the elements
cannot be detected in his response.
The chief advantage of the %LACK command does
not lie in its increased efficiency but rather in
the opportunity it provides for writing highly
specific diagnostic comments. Despite this
advantage, we recommend AGAINST using %LACK
commands while your computer lesson is under active
development -- especially in the early stages.
This is because %LACKs will tend to capture any
GNOSIS.DOC Page 27
THE GNOSIS COMMAND LANGUAGE
response which deviates, however slightly, from
your preconceived idea of a right answer. For this
reason, any student response which is matched by a
%LACK command is routed to the teacher report on
the theory that possibly, just possibly, that
response might be an alternative correct response
to the question posed. This routing constitutes an
important exception to the general rule; normally,
only unanticipated responses would be routed to the
teacher report.
Technical Note: Regardless of context, %LACK
works as if %NOORDER and %EXTRA were declared
immediately above it.
17. %LANGUAGE Swedish | English
This command tells the system which language
to use in communication with the student. The
command is not necessary if the language is to be
English. (The language used in communicating with
the teacher at the time his script is being
processed by GNOSIS is not affected by the
%LANGUAGE command; it is always English.)
18. %LOCK <empty>
PERMANENTLY disables the backstepping and
skipping provisions of GNOSIS. The student is in
effect "locked" into the lesson path defined by the
teacher unless the teacher explicitly supplies
branching opportunities in the lesson itself.
(Note, however, that the student can still END the
lesson by typing "stop".) There does not exist, as
yet, a corresponding %UNLOCK command.
19. %NAME <empty>
Causes the GNOSIS lesson to exchange greetings
with the student at the start of the lesson. The
student's full name is requested (and routed to the
<lessonname>.DTA file, if any) and his first name
is saved for use in I/O routines.
20. %NEUTRAL <an answer not right or wrong> | <empty>
<optional line(s) of comments>
This command tells GNOSIS to search for a
response and, if it is found, to interpret it as
being neither correct nor incorrect. If the
neutral target text is found in the student's
response, then any line(s) of comments or hints
provided by the teacher will be displayed to the
student at that point. The default for %NEUTRAL
GNOSIS.DOC Page 28
THE GNOSIS COMMAND LANGUAGE
commands is "%GOTO next;" so the teacher who wants
a question repeated after GNOSIS has found a
neutral match will have to insert "%GOTO repeat;"
after that %NEUTRAL command (and comments, if any).
Technical Note: The procedure "extratest" is
NOT called for %NEUTRAL commands with empty answer
patterns. Thus clever use of "%NEUTRAL <empty>"
should enable the teacher to trap most misspelled
responses with no prejudice to the student's score
-- or ego.
21. %NEXTLESSON run("<lessonname>");|r("<lessonname>");
This command tells GNOSIS which lesson to run
after the student finishes the current lesson.
Transfer to this lesson is wholly automatic at the
point of exit, just as if the new lesson had been
called up by GNOSIS directly, without intervention
of the monitor.[7]
The next lesson can be any RUN-able or R-able
program, i.e., any program with the extension .SAV,
.EXE or .SHR). "run("<lesson name>");" is used
when the lesson resides in the student's area,[8]
"r("<lesson name>");" when it resides in the SYS:
area.[9]
Technical Note: The literal which replaces
"<lesson name>" must be a single filename, without
extension.
22. %NOCONTROLC <empty>
[Partially Implemented]
In this mode, if a student types a CTRL-C, he
will not be returned to the monitor level.
Instead, he will be logged off the system without
further ado.[10] (Thus a single CTRL-C becomes
---------------
7. R.MAC and RUN.MAC, the programs responsible for
this effect, are listed in an appendix.
8. If a library has been established (e.g., with the
line "LOGIN/LIB:[<account number>]" in the student's
SWITCH.INI file), then "run" will tap programs in the
library as well as those in the account itself.
9. A variant of these, "pub("<lesson name>");", is
also supported by GNOSIS for systems with a "PUB:" area.
10. INTRUT.MAC, the program responsible for this
effect, is listed in an appendix.
GNOSIS.DOC Page 29
THE GNOSIS COMMAND LANGUAGE
functionally equivalent to BASIC's "BYE" command.)
Note: If the student types SEVERAL CTRL-C's
in rapid succession, the effect will be to run and
then abort LOGOUT, thus leaving the student logged
in and at monitor level. It is hard to see how
this bug could be fixed without making it
impossible to abort LOGOUT.
23. %NOEXTRA <empty>
This command will influence the way in which
student responses are compared to canned answer
patterns. After a %NOEXTRA command -- and until
the next %EXTRA command -- a student's response
will be considered wrong if it contains ANY
characters not present in the canned answer
pattern.
24. %NOJUSTIFY <empty>
Switches off the text justifying routines
until the next occurrence of %JUSTIFY. This means
that all text will be displayed exactly as typed
in, without change. GNOSIS begins processing in
the %NOJUSTIFY mode.
25. %NOORDER <empty>
This command will influence the way in which
student responses are compared to canned answer
patterns. After the %NOORDER command -- and until
the next %ORDER command -- a student's response
will be considered correct even if the elements of
the student's response do not appear in the same
order as the elements of the canned answer pattern.
(ALL the necessary elements must be present,
however, or the response is considered wrong.)
GNOSIS is initialized to the %NOORDER mode and will
remain in that mode until the first %ORDER command
(if any) is encountered.
26. %ORDER <empty>
This command will influence the way in which
student responses are compared to canned answer
patterns. After a %ORDER command -- and until the
next %NOORDER command -- a student's response will
be considered correct only if the elements of the
student's response appear in PRECISELY the same
order as the elements of the canned answer pattern.
GNOSIS.DOC Page 30
THE GNOSIS COMMAND LANGUAGE
27. %PROCEDURE <one or more lines of ALGOL code>;
This command is used to make a standard ALGOL
procedure declaration. Code following the
%PROCEDURE command is processed like code following
the %ALGOL command (see above), except that it is
written into the lesson at the point where
procedure declarations belong.
Technical Note: The %PROCEDURE command itself
is not copied, since it might well have been
abbreviated to %PRO; thus the terms "PROCEDURE",
"EXTERNAL PROCEDURE", and so on should occur
immediately after %PROCEDURE even though this might
appear redundant.
28. %QEND <one line of ALGOL code>[;] | <empty>
This command causes GNOSIS to close a
question-and-answer processing loop. This command
is rarely used since %TEXT, %QUESTION and %END
contain this command implicitly. However, %QEND is
sometimes useful before certain %ALGOL commands
since those commands do NOT implicitly close the
question-and-answer loop. So, for example, if you
had an independent block of ALGOL code to insert
between two %QUESTION commands, it would be
necessary to use %QEND after the first question and
answer patterns.
29. %QUESTION <one line of ALGOL code>[;] | <empty>
<question to be displayed -- one or more lines>
The %QUESTION command, like the %TEXT command,
can take as its argument a single line of ALGOL
code, usually a condition statement and/or a label.
(Refer to description of the %TEXT command, below.)
In addition to causing the question to be
displayed, the %QUESTION command invokes a response
input and evaluation routine which continues
GNOSIS.DOC Page 31
THE GNOSIS COMMAND LANGUAGE
to cycle until, roughly, the student types in a
correct response or is guessing so wildly that he
is receiving no further diagnostic help.[11]
30. %RIGHT <a possible right answer>
<optional line(s) of comments>
This command causes GNOSIS to search for an
answer pattern and, if it is found, to consider it
correct. If a match for the canned answer is found
in the student's response, then the following
happens:
1. The GNOSIS system gives the student one of
several stock messages, all of which have the
effect of providing positive feedback.
2. If he had previously missed this question then,
depending on the circumstances, GNOSIS provides
additional stock messages designed to encourage
him.
3. The text on the optional line(s) following the
%RIGHT command (until the next GNOSIS command)
is displayed to the student.
4. Various statistical variables (see %TEXT
command) are updated.
5. GNOSIS moves on to the next item of business.
31. %SAME <empty>
This command is used to avoid duplicate
storage and typing of comments whenever the comment
provided for the previous %RIGHT, %WRONG, %LACK or
%NEUTRAL answer pattern can be reused. As it turns
out, this need to reuse comments is fairly common,
causing %SAME to be one of the most frequently
---------------
11. As long as a student is supplying responses
matched by the canned answers following the answer pattern
commands (i.e., %RIGHT, %WRONG and %LACK [and %NEUTRAL if
followed by "%GOTO repeat;"]), then he will be recycled
through the question. If he does NOT supply a response
which matches any of these, then he will be recycled through
the question once for each "%WRONG <empty>" pattern. That
is, the number of "%WRONG <empty>" commands determines the
number of times a student giving unanticipated (i.e.,
unmatched) responses will be recycled through the question.
If there are 'n' "%WRONG <empty>" commands for the question,
then 'n + 1' unanticipated responses will force GNOSIS to
simulate a correct response.
GNOSIS.DOC Page 32
THE GNOSIS COMMAND LANGUAGE
encountered commands in GNOSIS lessons. Loosely
speaking, %SAME tells GNOSIS to "borrow" the
comment immediately preceding the last answer
command. But the technical user should realize
that, strictly speaking, %SAME causes an
unconditional branch to the previous response
evaluation loop; so not only will the comment be
the same but any %GOTO or %ALGOL command following
that prior comment will also be obeyed.
Obviously, the first answer command after a
%QUESTION command may not be followed by a %SAME
command since there would, in this case, be no
previous comment to reuse.
32. %SGNOSIS <empty>
GNOSIS lessons normally output a header which
tells the student that he is running a GNOSIS
lesson, that it was authored by so-and-so, and that
he can do certain things to control his path
through the lesson. Also, and the end of the
question-and-answer section of the lesson, GNOSIS
will normally output a corresponding trailer which
tells the student how he scored. %SGNOSIS (for
[S]top GNOSIS) will inhibit the display of this
header and trailer. The command is useful when you
want to use GNOSIS to administer a questionnaire.
33. %SWITCH <switchname> TRUE | <switchname> FALSE
This command declares and initializes a
Boolean variable with the name <switchname>.
%SWITCH enables the %IF %IFNOT, and %IFEND commands
(see above).[12]
34. %TEACHER <line with teacher's name, etc.> | <empty>
If this command is included in a lesson, then
teacher reports (of some kind) will be produced for
the lesson, and students will be told who authored
the lesson each time the lesson is run. If the
%TEACHER command is used with an empty argument,
then an anonymous teacher report will be generated
and no information about lesson authorship will be
displayed to the student at runtime.
---------------
12. These commands are discussed further in an
appendix to this documentation.
GNOSIS.DOC Page 33
THE GNOSIS COMMAND LANGUAGE
The <lessonname>.DTA teacher report contains
the following information:
1. The student's full name, if operating in %NAME
mode.
2. Unexpected responses to questions in the
lesson.
This trace will include any unforeseen student
response or, roughly speaking, all those
responses students entered without getting any
specific diagnostic feedback. Recurrent
unanticipated responses usually signal a need
to rewrite the lesson with that response as an
argument for an answer command -- followed of
course by appropriate comments or hints.
3. Basic statistical data about the student's
performance.
These data should not be taken too seriously,
especially when the lesson permits the student
to exercise control over skipping and
backstepping.
4. Student comments about the lesson.
GNOSIS can store as lengthy a comment as the
student wants to type, even if his comment
should run on for pages.
The <lessonname>.SRT report, which is generated if
%DISK is used in conjunction with %TEACHER,
contains the trace of unexpected responses in a
form ready to be input to the utility program SORT.
The following command string usually does the job:
.R SORT
*x.SRT=x.SRT/KEY:1:60:A/ALPHA/RECORD:132
where "x" = <lessonname>.[13]
35. %TEXT <one line of ALGOL code>[;] | <empty>
<text to be displayed -- one or more lines>
---------------
13. A MIC program which accomplishes this rather
painlessly is listed in an appendix.
GNOSIS.DOC Page 34
THE GNOSIS COMMAND LANGUAGE
The text on the lines following this command,
and until the next GNOSIS command, is displayed to
the student. The %TEXT command can take any single
line of ALGOL code as an argument. Usually this
code will contain conditions (as arguments for IF
statements) and/or labels. The syntax of condition
and label can be
1. <condition with label> ::= [<condition>]
[<label>:]
Note that "<label>:" is, here, a label
DECLARATION. That is, its occurrence here puts
an identifying mark in the lesson at this
point. If it were an argument for a %GOTO
statement, the terminal punctuation would be a
semicolon rather than a colon. The occurrence
of the colon signifies the declaration of a
label.
2. <condition> ::= IF <condition elements> THEN
[GOTO <label>;]
Note that <label> functions here as an
argument for the GOTO. The label declaration,
consisting of the same label followed by a
colon, must have occurred elsewhere in the
script.
3. <condition elements> ::= <condition element> [
AND | OR <condition elements>]
4. <condition element> ::= <variable> <comparer>
<constant>
5. <comparer> ::= <= | >= | = | #
6. <label> ::= <a string of letters > | <a mixed
string of letters and digits which BEGINS with
a letter> | <one of the GNOSIS predefined
labels.
7. <variable> ::= score | percent | qcount |
lasterrors | lastrights | latepercent |
lastpercent | lastlatepercent | lastscore |
lastlatescore | <user defined variable>
1. "score" = the running total of questions
for which the student had a correct
response on his first try. Note: The
student's final "score" appears in the
<lessonname>.DTA file (if any).
GNOSIS.DOC Page 35
THE GNOSIS COMMAND LANGUAGE
2. "latescore" = the running total of
questions for which the student sooner or
later had a correct response. Note: The
student's final "latescore" appears in the
<lessonname>.DTA (if any).
3. "percent" = the running percentage of
questions for which the student has given a
correct response on his first try. Note:
A Student's final "percent" score is routed
to the <lessonname>.DTA file (if any).
4. "qcount" = the running total of questions
which has been put to the student. Note:
The final "qcount" is routed to the
<lessonname>.DTA file (if any).
5. "lasterrors" = the number of wrong
responses which the student gave to the
previous question.
6. "lastrights" = the number of right
responses which the student gave to the
previous question. Obviously, the value of
"lastrights" will be either 0 or 1.
7. "latepercent" = the percentage of questions
answered correctly by the student since the
start of the lesson whether the student was
correct on the first try or not. A
student's final "latepercent" score is
routed to the <lessonname>.DTA file (if
any).
8. "lastpercent" = the percentage of questions
answered correctly on the very first try
since the previous "lastpercent" was
evaluated.
9. "lastlatepercent" = the percentage of
questions answered correctly (whether on
the first try to afterward) since the
previous "lastlatepercent" was evaluated.
10. "lastscore" = the number of questions
answered correctly on the very first try
since the previous "lastscore" was
evaluated.
11. "lastlatescore" = the number of questions
answere correctly by the student (whether
on the first try or not) since the previous
"lastlatescore" was evaluated.
GNOSIS.DOC Page 36
THE GNOSIS COMMAND LANGUAGE
Attaching a label to a block of text allows
the teacher to program a jump to that block from
from other parts of a lesson, either conditionally
or unconditionally. Usually, however, one of the
previous eleven variables is used so that the
branch is dependent on the evaluation of that
variable:
%TEXT text1:
...
%TEXT IF score < 5 THEN GOTO text1; text2:
Unless %LOCK is in effect, branching based on
"---score" and "qcount" may not have the intended
result. The "---percent" variables will generally
fare better under learner control, so it is wise to
use them in all environments except the %LOCK
environment.
Important: Not all words are permitted as
labels or variable names. Some are reserved for
other purposes by the GNOSIS system or by ALGOL
itself and others, while not reserved, will have
peculiar effects when used in the GNOSIS script.
To avoid mysterious error messages, especially
while learning the GNOSIS system, you will probably
want to include at least one digit or period (".")
in your labels. (The first character, however,
must be a letter.) Or, if you prefer, you can refer
to the appendix for a list of all words likely to
cause problems.
36. %VARIABLES <one or more lines of ALGOL code>;
This command is used to make standard ALGOL
global variable declarations. %VARIABLES operates
like %ALGOL (see above), except that the code is
written into the lesson at the point that variable
declarations are laid out.
37. %WRONG <possible wrong answer> | <empty>
<optional line(s) of comments>
This command causes GNOSIS to search for an
answer pattern and, if it is found, to consider it
wrong. If a match for the canned answer is found
in the student's response, then the following
happens:
1. The GNOSIS system gives the student one of
several stock messages, all of which have the
effect of providing negative feedback.
GNOSIS.DOC Page 37
THE GNOSIS COMMAND LANGUAGE
2. The text on the optional line(s) following the
%WRONG command (until the next GNOSIS command)
is displayed to the student.
3. If the student is still getting meaningful
help[14] from the program, he is recycled
through the question once more; otherwise,
GNOSIS simulates a correct response (plus
commentary for such a response) and moves on to
the next item of business.
---------------
14. As long as a student is supplying responses
matched by the canned answers following the answer pattern
commands (i.e., %RIGHT, %WRONG and %LACK [and %NEUTRAL if
followed by "%GOTO repeat;"]), then he will be recycled
through the question. If he does NOT supply a response
which matches any of these, then he will be recycled through
the question once for each "%WRONG <empty>" pattern. That
is, the number of "%WRONG <empty>" commands determines the
number of times a student giving unanticipated (i.e.,
unmatched) responses will be recycled through the question.
If there are 'n' "%WRONG <empty>" commands for the question,
then 'n + 1' unanticipated responses will force GNOSIS to
simulate a correct response.
GNOSIS.DOC Page 38
GNOSIS TWO-PAGE SUMMARY
4.0 GNOSIS TWO-PAGE SUMMARY
NOTE
Some command lines MUST be terminated by a
semicolon. Where a semicolon may or may
not be required, a "[;]" appears in the
command schema. The "|" separates
alternatives, one of which must be chosen.
1. %ALGOL <one or more lines of ALGOL code>;
2. %BELL <empty>
3. %COPYRIGHT <one-line copyright notice>
4. %DISK <empty>
5. %END <empty>
6. %EXTRA <empty>
7. %FINISH <empty>
8. %HELP <unique one-word designation for help text>
<one or more lines of help text>
9. %IF <switchname>
10. %IFEND <switchname>
11. %IFNOT <switchname>
12. %INITIALIZE <one or more line of ALGOL code>;
13. %JUSTIFY <empty>
14. %KEEP <empty>
15. %LACK <element(s) likely to be missing from answer>
<optional line(s) of comments>
16. %LANGUAGE Swedish | English
17. %LOCK <empty>
18. %NAME <empty>
GNOSIS.DOC Page 39
GNOSIS TWO-PAGE SUMMARY
19. %NEUTRAL <an answer not right or wrong> | <empty>
<optional line(s) of comments>
20. %NEXTLESSON run("<lessonname>");|r("<lessonname>");
21. %NOCONTROLC <empty>
[Partially Implemented]
22. %NOEXTRA <empty>
23. %NOJUSTIFY <empty>
24. %NOORDER <empty>
25. %ORDER <empty>
26. %PROCEDURE <one or more lines of ALGOL code>;
27. %QEND <one line of ALGOL code>[;] | <empty>
28. %QUESTION <one line of ALGOL code>[;] | <empty>
<question to be displayed -- one or more lines>
29. %RIGHT <a possible right answer>
<optional line(s) of comments>
30. %SAME <empty>
31. %SGNOSIS <empty>
32. %SWITCH <switchname> TRUE | <switchname> FALSE
33. %TEACHER <line with teacher's name, etc.> | <empty>
34. %TEXT <one line of ALGOL code>[;] | <empty>
<text to be displayed -- one or more lines>
35. %VARIABLES <one or more lines of ALGOL code>;
36. %WRONG <possible wrong answer> | <empty>
<optional line(s) of comments>
GNOSIS.DOC Page 40
PRECEDENCE TABLE FOR GNOSIS COMMANDS
5.0 PRECEDENCE TABLE FOR GNOSIS COMMANDS
============================================================
PRECEDENCE COMMAND COMMENT
============================================================
0 %ALGOL Use of these commands is
0 %EXTRA unrestricted. They may go
0 %GOTO anywhere in the lesson.
0 %IF
0 %IFEND However, the %SWITCH
0 %IFNOT command must precede
0 %JUSTIFY %IFs, %IFENDs and %IFNOTs.
0 %NOEXTRA
0 %NOJUSTIFY
0 %NOORDER
0 %ORDER
------------------------------------------------------------
1 %BELL These commands (if used)
1 %COPYRIGHT must precede all those > 1.
1 %DISK (also %DSK or %DISC)
1 %KEEP
1 %LANGUAGE
1 %LOCK
1 %NAME
1 %NEXTLESSON
1 %NOCONTROLC
1 %SGNOSIS
1 %SWITCH
1 %TEACHER
------------------------------------------------------------
2 %VARIABLES This command (if used)
must precede all those > 2.
------------------------------------------------------------
3 %HELP These commands (if used)
3 %PROCEDURE must precede all those > 3.
------------------------------------------------------------
4 %INITIALIZE This command (if used)
must precede all those > 4.
------------------------------------------------------------
5 %LACK These commands (if used)
5 %NEUTRAL must precede all those > 5.
5 %QEND
5 %QUESTION After %QUESTION, %RIGHTs
5 %RIGHT precede %WRONGs (or %LACKs).
5 %SAME %NEUTRALs can go anywhere.
5 %TEXT <empty> patterns should
5 %WRONG appear last.
------------------------------------------------------------
6 %FINISH This command (if used) must
precede only the %END.
------------------------------------------------------------
7 %END This command must be last.
============================================================
GNOSIS.DOC Page 41
PRECEDENCE TABLE FOR GNOSIS COMMANDS
While GNOSIS does some rudimentary checking for errors
in precedence, it will accept some contextually awkward
orderings of the answer pattern commands. For example,
GNOSIS will accept %NEUTRAL at any point after %QUESTION
even though, in the context of the lesson, that occurrence
of %NEUTRAL may have unintended effects.
GNOSIS.DOC Page 42
ERROR DIAGNOSIS AND RECOVERY
*
6.0 ERROR DIAGNOSIS AND RECOVERY
6.1 GNOSIS Translator Messages
A complete list of all the messages associated with
GNOSIS error diagnostics follows below. Obviously, those
called "errors" are more serious than the "warnings."
Regardless of the severity of the error, however, GNOSIS
will try to recover and produce a program legal in ALGOL.
(Note: The program, even if legal, may behave very
strangely.) Thus, translation will continue despite user
error.
When a troublesome line is encountered by GNOSIS,
several things happen in succession: (a) the offending line
is displayed, (b) the appropriate error or warning message
is displayed, (c) a four-digit number is displayed with this
message, corresponding to the line number in the GNOSIS
source program (GNOSIS.ALG) which called the error
procedure, (d) the next three lines of the lesson script are
displayed for the sake of context, and (e) GNOSIS attempts
to recover from the error and continues translating. If the
lesson script contained no line numbers, then approximate
line numbers are generated and displayed with the lesson
lines. Otherwise, the line numbers in the lesson script
will be displayed.
In the context of the occurrence of the mistake, all of
these messages should prove to be self-explanatory.
6.1.1 GNOSIS Error Messages -
1. No switchname in %IF-class command. Line will be
ignored.
2. Unknown switchname in %IF-class command. Line will
be ignored.
GNOSIS.DOC Page 43
ERROR DIAGNOSIS AND RECOVERY
3. Unrecognized command line found. As a result, this
line up to next command line will be ignored.
4. A command line is required at this point. As a
result this line up to next command line will be
ignored.
5. Command is out of place here. As a result, this
line up to next command line will be ignored.
6. No previous comment available. Command will be
ignored.
7. No switchname in %SWITCH command. Line will be
ignored.
8. More than 9 switches not allowed. THIS switch will
replace the old number nine.
9. Switch value neither "TRUE" nor "FALSE". The
effect of this error is undefined.
10. Expected answers must precede first empty answer
pattern. Command will be ignored.
6.1.2 GNOSIS Warning Messages -
1. Long input line will be truncated to 132
characters.
2. Character after line-number is not TAB.
3. Command character not first in line.
4. %IFEND on non-active switch -- will have no effect.
5. Semicolon omitted at end of "%GOTO" command.
GNOSIS will supply one for you.
6. You are not using "%" as a command indicator.
7. Unknown language. GNOSIS will default to English.
8. This switch is doubly defined.
9. Ignore this message if you have created
<lessonname>.DTA<155> and <lessonname>.SRT<155>
files to receive teacher reports.
GNOSIS.DOC Page 44
ERROR DIAGNOSIS AND RECOVERY
10. Ignore this message if you meant to omit teacher's
name and address.
6.2 ALGRTS (ALGOL Run-time System) Messages
After these errors, GNOSIS will enter a debugging mode.
Unless the user is familiar with the operation of ALGDDT, he
should CTRL-C out of the program at this point and rerun
GNOSIS.
1. ?Run-time error at address <number>
File DSK:<filename> not available or rename failure
The file GNOSIS tried to open and translate
does not exist.
2. ?Run-time error at address <number>
Attempt to read or write over end-of-file on
DSK:<lessonname>
A %END command was not used to end the lesson
GNOSIS was translating.
6.3 ALGOL Compiler Error Messages
Certain errors may occur when the TRANSLATED lesson
(i.e., <lessonname>.ALG) is submitted to the ALGOL compiler.
These errors are varied and mysterious -- at least, to those
unfamiliar with the ALGOL programming language. When you
try to identify the source of these errors in your lesson
script, you should concentrate on those portions which are
ALGOL-like. These include the code following %ALGOL,
%PROCEDURE, %VARIABLES and %INITIALIZE commands. The short
ALGOL sequences after %QUESTION, %TEXT and %QEND are also
suspect.
It is impossible to generalize about these error
messages. However, the following checklist should prove
helpful:
1. [ ]Did you use a semicolon at the end of the code
following %ALGOL, %INITIALIZE, %NEXTLESSON,
%PROCEDURE, and %VARIABLES commands?
A semicolon is ALWAYS required as
end-punctuation in these cases. In addition, a
semicolon MAY be required after %QUESTION, %TEXT
and %QEND commands if short ALGOL segments follow
GNOSIS.DOC Page 45
ERROR DIAGNOSIS AND RECOVERY
them. Not all ALGOL segments require the semicolon
as end-punctuation, however (e.g., "%TEXT IF
lasterrors > 3 THEN").
2. [ ]Did you avoid the left and right square bracket,
the doublequote and the semicolon in lesson
segments within the scope of %JUSTIFY?
The only ALGOL carriage-control command that
can safely be used inside the scope of %JUSTIFY is
"[T]", for tabbing.
3. [ ]Does a colon follow your labels?
Except when you are using a label as an
argument for a %GOTO command, the label should be
followed immediately by a colon.
4. [ ]Does a "%GOTO <label>;" attempt a jump to a
non-existent label?
Perhaps you deleted a label without deleting
all the %GOTO commands which had that label as an
argument.
5. [ ]Did you try to use a reserved word or standard
identifier as a label?
A list of illegal labels (i.e., reserved words
and standard identifiers) is given in an appendix.
You can always avoid errors of this kind by using a
number of period in your labels. (The first
character of a label, however, must be a letter.)
GNOSIS.DOC Page 46
WRITING ALGOL SEGMENTS INTO YOUR LESSON
*
7.0 WRITING ALGOL SEGMENTS INTO YOUR LESSON
One of the great advantages of GNOSIS compared to all
other CAI author languages is that, in GNOSIS, the lesson
designer can use the facilities of ALGOL whenever he
pleases. In the usual case, he will be tapping these
facilities through the %ALGOL, %VARIABLES, %PROCEDURE,
%INITIALIZE and %FINISH commands. Generally speaking,
anything which an ALGOL programmer could do in a standard
ALGOL program he can also do in the GNOSIS lesson script.
This includes calling up external FORTRAN routines[15] to
generate graphics, external MACRO routines to improve
efficiency, and so on.
In addition, the programmer may want to write segments
of ALGOL code which extend GNOSIS in certain ways. To make
it easier to interface this code with the lesson, some of
the variables and all of the procedures used in GNOSIS
lessons are described below. In addition to the items
discussed, the user who wants to take advantage of standard
features should recall that standard labels exist within the
lesson. See the discussion of these in connection with the
explanation of the %GOTO command, above.
7.1 Standard Variables And Procedures
---------------
15. See "Creating Procedures," below, section 7.3 for
further information about calling external FORTRAN routines.
GNOSIS.DOC Page 47
WRITING ALGOL SEGMENTS INTO YOUR LESSON
7.1.1 GNOSIS Variables -
1. Name: "answercopy"
Type: STRING
This variable contains the last student
response input by GNOSIS. Thus "%ALGOL
Write(answercopy);Newline;" causes that response to
be echoed on the terminal exactly as the student
typed it.
2. Name: "firstname"
Type: STRING
This variable contains (%NAME mode only) the
first name of the student. Thus
%ALGOL IF percent > 90 THEN
personalize("Nice goin'!");
Newline;
will, under the proper circumstances, cause "Nice
goin', HARRY!" to be typed out on the terminal
(assuming the student's first name was Harry).
This effect occurs because the procedure
"personalize" uses the value of "firstname" now and
then at the tail end of string constants it writes
to the student.
3. Name: "right[0]" ... "right[9]"
"wrong[0]" ... "wrong[9]"
Type: STRING ARRAYs
If you want some offbeat language to be used
when the student gets a question right, you could
use following lines:
...
%INITIALIZE
right[0]:= "Right on!";
right[1]:= "Terrific!";
right[2]:= "Congratulations!";
...
Similar redefinitions of the stock comments for
wrong responses could also be entered, e.g.,
...
%INITIALIZE
wrong[0]:= "Shame on you!";
wrong[1]:= "You blew it.";
GNOSIS.DOC Page 48
WRITING ALGOL SEGMENTS INTO YOUR LESSON
wrong[2]:= "Not even close.";
...
4. Names: "lasterrors"
"lastrights"
"score"
"latescore"
"qcount"
"lastqcount"
"lastqkount"
"lastscorecount",
"lastlatescorecount"
"lastscorekount"
"lastlatescorekount"
Type: INTEGER
See the discussion of these variables in
connection with the explanation of the %TEXT
command above.
7.1.2 GNOSIS Procedures -
1. Name: "getline"
Typeless
"Getline" reads in a line of text input by the
student, dumping it in the STRING "answer". Column
one of the line is checked to see if the student
typed "%", indicating that he wanted to interrupt
the flow of the lesson.
2. Name: "here"
Type: BOOLEAN
Parameter Type: STRING, passed by value
"Here" determines whether the argument string
can be found beginning at "pos" in the student
response. Blanks, but nothing else, may precede
the matching word. "Here" is mostly used for
responses matched in the %NOEXTRA mode.
3. Name: "anywhere"
Type: BOOLEAN
Parameter Type: STRING, passed by value
GNOSIS.DOC Page 49
WRITING ALGOL SEGMENTS INTO YOUR LESSON
"Anywhere" determines whether the argument
string can be found anywhere in the student
response after "pos". Blanks and unmatched strings
will be bypassed. "Anywhere" is used in the %EXTRA
mode and in the %NOEXTRA %NOORDER mode. "Anywhere"
will substitute blanks for all characters in the
matched strings. This allows the program (e.g., in
the %NOEXTRA mode) to determine whether there are
any non-blank characters in the student response.
In the %NOEXTRA mode, his response will be wrong if
any non-blank characters remain.
4. Name: "random"
Type: INTEGER
"Random" is a number generator which gives a
random number between 0 and 9. The generator will
not repeat itself until after 862 generations.[16]
5. Name: "personalize"
Typeless
Parameter Type: STRING, passed by value
"Personalize" uses the student's firstname in
conversational I/O to give a personal touch to the
lessons. To avoid monotony and to further
efficiency, the probability that the message will
be personalized is only .2.
6. Name: "rightmessage"
Typeless
Parameterless
"Rightmessage" is called when a student has
made a correct response. He is told about this,
and the score is updated. The message to the
student is different depending on whether he
succeeds on the fist try or only after previous
fruitless attempts. Random numbers are used to
choose between ten different messages to give some
---------------
16. An external FORTRAN call would have given us this,
but we did not wish to make GNOSIS dependent upon the
PRESENT conventions for external calls in ALGOL. Indeed,
these seem to be changing with each new release. Of course,
if the lesson author uses "%NOCONTROLC" or "%NEXTLESSON"
then GNOSIS does make an external call. However, it is the
FORTRAN interface for these calls which seems to be evolving
most rapidly, not the MACRO interface.
GNOSIS.DOC Page 50
WRITING ALGOL SEGMENTS INTO YOUR LESSON
variation to the conversation.
7. Name: "wrongmessage"
Typeless
Parameterless
"Wrongmessage" is called when a student has
made an erroneous response. He is told about this,
and the lesson statistics are updated. Random
numbers are used to choose between ten different
messages in order provide some variation in the
conversation.
8. Name: "pause"
Typeless
Parameterless
Lesson text is given to the student in small
portions. One reason for this is that it is easier
to read a little at a time. Another reason is that
display terminals have a limited screen size. The
"pause" PROCEDURE produces a pause in the display
of text to the student, and she can continue
whenever she has finished examining the displayed
material. To go on, she simply pushes the "RETURN"
key. Normally, this PROCEDURE is called between
each %TEXT or %QUESTION, but GNOSIS will introduce
ADDITIONAL automatic pause points within large
blocks of text or question material. The teacher
can inhibit pauses BETWEEN "%" commands by
"nopause:= TRUE", but the pauses which GNOSIS
inserts in long text blocks cannot be inhibited.
9. Name: "page"
Typeless
Parameterless
"Page" can be called by the teacher when he
wants to blank the screen on a display terminal).
The effect produced is, of course, terminal
dependent.
10. Name: "extratest"
Typeless
Parameterless
"Extratest" will flag and display those parts
of the student response which WERE matched by the
teacher answer pattern IF the student response
contained extra (i.e., superfluous) characters
GNOSIS.DOC Page 51
WRITING ALGOL SEGMENTS INTO YOUR LESSON
"Extratest" is called automatically for %RIGHT
responses in the %EXTRA mode.
11. Name: "percent"
Type: REAL
Parameterless
"Percent" returns the percentage of questions
answered correctly by the student on his very first
try since the start of the lesson.
12. Name: "latepercent"
Type: REAL
Parameterless
"Latepercent" returns the percentage of
questions answered correctly by the student since
the start of the lesson whether student was correct
on the first try or afterward.
13. Name: "lastscore"
Type: INTEGER
Parameterless
"Lastscore" returns the number of questions
answered correctly on the very first try since this
PROCEDURE was last called.
14. Name: "lastlatescore"
Type: INTEGER
Parameterless
"Lastlatescore" returns the number of
questions answered correctly since this PROCEDURE
was last called whether student was correct on the
very first try or afterward.
15. Name: "lastpercent"
Type: REAL
Parameterless
"Lastpercent" returns the percentage of
questions answered correctly on the very first try
since this PROCEDURE was last called.
16. Name: "lastlatepercent"
Type: REAL
Parameterless
GNOSIS.DOC Page 52
WRITING ALGOL SEGMENTS INTO YOUR LESSON
"Lastlatepercent" returns the percentage of
questions answered correctly since this PROCEDURE
was last called whether student was correct on the
first try or afterward.
17. Name: "putaway"
Typeless
Parameter Type: STRING, passed by value
If the lesson contained a report-generating
command, then unexpected student responses are
written into a pair of reports, <lessonname>.DTA
and <lessonname>.SRT, which the teacher can use to
improve the lesson. "Putaway" writes the
unexpected responses in these files.
18. Name: "putmessage"
Typeless
Parameter Typeless
If no disk files are being generated for
teacher reports, "Putmessage" will tell the student
to send hardcopy reports to the teacher -- unless
no teacher's name and address was supplied with
%TEACHER command)
19. Name: "tryagain"
Typeless
Parameterless
Questions output to students who give no
response, a wrong response, or an incomplete
response are usually repeated by GNOSIS.
"Tryagain" will output to such students a "try
again" message which varies according to
circumstances. In %NEUTRAL mode, the message will
always be "Please try again". Otherwise, the
content of the message depends on the number of
times the student has failed to give a correct
response.
20. Name: "giveanswer"
Typeless
Parameterless
"Giveanswer" displays a right answer to a
student who is skipping the question or who
repeatedly fails to give a right response. The
response given will always be the one following the
FIRST %RIGHT command for the preceding %QUESTION.
GNOSIS.DOC Page 53
WRITING ALGOL SEGMENTS INTO YOUR LESSON
7.2 Creating Variables
A lesson designer will often need extra variables. In
GNOSIS, these are extremely easy to declare, initialize and
use. For example, if it is important to know how well a
student is doing on each part of a lesson, then the author
can proceed as follows:
...
%VARIABLES INTEGER firstpartscore, secondpartscore;
...
%INITIALIZE firstpartscore:= secondpartscore:= 0;
...
%QUESTION
!Last question in first part of lesson
...
%QEND firstpartscore:= score;
%QUESTION IF firstpartscore > 9 THEN
You are doing very well so far. Would you
like to skip the rest of the lesson?
%NEUTRAL yes
%GOTO endoflesson;
%NEUTRAL no
!"GOTO next;" is the default.
%NEUTRAL
Please answer 'yes' or 'no'.
%GOTO repeat;
...
%QUESTION
!Last question in second part of lesson
...
%QEND secondpartscore:= score - firstpartscore;
%ALGOL IF secondpartscore > firstpartscore THEN
BEGIN
Write("You did better in the second part, ");
IF firstname = "" THEN Write("SOCRATES") ELSE
Write(firstname);
Write("!");
Newline
END;
More commonly, the lesson author will want to declare a
whole array of variables, e.g.,
...
%VARIABLES INTEGER ARRAY partscores[1:10];
...
%INITIALIZE
BEGIN
INTEGER i;
FOR i:= 1 STEP 1 UNTIL 10 DO partscores[i]:= 0
END;
GNOSIS.DOC Page 54
WRITING ALGOL SEGMENTS INTO YOUR LESSON
7.3 Creating Procedures
ALGOL procedures are easy to insert in the lesson
script and easy to call, e.g.,
...
%PROCEDURE PROCEDURE echoinput;
BEGIN
Write("Your last response, as 'seen' ");
Write("by the program was:");
Newline;
Write(answercopy);
Newline;
Write("That was not one of the choices.");
Newline
END;
...
%QUESTION
...
!Allowable responses to this question were
!A, B, C or D. One of these was right and
!the other three were wrong. The student
!typed X, thus matching none of the above.
!His response shouldn't be counted wrong,
!so we proceed to trap it as follows.
%NEUTRAL
%ALGOL echoinput;
%GOTO repeat;
!GNOSIS defaults to "GOTO next" after %NEUTRAL
...
External procedures can be declared and used too, of
course.
FORTRAN subroutines may easily be incorporated in the
GNOSIS lesson script, e.g.,
...
%PROCEDURE EXTERNAL FORTRAN PROCEDURE foo(x, y);
INTEGER x, y;
...
Having been declared, "foo" can then can then be called by
use of the ALGOL library procedure CALL (for typeless
routines). Type procedures can be invoked by ICALL (for
INTEGER routines), RCALL (for REAL routines), DCALL (for
LONG REAL or double-precision routines), and LCALL (for
BOOLEAN or logical routines). The first parameter in these
procedure calls must be the name of the FORTRAN subroutine.
Subsequent parameters are taken as the arguments to the
procedure (e.g., "CALL (foo, x, y);" which would be
equivalent to "CALL foo(x, y)" in a FORTRAN program).
GNOSIS.DOC Page 55
WRITING ALGOL SEGMENTS INTO YOUR LESSON
The FORTRAN interface routines were extensively
rewritten for Version 10 of ALGOL. The major new feature is
that arrays (of any dimension) can now be passed. In fact,
all of the restrictions on parameters have been removed,
except that strings may not be passed. Note too that, in
Version 10, the name of the FORTRAN routine must be
specified by type in the external declaration (unless, of
course, it is typeless).
GNOSIS.DOC Page 56
WRITING GNOSIS LESSONS
*
8.0 WRITING GNOSIS LESSONS
Some of those new to CAI can easily envision whole
curricula running on computers. This is STRICTLY visionary,
however, unless (1) the machine is totally dedicated to
computer-assisted instruction and (2) a team-management
approach is taken to the authorship and testing of CAI
software. Beyond this, there are at least two additional
complications: (1) curriculum organization and content may
change before the software is ready and (2) changes in
associated software and hardware may dictate a change in
approach.
For these reasons, I suggest that you set for yourself
the more attainable goal of, say, computerizing the exercise
material in the textbook you currently use. Those of us who
teach skill-oriented courses would probably LIKE to be able
to assign, grade and return to students (with full
diagnostic commentary, naturally) all of the exercises
included in our textbooks. But time does not -- or, rather,
DID not -- afford us this luxury. With GNOSIS this is no
longer an impossible dream. In a moment, I will explain how
I have achieved this objective with my GNOSIS courseware.
First, I want to review for you the different types of
presentations available to you through the %QUESTION
command.
8.1 Question Types
1. A CONSTRUCTED RESPONSE item results from an
open-ended use of the %QUESTION command, e.g.,
...
%QUESTION
What is the principal effect of electrolysis
on marine hardware?
%RIGHT ...
GNOSIS.DOC Page 57
WRITING GNOSIS LESSONS
Note that such a question allows a FREE-FORM response, and
many different responses probably should be considered
correct.
The task of the lesson designer is to anticipate all of
the frequently recurring right and wrong responses and, for
each response, to provide feedback tailored to that
response. Otherwise the program will appear to be arbitrary
and dumb. Even if your lesson is born acting like an idiot,
there is no reason why it should continue to do so if you
make full and appropriate use of the information in the
".SRT" file. So, I advise you to study that file carefully
in the early stages, PARTICULARLY if you use constructed
response items. In addition, make sure such questions do
not permit myriads of correct responses. Ask for a short
response or, better still, word your question in such a way
that a single word or short response will satisfy it.
2. A COMPLETION item results when %QUESTION presents
to the student a fill-in-the-blank(s) problem, e.g.,
...
%QUESTION
Electrolysis causes marine hardware to
become __________________.
...
The lesson author may use only one blank, as above, or he
may leave a whole series of blanks for the student to
complete. Of course, if the order in which the responses
are given is important, then %ORDER must be in effect before
the %QUESTION command is used to deliver the item to the
student. As before, the ".SRT" file should be studied
carefully.
3. A MATCHING item presents the student with the
problem of pairing items belonging in one list with items
belong in another. It is the most natural way to teach
closely related material since the format permits many
distinctions to be taught at once.
Matching questions present the lesson author with a
considerable burden, however. The total number of ways two
lists can be paired will be statistically large, yet he must
anticipate the most likely right and wrong parings,
providing commentary for each case. This task is made
easier if the student is directed to attempt one match at a
time. The most efficient way to accomplish this in GNOSIS
is to make the list itself a %HELP routine, e.g.,
...
%NOJUSTIFY
%HELP list1
(1) <item> (a) <item>
GNOSIS.DOC Page 58
WRITING GNOSIS LESSONS
(2) <item> (b) <item>
...
%JUSTIFY
...
%QUESTION
What matches item '(2)'? (Type 'help' to see
the list again.)
%NEUTRAL help
%ALGOL list1;
%GOTO repeat;
%RIGHT ...
As before, you have the task of anticipating all likely
mismatches and of writing diagnostic commentary to follow
those %WRONG commands. Incidentally, the number of possible
choices (in the selection column) should be greater than the
number of items to be matched. As always, the ".SRT" file
is a gold mine of ideas.
In the next release of GNOSIS, we expect to have a
%MATCH command ready. When used, %MATCH would format the
matching question, manage re-display of the list as
necessary, and generate appropriate feedback based on the
degree to which the student response was correct.
4. A RANKING item results when the author presents the
learner with the problem of ordering a list according to
some criterion (e.g., better to worse, light to heavy, in
time order, and so on).
As with matching items, if you decide to let the
student assign a rank to each item in the list separately,
in response to a question about that specific item, then you
will have to make use of the %HELP feature to avoid having
to retype the list for each new %QUESTION. Of course, you
could ask the student for the entire rank-sequence as a
single response but, even with lists of five or six items,
that technique greatly complicates the problem of
anticipating what that response will be. Longer comments
are also required if you choose the simultaneous answer
route. (In the next release of GNOSIS, we hope to have a
%RANK command ready to simplify this part of the lesson
design.)
5. MULTIPLE-CHOICE items are already familiar to you.
Research shows three to five choices per item are best.
And, if you select the choices empirically, based on your
knowledge of likely student misconceptions and confusions,
then the diagnostic comments you build into %WRONG patterns
will be supremely enlightening. Also, multiple-choice items
are the best items to present to unskilled typists since
responses other than the 3-5 standard choices can be trapped
by putting
GNOSIS.DOC Page 59
WRITING GNOSIS LESSONS
...
%NEUTRAL
The choices open to you are 'A', 'B', 'C' or 'D'.
%GOTO repeat;
...
after the comment for the last %WRONG command. Use of the
"%NEUTRAL <empty>" trap rules out subsequent use of "%WRONG
<empty>", of course, since the first <empty> pattern matches
any response not matched above it.
Note too that if more than one alternative must be
listed in order for the student's response to be considered
correct (e.g., "A, B"), then it is easy to trap partially
correct responses with sequences like
...
%NOEXTRA
%RIGHT a b
<comment>
%RIGHT a , b
%SAME
%EXTRA
%NEUTRAL a
'A' is ONE of the correct responses!
%GOTO repeat;
%NEUTRAL b
'B' is ONE of the correct responses!
%GOTO repeat;
...
THIS OBVIATES THE NEED for second-order choices like "none
of the above," "two of the above," "all of the above," etc.
If you continue to use such choices, you are not realizing
the power of computer-assisted instruction!
Your multiple-choice items will discriminate better if
you are careful to construct the choices in parallel, using
the same grammatical structure in each, and so on. A useful
fudge is to ask for the single response which "best
satisfies" the demands of the question.
6. The TRUE/FALSE item is really a degenerate kind of
multiple-choice item. So much of what is said above also
applies here. I use such items sparingly, usually to break
up what would otherwise be a sterile series of text blocks.
True/false (or agree/disagree, yes/no, etc.) items do not
have great pedagogic value, but they provide variety and
they do demand an active response of some kind from the
student.
GNOSIS.DOC Page 60
WRITING GNOSIS LESSONS
8.2 Lesson-generated Diagnostic Profiles
A computerized textbook exercise would use a variety of
the question types discussed above. In addition, it is easy
to extend the lesson in such a way that it provides a
complete diagnostic profile for each student.
Let us suppose that the curriculum is broken down into
units of study, and that there are behavioral objectives for
each unit. Let us also suppose that one chapter of the
associated textbook corresponds to one unit of study. Given
this common arrangement of curriculum, a powerful GNOSIS
program could be designed as sketched below. To make the
example as concrete as possible, let us suppose that this
program is for UNIT1, that UNIT1 has 5 behavioral objectives
associated with it, and that it covers pages 33-55 of the
textbook.
...
%VARIABLES INTEGER ARRAY pages[33:55],
objectives[1:5];
...
%PROCEDURE PROCEDURE updatepages(n, m);
INTEGER n, m;
BEGIN
INTEGER i;
IF lasterrors > 0 THEN
FOR i:= n STEP 1 UNTIL m DO
PAGES[i]:= pages[i] + lasterrors
END;
%PROCEDURE PROCEDURE updateobj(n);
INTEGER n;
BEGIN
objectives[n]:= objectives[n] + lasterrors
END;
...
%PROCEDURE PROCEDURE profileobj(channel);
INTEGER channel;
BEGIN
INTEGER i, j;
Selectoutput(channel);
Newline;
Newline;
FOR i:= 1 STEP 1 UNTIL 5 DO
BEGIN
Write("OBJECTIVE No. ");
Print(i,3);
Write(": ");
For j:= 1 STEP 1 UNTIL objectives[i] DO
Write("*");
Newline
END;
Selectoutput(0)
GNOSIS.DOC Page 61
WRITING GNOSIS LESSONS
END of PR*CEDURE profileobj;
%PROCEDURE PROCEDURE profilepages(channel);
INTEGER channel;
BEGIN
INTEGER i, j;
Selectoutput(channel);
Newline;
Newline;
FOR i:= 33 STEP 1 UNTIL 55 DO
BEGIN
Write("Page ");
Print(i,3);
Write(": ");
FOR j:= 1 STEP 1 UNTIL pages[i] DO
Write("*");
Newline
END;
Selectoutput(0)
END of PR*CEDURE profilepages;
%INITIALIZE
BEGIN
INTEGER i;
FOR i:= 1 STEP 1 UNTIL 5 DO
objectives[i]:= 0;
FOR i:= 33 STEP 1 UNTIL 55 DO
pages[i]:= 0
END;
...
%QUESTION
!This question tests mastery of objective 3 and 4.
!Pages 33-36 and 40-41 in the text are relevant
!to good performance on this objective
...
%QEND updatepages(33, 36); updateobj(3);
%ALGOL updatepages(40, 41); updateobj(4);
!Do a similar thing for each question.
...
%FINISH
%ALGOL
Write("A diagnostic profile for you follows.);
Write("The objectives followed by the most");
Write("asterisks are causing you the most");
Write("difficulty:");
profileobj(0);
!The TTY is open on channel 0
profileobj(2);
!<lessonname>.DTA is open on channel 2
pause;
Write("You could benefit most from a review");
Write("of the page numbers followed by the");
Write("most asterisks:");
profileobj(0);
GNOSIS.DOC Page 62
WRITING GNOSIS LESSONS
profileobj(2);
%END
...
The kind of diagnosis provided by the GNOSIS segment
given above proves INVALUABLE to students. It, together
with the routine diagnostic comments in the lesson itself,
should gain for the student all the advantages he might have
had if you had spent several hours pouring over his
homework. And he didn't even have to wait!
8.3 Some Advice[17]
1. Allow the high-achieving student to CHOOSE whether
to be branched ahead. If you make it automatic, you deprive
him of a unique kind of positive reinforcement.
2. Always make your commentary a complete one, even
for %RIGHT commands. We cannot assume that, just because
the student got the question right, that he now is in full
command of the concept.
3. Let your personality, your sense of humor and
irony, your colloquialisms be reflected in the lesson. The
machine won't stand between you and the student unless you
are dullard enough to let it.
4. The flow of instruction between %TEXT and %QUESTION
blocks is important. After pauses, preserve continuity by
using phrases like "The last item should have you thinking
about...."
5. GNOSIS breaks up text material for display purposes
only. You should further break the monotony of long
sessions of text reading by asking questions -- even trivial
TRUE/FALSE questions.
6. Use the student's own response in preparing your
commentary. You will know what it is most of the time; it
will be the argument given for the current answer pattern
command. Even in the worst case (%WRONG <empty>) you will
still know what responses were NOT made.
---------------
17. Some of the following is adapted from Jeanne L.
Burson, THE AUTHOR'S GUIDE TO CAI: DEVELOPMENT (Columbus,
Ohio: Ohio State University, Division of Computing Services
for Medical Education and Research, 1976), pp. 161-163.
GNOSIS.DOC Page 63
WRITING GNOSIS LESSONS
7. Relate your comments as closely as possible to the
student's response. Avoid %SAME unless the identical
comment really will do the job.
8. Aim to provide diagnostic commentary for EVERY
%WRONG, %RIGHT, %LACK and %NEUTRAL answer pattern command.
9. Unless the question is a TRUE/FALSE item or you are
using "%NEUTRAL <empty>" to trap responses that fall outside
a predefined set (e.g., the choices associated with a
multiple-choice item), you should always include one or more
"%WRONG <empty>" commands. It's the only way the
unanticipated responses will ever find their way into the
teacher reports.
10. Provide commentary even for "%WRONG <empty>"
commands. Supply hints if nothing else comes to mind.
NEVER LEAVE THE STUDENT HANGING!
11. Let the student know approximately how long the
program is and, occasionally, how much of the program is
left. This could be a time estimate or, if that is too
difficult to gauge, an estimate of the number of questions
he is likely to encounter. If the lesson has obvious
breaks, say, "If you have to quit soon, this would be a good
stopping point."
12. Watch a dozen students run your lesson before you
unleash it on the remainder of the student body. Ask them
to tell you what makes them uncomfortable.
13. Review the teacher report files frequently,
especially in the early stages. After you have extensively
modified a lesson, delete and recreate the ".SRT" file so
that the new data will not be confused with the old.
14. Remember that the program portrays YOUR
personality, not that of the hardware. If it is dull and
uninteresting, redundant and confusing, it can only be
because YOU are all of these things. Perk up! Interact!
GNOSIS.DOC Page 64
RUNNING GNOSIS
*
9.0 RUNNING GNOSIS
Let's assume you have written a lesson called BIRD.GNO.
Assuming the GNOSIS.MIC and GNOLIB.REL files exist in "MIC:"
and "SYS:" respectively, then all you need to do is type
DO GNOSIS BIRD
after the period prompt provided by the monitor. If this
doesn't work, try
DO SYS:GNOSIS BIRD
If that fails, then you will have to proceed as follows.
First you will run GNOSIS to translate the lesson.
Then, if all is well, you will run ALGOL to compile it.
Then, if all remains satisfactory, you will save the lesson.
Don't forget to create BIRD.SRT and BIRD.DTA files in the
student account when these are required by the program.
(GNOSIS will warn you about this.) In exhaustive detail,
then, the procedure is as follows:
1. Type "R GNOSIS<CR><LF>" after the monitor period
prompt.
GNOSIS will begin to execute, asking you for
the name of the lesson to be translated. GNOSIS
will prompt you with a "-->".
2. Type "BIRD<CR><LF>" after the "-->" prompt.
GNOSIS defaults to the ".GNO" extension and
begins translation. If the lesson has another
extension, then you should not allow GNOSIS to
default to ".GNO" but rather type in the complete
file description, including extension. If all is
well, you will continue with the next step.
GNOSIS.DOC Page 65
RUNNING GNOSIS
3. Type "<CR><LF>" after GNOSIS reprompts with the
"-->".
This causes GNOSIS to exit.
4. Type "LOAD BIRD.ALG, SYS:GNOLIB.REL<CR><LF>" after
the monitor period prompt.
The ALGOL compiler will be called into action
and will prepare a machine readable version of your
lesson and name it "BIRD.REL." (You can omit the
"..., SYS:GNOLIB.REL ..." part of the load command
if you did not use the %NEXTLESSON or %NOCONTROLC
commands in your lesson. Of course, if for some
reason you are unable to access the GNOLIB.REL
file, you will have no choice but to avoid these
two commands.)
If all seems to be in order, you will want to
run your lesson to be sure it performs as desired.
5. After the monitor period prompt, type
"START<CR><LF>" or, when that doesn't work, "EXE
BIRD.REL<CR><LF>".
If the lesson is bug free, you will want to
prepare a production (i.e., smaller, faster)
version of it and save that version. It would be
wise, however, to try BIRD on at least three or
four "real students" before you proceed past this
stage.
Note: If the lesson requires ".DTA" and
".SRT" files, it will not run to completion without
these files. Instead, at lesson exit, the ALGOL
run-time system will generate an error message.
You can ignore this for now, using CTRL-C's to exit
from ALGDDT. But -- notice -- these files must
exist in the student account before the lesson is
run.
6. Type "R ALGOL<CR><LF>" after the monitor period
prompt.
ALGOL will respond with a "*" prompt when
ready.
7. After the "*" prompt, type
"BIRD.REL=BIRD.ALG/NOSYMBOLS/PRODUCTION<CR><LF>".
If there are no errors, ALGOL will type "No
errors" and reprompt with a "*".
GNOSIS.DOC Page 66
RUNNING GNOSIS
8. Type a CTRL-Z after this "*".
This causes an exit from ALGOL.
9. When the monitor period prompt returns, type "LOAD
BIRD.REL, SYS:GNOLIB.REL<CR><LF>".
This will load the production version of the
lesson. As before, the part after "BIRD.REL" is
necessary only if you used the %NEXTLESSON or
%NOCONTROLC command in BIRD.GNO.
10. Type "OSAVE<CR><LF>" after the period prompt.
The monitor will reply "BIRD saved".
11. Congratulate yourself.
Forever after, it is only necessary to type "RUN BIRD" to
run the lesson.
GNOSIS.DOC Page 67
SETTING UP STUDENT ACCOUNTS
*
10.0 SETTING UP STUDENT ACCOUNTS
For security reasons, you will probably NOT want to
keep the ".SAV" version of your lessons in a student account
where, among other things, they could be accidentally
deleted. Store them, therefore, in YOUR account and
establish a separate account for students. Of course, you
will still have to deposit any required ".DTA" and ".SRT"
files in the STUDENT account with a protection of <155>.
(At present, there is no way to provide better security for
the teacher reports.) In addition, in the student account,
create a "SWITCH.INI" file which (at least) has this line in
it:
LOGIN/LIB:[<YOUR project-programmer number>]
This will establish your account as the library for the
student account. Students will thereafter be able to run
the lessons with the simple command string "RUN <lessonname
without extension>". A typical SWITCH.INI file for a
student account would look like this:
LOGIN/FORM
LOGIN/NOCRLF
LOGIN/LC
LOGIN/FILL:0
LOGIN/ECHO
LOGIN/WIDTH:132
LOGIN/PAGE
LOGIN/LIB:[<account number>]
LOGIN/RUN:LIB:MASTER
The first seven switches set TTY parameters, the eighth
establishes the teacher's account as the library, and the
ninth runs a program out of the teacher's account,
"MASTER.SAV", which could (for example)
GNOSIS.DOC Page 68
SETTING UP STUDENT ACCOUNTS
1. deliver a message from you to the student;
2. tell him which lessons are available; and
3. run the lesson of his choice.
The code for the MASTER program could be as follows:
BEGIN
INTEGER i, j;
EXTERNAL PROCEDURE run;
COMMENT: Load with GNOLIB.REL;
BOOLEAN PROCEDURE endoffile;
endoffile:= (i = "/".[1] AND j = "*".[1]);
PROCEDURE readandwrite(channel, file);
INTEGER channel;
STRING file;
BEGIN
i:= j:= 0;
Openfile(channel, file);
Selectinput(channel);
WHILE NOT endoffile DO
BEGIN
Insymbol(i);
Nextsymbol(j);
Outsymbol(i)
END;
Closefile(channel);
Selectinput(0)
END;
PROCEDURE Pause;
BEGIN
i:= 0;
Newline;
Newline;
Write("Now push RETURN --> ");
Breakoutput;
WHILE i # 10 DO Insymbol(i)
END;
Input(0, "TTY");
Input(1, "DSK");
readandwrite(1, "NOTICE");
COMMENT: The NOTICE file will contain the
current message-of-the-day from the teacher
to the student. The contents of the NOTICE
file can be changed frequently and MASTER
will display the newest version. The NOTICE
file must end with the character sequence
GNOSIS.DOC Page 69
SETTING UP STUDENT ACCOUNTS
"/*";
Pause;
run("CHOOSE")
COMMENT: Control now passes to the CHOOSE
program. In addition, at the end of each
lesson run, control also passes back to the
CHOOSE program via a "%NEXTLESSON run("CHOOSE")"
command;
END
And the code for the helper program, CHOOSE, could be as
follows:
BEGIN
INTEGER i, j, choice;
EXTERNAL PROCEDURE r, run;
COMMENT: Load with GNOLIB.REL;
BOOLEAN PROCEDURE endoffile;
endoffile:= (i = "/".[1] AND j = "*".[1]);
PROCEDURE readandwrite(channel, file);
INTEGER channel;
STRING file;
BEGIN
i:= j:= 0;
Openfile(channel, file);
Selectinput(channel);
WHILE NOT endoffile DO
BEGIN
Insymbol(i);
Nextsymbol(j);
Outsymbol(i)
END;
Closefile(channel);
Selectinput(0)
END;
SWITCH choose:= one, two, three, four, five;
Input(0, "TTY");
Input(1, "DSK");
readandwrite(1, "LIST");
COMMENT: CHOOSE now reads and writes a
file containing a list of all available
lessons. An integer value is paired with
each lesson. This integer is the option
number for that particular lesson. The
last option number is paired with the
program LOGOUT. The LIST file must end with
the character sequence "/*";
GNOSIS.DOC Page 70
SETTING UP STUDENT ACCOUNTS
repeat:
Write("Enter option NUMBER: ");
Breakoutput;
Read(choice);
GOTO choose[choice];
Newline;
Write("?Option number out-of-range.");
Newline;
GOTO repeat;
one: run("LESON1");
two: run("LESON2");
three: run("LESON3");
four: run("LESON4");
five: r("LOGOUT");
END
Do not forget -- in YOUR account -- to protect <155>
the ".SAV" version of the lessons students will be running
from theirs. You may also wish to write a similar
"SWITCH.INI" file for your account which establishes the
student account as the library for your own. This would
allow you to inspect and print the ".SRT" and ".DTA" files
with simple monitor commands, almost as if they were in your
own account.[18]
Periodically, as the lessons are run by students, you
should sort the ".SRT" files, using the DEC utility program
SORT.[19] Study the sorted file carefully and try to find
ways to improve the lesson design. You will likely discover
alternate right responses for questions you thought had no
other right responses. And you may find that a particular
wrong response occurs so often that either (1) the lesson
should be redesigned so that it does not mislead the student
or (2) the lesson should be modified to include a diagnostic
comment for that recurrent wrong response. In fact, my
experience with GNOSIS lessons is that the real work in
lesson design begins only AFTER students begin to run the
lessons.
---------------
18. It is often necessary that your account and the
student account be located on the same DSK structure, but
this restriction is system-dependent.
19. A MIC program which accomplishes this has been
included in an appendix.
GNOSIS.DOC Page 71
SETTING UP STUDENT ACCOUNTS
In addition, you should probably should print, delete,
and recreate the ".DTA" files from time to time, since they
can become rather large. These, too, can be studied with
profit -- especially, the student comments. I trust most of
these will be favorable but, if not, GNOSIS makes it fairly
easy to identify the parts of the lesson which were giving
students serious trouble.
INDEX OF GNOSIS COMMANDS
'
INDEX OF GNOSIS COMMANDS
%algol . . . . . . . . . . . . 20, 22, 24-25, 30, 32, 36,
38, 44, 46-47
%bell . . . . . . . . . . . . 20, 38
%copyright . . . . . . . . . . 20, 38
%disk . . . . . . . . . . . . 21, 26, 33, 38
%end . . . . . . . . . . . . . 19, 22, 30, 38, 44
%extra . . . . . . . . . . . . 19, 22, 27, 29, 38, 49, 51
%finish . . . . . . . . . . . 22, 38, 46
%goto . . . . . . . . . . . . 19, 22-24, 28, 31-32, 34, 37,
43, 45-46
%help . . . . . . . . . . . . 24-25, 38, 57-58
%if . . . . . . . . . . . . . 24, 32, 38, 42
%ifend . . . . . . . . . . . . 24-25, 32, 38, 43
%ifnot . . . . . . . . . . . . 24-25, 32, 38
%initialize . . . . . . . . . 25, 38, 44, 46
%justify . . . . . . . . . . . 25-26, 29, 38, 45
%keep . . . . . . . . . . . . 21, 26, 38
%lack . . . . . . . . . . . . 23-24, 26-27, 31, 37-38, 63
%language . . . . . . . . . . 27, 38
%lock . . . . . . . . . . . . 27, 36, 38
%name . . . . . . . . . . . . 21, 27, 33, 38, 47
%neutral . . . . . . . . . . . 19, 24, 27-28, 31, 37, 39,
41, 52, 59, 63
%nextlesson . . . . . . . . . 28, 39, 44, 49, 65-66
%nocontrolc . . . . . . . . . 28, 39, 49, 65-66
%noextra . . . . . . . . . . . 19, 22, 29, 39, 48-49
%nojustify . . . . . . . . . . 25, 29, 39
%noorder . . . . . . . . . . . 19, 27, 29, 39, 49
INDEX OF GNOSIS COMMANDS
%order . . . . . . . . . . . . 19, 29, 39, 57
%procedure . . . . . . . . . . 30, 39, 44, 46
%qend . . . . . . . . . . . . 30, 39, 44
%question . . . . . . . . . . 15, 17, 19, 24-25, 30, 32,
39, 41, 44, 50, 52, 56-58, 62
%right . . . . . . . . . . . . 15, 17, 19 22-24, 31, 37, 39,
51-52, 62-63
%same . . . . . . . . . . . . 31-32, 39, 63
%sgnosis . . . . . . . . . . . 32, 39
%switch . . . . . . . . . . . 24-25, 32, 39, 43
%teacher . . . . . . . . . . . 21, 26, 32-33, 39, 52
%text . . . . . . . . . . . . 15, 19, 17, 24, 30-31, 33-34,
36, 39, 44-45, 48, 50, 62
%variables . . . . . . . . . . 25, 36, 39, 44, 46
%wrong . . . . . . . . . . . . 15, 17, 19, 23-24, 31, 36-37,
39, 58-59, 62-63
APPENDIX A
SELECTED BIBLIOGRAPHY
1. -----, DECSYSTEM10 ALGOL PROGRAMMER'S REFERENCE
MANUAL (Maynard, Massachusetts: Digital Equipment
Corporation, 1974). The basic ALGOL reference for
DEC users. Not a stand-alone guide. A new edition
is imminent.
2. Bauer, F. L., ET AL., INTRODUCTION TO ALGOL
(Englewood Cliffs, New Jersey: Prentice-Hall,
1964).
3. Burson, Jeanne L., THE AUTHOR'S GUIDE TO CAI:
DEVELOPMENT (Columbus, Ohio: Ohio State University
Division of Computing Services for Medical
Education and Research, 1977). Loose-leaf guide
for lesson designers at OSU.
4. Bush, Steve, PNOSIS: A LANGUAGE FOR SIMPLE CAI
(Dallas, Texas: University of Texas Medical
Computing Resources Center, 1978). Documentation
on a preprocessor, using a subset of GNOSIS
commands, which translates directly into PILOT
rather than ALGOL. Originally called GNOSIS-II.
PNOSIS supports direct coding in PILOT much as
GNOSIS supports direct coding in ALGOL. A version
should be available from DECUS.
5. Callender, Patricia, PROGRAMMED LEARNING: ITS
DEVELOPMENT AND STRUCTURE (London: Longmans, Green
and Co., 1969).
6. Dijkstra, E. W., A PRIMER OF ALGOL 60 PROGRAMMING
TOGETHER WITH REPORT ON THE ALGORITHMIC LANGUAGE
ALGOL 60 (New York: Academic Press, Inc., 1962).
Historically, the standard reference on ALGOL 60.
7. Lindsay, C. H. and Van der Meulen, S. G.,
INFORMAL INTRODUCTION TO ALGOL 68 (Amsterdam, The
Netherlands: North Holland Publishing Co., 1977).
Standard documentation for a later version of
ALGOL.
SELECTED BIBLIOGRAPHY Page A-2
8. Malcolme-Lawes, D. J., PROGRAMMING-ALGOL (Elmsfor,
New York: Pergamon Press, Inc., 1969).
9. Markle, Susan Meyer, GOOD FRAMES AND BAD: A
GRAMMAR OF FRAME WRITING (New York: John Wiley and
Sons, 1969). Excellent introduction to the writing
of programmed textbooks. Skinnerian bent.
10. Pagan, Frank G., A PRACTICAL GUIDE TO ALGOL 68 (New
York: John Wiley and Sons, 1976).
11. Palme, Jacob, GNOSIS -- A SYSTEM FOR COMPUTER AIDED
INSTRUCTION (Stockholm, Sweden: Swedish National
Defense Research Institute, 1973 and 1975).
Manuals for previous versions of GNOSIS.
12. Wichman, B., ALGOL 60 COMPILATION AND ASSESSMENT
(New York: Academic Press Inc., 1973).
13. Wijngaarden, A. van, ET AL., REVISED REPORT ON THE
ALGORITHMIC LANGUAGE ALGOL 68 (New York:
Springer-Verlag, 1976).
APPENDIX B
ILLEGAL LABEL NAMES
The following words are illegal as user-supplied labels
within GNOSIS lessons. Those marked with a single asterisk
are reserved words in ALGOL, those with a double asterisk
are used by GNOSIS lessons, and the remainder are used by
ALGOL. Of course, ANY of these words can be used for their
INTENDED purpose within a lesson, but never as labels.
ABS AND* ANSWERCOPY**
ANSWERLENGTH** ANSWER** ANYWHERE**
ARCCOS ARCSIN ARCTAN
ARRAY* BACKSPACE BACK**
BEGIN* BLANK** BOOLEAN*
BREAKOUTPUT CARRIAGERETURN** CHAR**
CHECKOFF* CHECKON* CLOSEFILE
COMMENT* CONCAT CONTROLG**
CONTROLSTART** COS COSH
DCALL DELETE DIV*
DO* ELSE* ENDFILE
ENDOFLESSON** ENDOFLINE** END*
ENTIER EQV* EXTERNAL*
EXTRATEST** FALSE* FIRSTNAME**
FIRSTTRY** FORWARD* FOR*
GETLINE** GFIELD GIVEANSWER**
GLOBAL GOTO* GO*
HERE** ICALL IF*
IHAVEBLANKED** IMAX IMIN
IMP* INPUT INSYMBOL
INTEGER* IOCHAN LABEL*
LARCTAN LASTERRORS** LASTLATEPERCENT**
LASTLATESCORECOUNT** LASTLATESCOREKOUNT** LASTLATESCORE**
LASTPERCENT** LASTQCOUNT** LASTQKOUNT**
LASTRIGHTS** LASTSCORECOUNT** LASTSCOREKOUNT**
LASTSCORE** LATEPERCENT** LATESCORE**
LCALL LCOS LESSONNAME**
LEXP LINEFEED** LINE*
LINKR LISTOFF* LISTON*
LLN LMIN LN
LONG* LSIN LSQRT
MESSAGE** NEWLINE NEWSTRING
ILLEGAL LABEL NAMES Page B-2
NEXTSYMBOL NEXT** NOPAUSE**
NOT* OPENFILE OR*
OUTSYMBOL OWN* PAGE**
PAUSE** PERCENT** PERSONALIZE**
POS** PRINTOCTAL PROCEDURE*
PROMPT** PUTAWAY** PUTMESSAGE**
QCOUNT** RANDNO** RANDOM**
RCALL READOCTAL REAL*
REM* REPEAT** RESTORE**
REWIND RIGHTATLAST** RIGHTMESSAGE**
RIGHT** RMAX RMIN
SCORE** SELECTINPUT SELECTOUTPUT
SFIELD SIN SINH
SIMULATE** SKIPSYMBOL SKIP**
SQRT START** STEP*
STOP** STRING* SWITCH*
TAB TANH TEMPFILE
THEN* TRACEOFF TRACEON
TRANSFILE TRUE* TRYAGAIN**
UNTIL* UPARROW** VALUE*
WHILE* WRONGMESSAGE** WRONG**
APPENDIX C
USE OF IF-CLASS COMMANDS
C.1 EXAMPLE I
Let us suppose that you are bilingual Swedish/English
and that you wish to write ONE lesson that will work in
either Swedish or English depending on the situation.
Strictly speaking, this is impossible, but you can achieve
almost the same effect by coding your lesson as follows:
...
%SWITCH english TRUE
%IF english
!The BOOLEAN "english" is TRUE so
!the following English segment
!will become part of the translated
!lesson.
...
%IFNOT english
!This Swedish segment will not
!become part of the translated
!lesson since "english" is TRUE
...
%IFEND english
!Everything else will be part of
!the translated lesson regardless
!of how the %SWITCH command
!initializes "english"
...
Now, just by changing a single line in the file, we can
cause a Swedish language version to be prepared by the
GNOSIS translator. We simply replace "%SWITCH english TRUE"
by "%SWITCH english FALSE". No other editing has to be
done! This is the value of the IF-facility.
USE OF IF-CLASS COMMANDS Page C-2
EXAMPLE II
C.2 EXAMPLE II
Let us suppose that CHOOSE.SAV -- when it is finally
ready -- will be a program which reads and writes a list of
available lessons, allows a student to pick one of them to
be run, and then runs that lesson for him. (At the end of
the lesson, control would pass back to CHOOSE via a
%NEXTLESSON command.) Now, despite the fact that CHOOSE.SAV
is not yet available, we can nevertheless lay the groundwork
for it in the lesson script by coding that script as
follows:
...
%SWITCH autotransfer FALSE
%IF autotransfer
%NEXTLESSON run("CHOOSE");
%IFEND autotransfer
...
%IF autotransfer
%FINISH
%ALGOL
Newline;
Write("Transferring to CHOOSE program.");
Newline;
%IFEND autotransfer
%END
The lesson segment above would NOT cause GNOSIS to generate
code to support the automatic transfer of the student to
another lesson. When CHOOSE finally is ready, the only
change that would then need to be made in the lesson would
be the replacement of "%SWITCH autotransfer FALSE" with
"%SWITCH autotransfer TRUE". GNOSIS would then generate
code to support transfer. No other editorial changes would
be required.
APPENDIX D
USEFUL MIC PROGRAMS
D.1 GNOSIS.MIC
The following MIC[20] program (GNOSIS.MIC on the
distribution tape) makes preparing CAI lessons about as easy
as watching a player piano play. Once this file is in your
account, all you need to do to prepare lessons is type "DO
GNOSIS <lessonname without extension>". The MIC program
assumes the extension is ".GNO" and takes control at that
point, pausing only at essential decision points to see if
you want to continue.
If you decide to try to make a MIC file like this
yourself, then you must know TECO rather thoroughly,
notably:
1. that "3I$$" inserts a CTRL-C whereas "S<003>$$"
searches for one;
2. that "7I$$" inserts a CTRL-G (the bell) whereas
"S<007>$$" searches for one;
3. that "19I$$" inserts a CTRL-S whereas "S<023>$$"
searches for one.
------------------------------------------------------------
![MIC] Enabling CTRL-S and CTRL-Q commands
.SET TTY PAGE
![MIC] Command Format: "DO GNOSIS <lessonname>". Since
![MIC] the ".GNO" extension is ASSUMED for <lessonname>.
![MIC] you should NOT supply it in the command string.
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S
![MIC] Submitting 'A.GNO to the GNOSIS translator
---------------
20. Standard MIC documentation is supplied with the
GNOSIS distribution tape. However, if your system supports
MIC commands, then this documentation would likely be
available from your systems programmers anyway.
USEFUL MIC PROGRAMS Page D-2
GNOSIS.MIC
.R GNOSIS
*'A
*
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S
![MIC] Submitting the translated program, 'A.ALG to the
![MIC] ALGOL compiler with NOSYMBOLS, PRODUCTION switches
.R ALGOL
*'A.REL='A.ALG/NOSYMBOLS/PRODUCTION
*^C
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S
![MIC] Loading with GNOLIB.REL
.LOAD 'A.REL,SYS:GNOLIB.REL
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S
![MIC] Saving lesson as 'A.SAV
.OSAVE 'A
![MIC] "RUN 'A" will now run the lesson.
![MIC] Deleting the garbage files 'A.REL, 'A.ALG
.DEL 'A.REL, 'A.ALG
![MIC] Finished...exiting to monitor
!.
D.2 SORT.MIC
The following MIC program will use the utility program
SORT to alphabetize the <lessonname>.SRT files. This groups
the unexpected responses to each question together and, in
addition, alphabetizes the unexpected responses within each
of those groupings.
To start this MIC program, type "DO SORT <filename with
extension>".
------------------------------------------------------------
![MIC] Command Format: "DO SORT <filename>".
![MIC] Note: ".SRT" extension is NOT assumed.
!
![MIC] The DEC utility "SORT" will be run next.
![MIC] It will alphabetize the 'A file, keying
![MIC] on the first 30 characters. Record
![MIC] length must not exceed 300 characters.
!
.R SORT
*'A='A/KEY:1:30:A/ALPHA/RECORD:300
*^Z
![MIC] The sorted file will be typed out.
USEFUL MIC PROGRAMS Page D-3
SORT.MIC
![MIC] Type CTRL-C when you have seen enough.
!
.TYPE 'A
APPENDIX E
MACRO ROUTINES
E.1 INTRUT INTERCEPT ROUTINE
Immediately below is the MACRO code associated with the
external ALGOL procedure "stopkc". It becomes a part of the
lesson when the %NOCONTROLC command is used.
------------------------------------------------------------
;AUTHOR: JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS STOPKC
;ACTION: RUNS LOGOUT UPON INTERCEPTING CTRL-Cs
TITLE INTRUT INTERCEPT ROUTINE
ENTRY STOPKC
LOC 134
;.JBINT
EXP INTBLK
;POINTS TO INTERRUPT BLOCK
RELOC
;BACK TO ORDER
INTBLK::XWD 4,INTRUT
;GO TO INTRUT ON INTERCEPT
XWD 0,-1
;TAKE ALL
0
0
INTRUT::HRRZI RUNBLK
;SET UP TO RUN
; SETZM INTBLK+2
CLOSE 2,0
;CLOSE THE LPT
RUN
;AND RUN LOGOUT
HALT
RUNBLK: SIXBIT/SYS/
SIXBIT/LOGOUT/
0
0
0
MACRO ROUTINES Page E-2
INTRUT INTERCEPT ROUTINE
0
HALT
STOPKC: MOVEM ,SAV0
;SAVE 0
MOVEI ,INTBLK
;GET ADR OF INTBLK
MOVEM ,134
;STORE IN INTERRUPT ADDRESS
MOVE ,SAV0
;RESTORE
---------------
JSP 16,.%ALGDR##+1
Z [0]
;????
1,,3
SOJE 1
JRST 2(15)
1,,0
SAV0: Z
;SAVE AREA FOR REG 0
END
E.2 R ROUTINE
This is the MACRO code associated with the external
ALGOL procedure "r". It becomes a part of the lesson when
the %NEXTLESSON command is used.
------------------------------------------------------------
;AUTHOR: JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS R("NAME");
;ACTION: SAME AS IF .R NAME WAS GIVEN FROM TTY
TITLE R ROUTINE
ENTRY R
R: JRST R+4
EXP 0
;TRACE BLOCK
1,,1
;1 LETTER NAME
SIXBIT /R/
JSP 16,.%ALGDR##+1
EXP R+1
;ADDRESS OF TRACE BLOCK
1,,6
362000,,2
;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM
70540,,3
;STRING, FORMAL BY NAME
JSP 16,.%ALGDR##+12
XCT 3(15)
MACRO ROUTINES Page E-3
R ROUTINE
MOVE 3,0
;GETSTRING ADDRESS
HRRZ 1,1
;GET LENGTH OF ARGUMENT STRING IN 1
CAIL 1,6
;SKIP IF LESS THAN 6
MOVEI 1,6
;SET LENGTH TO 6 IF GREATER
WIND: ILDB 2,FRPOIN
;TAKE A CHAR FROM THE STRING
;(REG 0 IS POINTER)
SUBI 2,40
;CONV TO SIXBIT
IDPB 2,TOPOIN
;STORE IN NAME
SOJG 1,WIND
;LOOP MAX 6 TURNS
HRRZI RUNBLK
;SET UP FOR RUN
CLOSE 2,0
;CLOSE THE LPT
RUNP: RUN 0,
;RUN THE SPECIFIED PROGRAM
OUTSTR [ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/]
;LOGS OUT INSTEAD
HRRZI RUNBLK
;SET UP FOR RUN AGAIN
MOVE 3,[SIXBIT/LOGOUT/]
;BUT LOGOUT THIS TIME
MOVEM 3,NAME
;PUT INTO RUN BLOCK
JRST RUNP
;GO LOGOUT
HALT
RUNBLK: SIXBIT/SYS/
;TAKE IT FROM SYS:
NAME: Z
;TO BE ENTERED FROM CALL ARGUMENT
Z
;NOT INTERESTED IN EXT
Z
Z
Z
FRPOIN: POINT 7,(3)
;TAKE FROM WHAT REG 3 POINTS TO
TOPOIN: POINT 6,NAME
;AND PLACE IN NAME
;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS
END
MACRO ROUTINES Page E-4
RUN ROUTINE
E.3 RUN ROUTINE
This is the MACRO code associated with the external
ALGOL procedure "run". It also becomes a part of the lesson
when the %NEXTLESSON command is used.
------------------------------------------------------------
;AUTHOR: JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS RUN("NAME");
;ACTION: SAME AS IF .RUN NAME WAS GIVEN FROM TTY
TITLE RUN ROUTINE
ENTRY RUN
RUN: JRST RUN+4
EXP 0
;TRACE BLOCK
1,,3
;3 LETTER NAME
SIXBIT /RUN/
---------------
JSP 16,.%ALGDR##+1
EXP RUN+1
;ADDRESS OF TRACE BLOCK
1,,6
362000,,2
;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM
70540,,3
;STRING, FORMAL BY NAME
JSP 16,.%ALGDR##+12
XCT 3(15)
MOVE 3,0
;GETSTRING ADDRESS
HRRZ 1,1
;GET LENGTH OF ARGUMENT STRING IN 1
CAIL 1,6
;SKIP IF LESS THAN 6
MOVEI 1,6
;SET LENGTH TO 6 IF GREATER
WIND: ILDB 2,FRPOIN
;TAKE A CHAR FROM THE STRING
;(REG 0 IS POINTER)
SUBI 2,40
;CONV TO SIXBIT
IDPB 2,TOPOIN
;STORE IN NAME
SOJG 1,WIND
;LOOP MAX 6 TURNS
HRRZI RUNBLK
;SET UP FOR RUN
CLOSE 2,0
;CLOSE THE LPT
RUNP: CALLI 0,35
;RUN THE SPECIFIED PROGRAM
MACRO ROUTINES Page E-5
RUN ROUTINE
OUTSTR [ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/]
;LOGS OUT INSTEAD
HRRZI RUNBLK
;SET UP FOR RUN AGAIN
MOVE 3,[SIXBIT/LOGOUT/]
;BUT LOGOUT THIS TIME
MOVEM 3,NAME
;PUT INTO RUN BLOCK
JRST RUNP
;GO LOGOUT
HALT
RUNBLK: SIXBIT/DSK/
;TAKE IT FROM DSK:
NAME: Z
;TO BE ENTERED FROM CALL ARGUMENT
Z
;NOT INTERESTED IN EXT
Z
Z
Z
FRPOIN: POINT 7,(3)
;TAKE FROM WHAT REG 3 POINTS TO
TOPOIN: POINT 6,NAME
;AND PLACE IN NAME
;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS
END
APPENDIX F
SAMPLE GNOSIS PROGRAM
Given a normal implementation GNOSIS, the following
demonstration program should be runable from your account by
typing "R HOW<CR><LF>". If not, check with a systems
programmer to discover where the program resides and how to
run it. If this also fails, you may wish to get the HOW.SAV
file off the GNOSIS distribution tape so that you can both
run and study it. In order to learn the inner workings of
GNOSIS, it really is essential to do both. You might also
want to study the ALGOL translation of the HOW.GNO lesson.
It is called HOW.ALG, of course, and it too is available on
the distribution tape. (Of course, you could always make
your own ".ALG" version by submitting HOW.GNO to GNOSIS.) Do
not forget to have the HOW.DTA and HOW.SRT files ready in
your account before you run the HOW program!
The program has been used to teach first-time computer
users -- mainly students -- how to use the computer. The
objective of the lesson was to teach enough to enable a
student to run stored GNOSIS programs with a minimum of
frustration. Thus, HOW stresses erasing, the log in
procedure, and so on.
The text of the program follows immediately below. It
has been altered slightly to fit this 60 column format.
------------------------------------------------------------
%NEXTLESSON r("quolst");
!These lines, beginning with a "!" in column 1,
!will be treated as comments by the GNOSIS processor
!and ignored. Note that "!" must not be the FIRST
!character in the lesson, since GNOSIS would then
!take "!" as a command indicator.
!
!Note that all commands in this lesson could have been
!abbreviated to three letters.
!
!If you would like to use this lesson, to teach your
SAMPLE GNOSIS PROGRAM Page F-2
!students about the computer, then you should go
!through the lesson with an editor and replace
!all the occurrences of "<password>" with the
!account's real password, and all the occurrences of
!"<account number>" with the actual account number.
!
%NOCONTROLC
%COPYRIGHT (c) 1978 by Walter Maner
%TEACHER Dr. Walter Maner, Philosophy Department, A&L 428
(489-6517)
%NAME
%DISK
%BELL
%JUSTIFY
%PROCEDURE PROCEDURE echoinput;
BEGIN
Write("Your last response, as received by the computer after
you pushed RETURN,[N]");
Write("was as follows: ");
Write(answercopy);
Newline
END;
%QUESTION
Is this your first time to use a computer?
%NEUTRAL yes
Well, then, congratulations for having made it this far.
I'm going to celebrate a little...
%ALGOL
BEGIN
INTEGER i;
FOR i:= 1 STEP 1 UNTIL 500 DO Outsymbol(controlg)
END;
%NEUTRAL no
Then I'll skip the gala welcome party I had planned.
%NEUTRAL
%GOTO repeat;
%QUESTION
Would you like to review the log-in procedure with me, just
to be sure
you will remember how to do it the next time you want to
log in?
%NEUTRAL yes
Alright. We will review the essential steps.
%NEUTRAL no
Fine. I won't bother to rehearse the steps for you.
%GOTO skipreview;
%NEUTRAL
I was expecting a simple 'yes' or 'no' response from you.
%GOTO repeat;
%TEXT nopause:=true;
%QUESTION nopause:=true;
What is the very first thing you should do at the terminal?
%RIGHT Push the RETURN button
The computer will then respond with a period PROMPT '.' for
SAMPLE GNOSIS PROGRAM Page F-3
you on the bottom left.
By this simple token, the computer indicates to you that
the terminal IS connected
and waiting on you to type something in.
If for some reason you do NOT get a period prompt after you
push the RETURN
button, ask anybody you see around you for advice or
assistance.
There are several reasons why you might fail to get the
prompt, none of them
your fault: (1) the terminal could be out of
order, (2) the terminal may not be turned on, (3) the
terminal might not be
connected the computer, (4) the computer itself might not
be running, or (5)
the transmit or receive speed of the terminal might need to
be adjusted.
You don't need to remember any of this, however.
Almost ANYONE you are likely to see in a terminal room will
be more than
willing to help you
when you encounter a problem such as this (it makes them
feel important), so PLEASE DO ASK FOR HELP.
%RIGHT connect
%SAME
%RIGHT return
%SAME
%NEUTRAL turn on
Technically, you are right.
But let's assume that the terminal is switched on and
proceed from that point.
%GOTO repeat;
%WRONG log
You can't log in unless the terminal is connected to the
computer. The
best way to tell whether or not the terminal is patched in
is to push
the RETURN key. If the terminal IS connected properly and
the computer
IS operating, the period PROMPT '.' will appear at the
bottom left.
This is the computer's way of saying it is ready to
receive
input from your terminal.
%WRONG
Hint: You push a single button located on the right side
of the keyboard.
%QUESTION
What is the second thing you should do?
%RIGHT Type 'LOG'
This causes the computer to check and to see whether any
SAMPLE GNOSIS PROGRAM Page F-4
logins are
going to be allowed at this time. There might be too many
jobs already
logged in. Or the system may be temporarily restricted
for various
kinds of maintenance. But, if all goes well, the computer
will proceed to log you in.
%RIGHT Log
%SAME
%WRONG account
That will be entered later.
First, the computer has to see if there is enough room for
you on the system.
%WRONG number
%SAMEE
%WRONG ppn
%SAME
%WRONG account
%SAME
%WRONG pass
%SAME
%WRONG
%QUESTION
After accepting the 'LOG' command, the computer will
respond with a
'#' prompt in the lower left side of the screen. What do
you do next?
%RIGHT Type '<account number>'
That, of course, is our 'account number,'
'project-programmer number,'
or 'ppn' (for short).
%RIGHT <account number>
%SAME
%RIGHT project programmer
Our account number is <account number>, of course.
%RIGHT number
%SAME
%RIGHT ppn
%SAME
%RIGHT account
%SAME
%WRONG pass
The password is filed UNDER our account number. So the
computer can't
validate your password until it knows where to look
(i.e., the account
number). Our account number is '<account number>.'
%WRONG <password>
%SAME
%WRONG
Hint: It is expecting you to type in two fields of digits,
separated only
by a comma.
%WRONG
SAMPLE GNOSIS PROGRAM Page F-5
Hint: This number has a name but, if you forgot the name,
just type in the
number itself.
%QUESTION
Alright. Let's suppose the computer is in the process of
logging you in. It already knows
the account number. What is the next thing it needs to
know?
%RIGHT password
Our password is '<password>', of course.
%RIGHT pass word
%SAME
%RIGHT <password>
This, of course, is known as our 'password.
%WRONG
Hint: This is the secret 'code' that opens your account.
%WRONG
%QUESTION
One last review question: In which order do we do the
following things?
[T](1) Push the RETURN button
[T](2) Type in the PASSWORD
[T](3) Type 'LOG'
[T](4) Type in the ACCOUNT NUMBER
Your response should be a series of four digits.
%NOEXTRA
%ORDER
%RIGHT 1 3 4 2
%RIGHT 1 , 3 , 4 , 2
%WRONG
Number 1 is first.
%WRONG
Number 3 is second.
%WRONG
Number 4 is third.
%WRONG
Number 2 is fourth.
%WRONG
%NOORDER
%EXTRA
%TEXT skipreview:
All you do to run one of the lessons is type 'RUN ',
followed immediately by the name of the lesson
you want, and finish with a push of the RETURN button.
The computer takes over from that point, and the rest
should be self-explanatory.
%TEXT erase:
If you type like your professor does, then you're going to
make a few
SAMPLE GNOSIS PROGRAM Page F-6
mistakes from time to time. How do you correct them?
Well, you can take advantage of the fact that the
computer (usually,
at least) doesn't pay attention to what you have typed
until you push
the return button. Until you push that button, you have
the chance to
'erase' whatever it is that you have mistyped.
The simplest erasing command is the CTRL-U or '^U'.
Typing in this character causes everything you have typed
on a line to be
erased--instantly.
To type a CTRL-U, depress the 'CTRL' key and--while
continuing to hold it
down--depress the 'U' key.
Then release both keys.
Now I'll let you get some practice using the '^U' command.
%QUESTION
Following the arrow prompt, type in some garbage.
Then use the '^U' to erase it all.
Then, before you push RETURN, type in something
else--something sensible.
When you have experimented enough, type 'GO ON'.
%NEUTRAL go on
%NEUTRAL
%ALGOL echoinput;
%GOTO repeat;
%EXTRA
%TEXT
Of course, you will not want to erase the ENTIRE line just
to get rid of,
say, the last character you typed in.
So, you'll need some way to erase just one character at a
time.
To do this, you push the 'DELETE' or 'RUB OUT' key. The
first time you
push it, the computer types a back-slash ('\') and then
erases the
last character you typed. The second time, the
next-to-the-last
character is erased, and so on.
NOTE: Every time an erasure is made, the computer RE-TYPES
the character it has deleted.
It does not actually erase the character physically from
the display.
Thus you can erase your response all the way back to the
start of the line if necessary and start over.
SAMPLE GNOSIS PROGRAM Page F-7
If you typed 'sciences' when you meant to type
'science', then you
should push the 'RUB OUT' key or the 'DELETE' key once.
The computer
will respond by typing a '\s' to let you know it has
deleted the 's'
(your word will then look like this: 'sciences\s'). When
you hit the
'RETURN' the computer will react as if you had typed in
'science' and
the 's\s' which appears at the end of the word 'science'
will NOT be
transmitted to the computer.
Before I ask you some questions about the use of the 'RUB
OUT' or 'DELETE'
key, I will give you an opportunity to experiment with it.
%QUESTION
Following the arrow prompt, type in some garbage.
Then, before you push RETURN, use the 'RUB OUT' or 'DELETE'
key to erase one
or more of the characters you typed.
Then--still before you push RETURN--type in a couple of
additional characters.
THEN (finally) push the RETURN.
You'll notice the computer is TOTALLY IGNORANT of whatever
you erased (i.e., the
characters BETWEEN the two back-slash marks).
Type 'GO ON' when you are ready to proceed with the lesson.
%NEUTRAL go on
%NEUTRAL
%ALGOL echoinput;
%GOTO repeat;
%QUESTION
What will your response look like after you have typed
'politicall' for
'political' and used the 'RUB OUT' key to delete the 'l'?
(Note: When you answer this question, DO NOT actually
depress the
'RUB OUT' or 'DELETE' key. Rather, IMITATE what the
computer would do
and what the answer would look like IF you had used that
key.
CHECK THE KEYBOARD for the BACK-slash '\'.
With that key--NOT the OTHER slash '/'--you can imitate
what the computer does.
%NOEXTRA
%ORDER
%RIGHT politicall\l
%LACK \
SAMPLE GNOSIS PROGRAM Page F-8
The computer types a back-slash automatically before it
types whatever
letter you are deleting. Perhaps you typed the wrong kind
of slash.
The back-slash runs from northwest to southeast, so to
speak. Or
perhaps you actually USED the 'RUB OUT' or 'DELETE' key.
(Of course, if
you were REALLY erasing a character instead of merely
faking how it
would look when you did so, then you WOULD use that key.)
%ALGOL echoinput;
%EXTRA
%WRONG \ \
The computer will type only ONE back-slash at this point.
It will not type the SECOND back-slash until both these
conditions
hold:
[T](1) you have finished using the RUB OUT key;; and
[T](2) you have begun to type the rest of the word or line.
%WRONG /
That's not the kind of slash you should be using if you
intend to imitate
EXACTLY what the computer does.
%WRONG
Remember: It will re-type the character it is deleting. It
doesn't REALLY
erase it.
%ALGOL echoinput;
%WRONG
Hint: It's going to look like the last character is
doubled. And don't
forget to put the back-slash ('\') in your answer.
%ALGOL echoinput;
%WRONG
%ALGOL echoinput;
%QUESTION
Suppose you had typed 'logzical.' How many times would you
depress the
'RUB OUT' key?
%RIGHT 5
%RIGHT five
%WRONG 4
That deletes the 'l', 'a', 'c', and 'i' but it leaves the
'z'.
%WRONG four
Hint: You'll need to delete some of the good characters to
get back to
SAMPLE GNOSIS PROGRAM Page F-9
the one which is wrong.
%WRONG
%QUESTION
What does your answer look like after you have deleted
'logzical' back
to the 'z'? (Note: DO NOT actually use the 'RUB OUT' or
'DELETE' key.
Just type a series of characters which imitates how the
answer would
look if you HAD USED IT.)
%NOEXTRA
%ORDER
%RIGHT logzical\laciz
%LACK \
The computer types a back-slash before it types the first
character it
is deleting. Perhaps you typed the wrong kind of slash. The
back-slash
runs from northwest to southeast, so to speak. Or perhaps
you actually
used the 'RUB OUT' or 'DELETE' KEY, thus causing the
computer to type
the slash. THIS WILL NOT work!!!!! Type the back-slash
yourself, and
DO NOT use the 'RUB OUT' or 'DELETE' key!!!! (Of course,
if you were
REALLY erasing a character instead of merely faking how it
would look
when you did so, then you WOULD use that key.)
%ALGOL echoinput;
%NEUTRAL logzical\laciz\ical
That's exactly how it would look after you had both erased
the incorrect
characters and typed in the correct ones.
But I wanted to know how it would look after you erased but
BEFORE
you started typing in the correct characters.
%ALGOL echoinput;
%GOTO repeat;
%EXTRA
%WRONG \ \
It only types ONE back-slash as long as you are deleting
characters.
It's true, of course, that it types a SECOND back-slash
when you push
some other key besides the 'RUB OUT' or 'DELETE' key.
%WRONG
Hint: It will appear that each character is 'added' to
the original
word as they are deleted.
%ALGOL echoinput;
%WRONG
SAMPLE GNOSIS PROGRAM Page F-10
Hint: If the word was 'universixty' then, after using
the 'RUB OUT'
key three times, the answer would appear to be
'universixty\ytx'.
%ALGOL echoinput;
%WRONG
To see how your answer should look, type the word
'logzical' and then
push the 'RUB OUT' or 'DELETE' key five times just as you
were doing earlier
when you were experimenting with the key.
REMEMBER HOW IT LOOKS
AT THIS POINT because that is exactly how you will have to
type it in.
Then erase the whole line with a '^U', and re-type the line
just as it looked
before you erased it.
This should be a piece of cake since the erased line is
still visible to
you--but not to the computer.
%ALGOL echoinput;
%WRONG
%ALGOL echoinput;
%WRONG
%ALGOL echoinput;
%TEXT
Well, you are finished with the hardest section of this
lesson.
Congratulations!
Before we leave erasing entirely, however, I want to teach
you about one
other useful command, the '^R' or CTRL-R.
Suppose you want to know how your answer is going to look
to the computer
before you actually push the RETURN key.
(You might want to know, for example, that you actually
SUCCEEDED in correcting
a misspelled word.)
The CTRL-R gives you this computer's eye view.
Try it out now and see.
The procedure is the same as before: Hold the CTRL key
down while you push the
'R' key. Then release both.
%EXTRA
%QUESTION nopause:= TRUE;
Following the arrow prompt, deliberately misspell a word.
Then, using 'RUB OUT' or 'DELETE', correct it.
Next, type a CTRL-R to be sure you succeeded.
Finally, push RETURN to get the computer to tell you how it
SAMPLE GNOSIS PROGRAM Page F-11
'sees' your answer.
When you are ready to move on, type 'GO ON'.
%NEUTRAL go on
%NEUTRAL
%ALGOL echoinput;
%GOTO repeat;
%TEXT
When you want to leave the computer for a while, you
cannot just walk
away or unplug it. Since the computer can't see you, it
thinks you are
still there.......
Therefore, it will wait patiently (forever) for you to give
it some more input.
Since others are waiting to use the machine, this kind of
loyalty
is not a virtue.
To prevent this, when you leave the terminal, you M-U-S-T
have the computer perform a 'LOGOUT'
for you. The correct way to do this is to type 'K/F'.
ALTHOUGH WE CAN PRACTICE THIS OPERATION DURING THE LESSON,
IN REALITY YOU WILL NOT
REALLY BE LOGGING OFF UNTIL LATER.
Here is why.
Before we can ACTUALLY log off, we need to have our old
friend from the
first part of the lesson--the period prompt--in the lower
left corner
of the screen.
%TEXT
The 'K/F' command is the one required to log you off.
Here is the procedure to follow:
1. Wait until you see a period prompt at the bottom left.
2. When you do (assuming you want to log out), type 'K/F'.
3. Stand by until the computer actually logs you off the
system.
This may take a while during peak loads but, eventually,
the computer
will inform you that it has logged you off and, just for
the record,
will throw in a bunch of statistics.
4. If, after a reasonable wait, the computer has not
logged you off,
ask someone around you for help or advice.
SAMPLE GNOSIS PROGRAM Page F-12
%NOEXTRA
%QUESTION
What do you type to log off, saving all the lessons?
%RIGHT K/F
In just a moment (upon completion of this lesson) you will
get to log
off of your terminal.
Never leave the terminal--not even momentarily--without
logging off.
Even if the computer has 'CRASHED' (i.e., stopped
running), at least TRY to log off. It may not react in
the normal fashion to
your log off attempt. However, when it comes 'UP' again,
it will log
you off if it hasn't forgotten all about you in the
meantime.
Here is one final reminder.
A 'K/F' will not log you off while the lesson program is
still in progress.
First, the
the lesson will have to finish running all the way to the
end.
When it has ended, the computer will
type 'Leaving the lesson <lessonname>' followed (after a
pause) by the words
'End of execution' and -- finally -- will give you a period
prompt.
After THIS prompt you will be able to log off -- but not
before!
%RIGHT KJOB/F
%SAME
%RIGHT K
%SAME
%EXTRA
%NEUTRAL kiss
We call it 'kissing off,' but what do we actually TYPE when
it is time to
'kiss off'?
%GOTO repeat;
%LACK /
You forgot the slash character. It looks like this: '/'.
Do not type the BACK-slash by mistake. It looks like this:
'\'.
%WRONG
Hint: The command is an abbreviation for Kill (my job) Fast.
%WRONG
%WRONG
%END
/*
APPENDIX G
FORMATTING THE <LESSONNAME>.ALG FILE
Sophisticated GNOSIS programmers may find that they
need to study the <lessonname>.ALG file GNOSIS writes in
order to track down bugs. This file will be much easier to
read if it is first run through the formatting program,
ALGED. ALGED was written in SIMULA, originally to format
SIMULA files, but has been modified by the author for use
with ALGOL files. Nevertheless, ALGED still requires the
SIMULA run-time environment and, in any case, cannot be used
at non-SIMULA installations without violation of copyright.
Consequently, ALGED may not be available on your system. If
it is, however, the command "R ALGED" runs the program,
producing a beautifully formatted output file. The
GNOSIS.ALG file was prepared by ALGED.
ALGED.SIM, ALGED.SAV and ALGED.HLP are furnished with
the GNOSIS distribution tape. The help file for ALGED
follows.
------------------------------------------------------------
[ALGED.HLP]
ALGED Version 1
An ALGOL Editor and Indentation Program
Date: 27 February 1976
Original Author: Mats Ohlin, FOA 1, Fack,
S-104 50 STOCKHOLM, SWEDEN
Modified for ALGOL: 4 April 1978
by Dr. Walter Maner
Department of Philosophy
Old Dominion University
Norfolk, VA 23508
FORMATTING THE <LESSONNAME>.ALG FILE Page G-2
The ALGED program formats ALGOL source program files.
If program defaults are accepted, ALGED will indent the
program to bring out its structure, nesting pairs of BEGINs
and ENDs, and will upcase ALGOL reserved words, upcase the
first character of ALGOL standard identifiers, and lowcase
user identifiers. Line numbers will be removed!
Lines which become too long at indentation will be
split at an appropriate position (e.g., at a blank
character). A warning message is issued when the
text-splitting algorithm must divide a line in an arbitrary
fashion. The algorithm is, for example, reluctant to insert
a <CR><LF> in the middle of a long text constant. By the
same token, if it detects a <CR><LF> inside a text constant
(i.e., before the constant was closed off by a free
doublequote), then ALGED aborts rather than risk making
garbage of the file it is editing. Lines in the source file
longer than the record length specified for output will also
cause an error.
The following information is requested from the user:
1. the name of the file to be formatted.
2. the name of the output file (ALGED defaults to same
file as the one specified for input).
3. the maximum record (line) length for the output
file (ALGED defaults to 132).
4. the indentation value (ALGED defaults to 3 spaces).
5. the value of the column beyond which further
indentation nesting must cease (ALGED defaults to
60).
6. whether TABS can be used to indent, thus saving
some character storage space (ALGED defaults to
"NO" since the presence of TABS can cause
formatting difficulties if the file is ever
resubmitted to ALGED).
7. the conversion mode for ALGOL reserved words (ALGED
defaults to ALL CAPS).
8. the conversion mode for ALGOL standard identifiers
(ALGED defaults to capitalizing the first
character).
9. the conversion mode for user identifiers (ALGED
defaults to lower case).
FORMATTING THE <LESSONNAME>.ALG FILE Page G-3
10. the conversion mode for comments and option
statements (ALGED defaults to leaving them as it
found them).
11. the conversion mode for text constants (ALGED
defaults to leaving them as it found them).
The user will get the default values for each of the
questions 2 through 11 if he responds with <CR><LF> when
asked about them. Moreover if, at the end of the file name
for input to ALGED the user types <ALTMODE> or <ESCAPE>
instead of <CR><LF>, then the program will assume he wishes
to accept ALL remaining default values and will go to work
immediately. For further help, the user can type a '?' at
run-time.
For the most attractive results, BEGINs and ENDs should
appear on lines entirely to themselves in the source file.
Aesthetic considerations would also seem to dictate that the
source file not contain more than one statement per line.
ALGED expects to find the file ALGED.DAT in SYS and
will complain if it has to look for it elsewhere.
(ALGED.DAT contains a list of ALGOL reserved words and
standard identifiers.)
[End of ALGED.HLP 4 April 1978]
APPENDIX H
CONTENTS OF GNOSIS DISTRIBUTION TAPE
This 1600 BPI 9-track tape is a BACKUP 2(216)-2 tape,
Format 1, written in INTERCHANGE mode. It was prepared
under a 6.03+VM TOPS-10 Monitor 603(15717). The VID is
"GNOSIS VERSION 2". Saves were made under the PPN
[5642,1001]. Note that two independent GNOSIS "save sets"
exist on the tape, one called "ALGOL VER 7" (which is valid
under ALGOL Version 7) and the other called "ALGOL VER 10"
(which is valid under ALGOL Version 10).
1. ALGED.DAT
This is the required data file for ALGED. It
contains list of ALGOL reserved words and standard
identifiers. ALGED expects to find this file in
SYS.
2. ALGED.HLP
This is the system help file for ALGED. Also
appears in an appendix to GNOSIS.DOC.
3. ALGED.SAV
This is the OSAVEd version of ALGED.SIM
4. ALGED.SIM
This is the text formatting program for ".ALG"
files. ALGED will indent the program to bring out
its logical structure, nesting pairs of BEGINs and
ENDs, and will upcase ALGOL reserved words, upcase
the first character of ALGOL standard identifiers,
and lowcase user identifiers.
5. GNOLIB.REL
This file contains essential GNOSIS library
procedures. It is required for all lessons using
the %NEXTLESSON or %NOCONTROLC command.
CONTENTS OF GNOSIS DISTRIBUTION TAPE Page H-2
6. GNOSIS.ALG
This is the GNOSIS source program. The
internal documentation is lavish.
7. GNOSIS.DOC
This is the 102-page GNOSIS manual.
8. GNOSIS.HLP
This is the system help file for GNOSIS.
9. GNOSIS.LST
This is a CREF listing of the GNOSIS.ALG
source program.
10. GNOSIS.MIC
This is the MIC program which greatly
simplifies the preparation of GNOSIS lessons.
11. GNOSIS.REL
This is relocatable code for GNOSIS.ALG.
12. GNOSIS.RNH
This is the RUNOFF source file for GNOSIS.HLP.
13. GNOSIS.SAV
This is the OSAVEd version of GNOSIS.ALG. It
was compiled with /NOSYMBOLS/PRODUCTION switches in
effect.
14. GNOSIS.TWO
This is the manual, GNOSIS.DOC, in dual
format. If you queue ten copies of this to the
LPT, you will have 20 copies of GNOSIS.DOC. The
LPT output must be cut down the middle.
15. HOW.ALG
When HOW.GNO was submitted to GNOSIS, the
translator wrote this file. It has been formatted
using the ALGED program.
16. HOW.GNO
CONTENTS OF GNOSIS DISTRIBUTION TAPE Page H-3
This is the script form of the demonstration
lesson "HOW".
17. HOW.SAV
This is the OSAVEd version of HOW.ALG. It
functions as a demonstration lesson for GNOSIS.
18. INTRUT.MAC
This is the MACRO code associated with
%NOCONTROLC command.
19. INTRUT.REL
This is the relocatable code generated by
MACRO for the above file.
20. MIC.DOC
This is the standard documentation for MIC.
21. PUB.MAC
This is the MACRO code associated with the
%NEXTLESSON command for installations with a PUB:
area.
22. PUB.REL
This is the relocatable code generated by
MACRO for the above file.
23. R.MAC
This is the MACRO code associated with the
%NEXTLESSON command.
24. R.REL
This is the relocatable code generated by
MACRO for the above file.
25. READ.ME
GNOSIS implementation instructions are
contained in this file.
26. RUN.MAC
This is the MACRO code associated with
%NEXTLESSON command.
CONTENTS OF GNOSIS DISTRIBUTION TAPE Page H-4
27. RUN.REL
This is the relocatable code generated by
MACRO for above.
28. SORT.MIC
This is a simple MIC program which can be used
to sort <lessonname>.SRT files.
29. TAPE.DIR
This listing.
APPENDIX I
IMPLEMENTATION CHECKLIST
Note that two complete and independent GNOSIS "save
sets" exist on the tape, one called "ALGOL VER 7" (which is
valid under ALGOL Version 7) and the other called "ALGOL VER
10" (which is valid under ALGOL Version 10). Be sure to
RESTORE files from the appropriate save set.
I.1 ESSENTIAL STEPS
1. [ ]Store GNOSIS.SAV, HOW.SAV and GNOLIB.REL in
"SYS:".
2. [ ]Store GNOSIS.MIC in "MIC:" if your monitor is
Version 6.03 or later; otherwise store GNOSIS.MIC
in "SYS:".
3. [ ]Store GNOSIS.DOC<555> in "DOC:".
4. [ ]Store GNOSIS.HLP in "HLP:".
I.2 OTHER DESIRABLE STEPS
1. [ ]Store ALGED.SAV and ALGED.DAT in "SYS:".
2. [ ]Store ALGED.HLP in "HLP:".
I.3 TESTING
1. [ ]Restore HOW.GNO from the distribution tape into
your account.
2. [ ]Execute the GNOSIS.MIC file with the command "DO
GNOSIS HOW" or "DO SYS:GNOSIS HOW", whichever is
appropriate. Note that it is normal for GNOSIS to
issue a few WARNING messages but abnormal for it to
IMPLEMENTATION CHECKLIST Page I-2
issue ERROR messages.
3. [ ]Create files in your account with the names
HOW.SRT and HOW.DTA. (HOW will dump data in these
at program exit.)
4. [ ]Type "RUN HOW" and verify that the lesson
executes.
5. [ ]Type "R HOW" to verify that the system copy of
"HOW" will execute.
6. [ ]Delete "HOW.*" from your account.
'