An excellent example of a dialog is a lesson on qualitative organic chemistry analysis written by Prof. Stanley Smith of the Department of Chemistry, University of Illinois, Urbana. This lesson helps students practice their deductive skills on PLATO before they identify unknown compounds in a laboratory. Prof. Smith has PLATO randomly choose one of several organic compounds and then invites the student to ask experimentally-oriented questions aimed at identifying the unknown. Typical questions are: “what is the melting point;” “does it dissolve in sulfuric acid;” “show me the infrared spectrum;” “is it soluble in 112O.” There are over a hundred such concepts important in this simulated laboratory situation, and since each concept has many equivalent forms drawing upon a vocabulary of hundreds of words, the number of possible responses is astronomical. How can this be handled?
Although the context is far broader than that of a language drill, it is, nevertheless, sufficiently limited to be tractable. No attempt is made to recognize arbitrary student responses such as “cook me some apple pie.” With this quite reasonable restriction, the situation can be handled by using the -vocabs- command (analogous. to -list-) to define a large vocabulary (with appropriate “synonymization”) associated with a list of -concept- commands (analogous to -answer-) which express the basic concepts meaningful in the context of this lesson. The following is a fragment of the -vocabs- command:
And here are a couple of the many -concept- commands:
Consider what TUTOR does with “concept soluble in water”. TUTOR knows that -concept- has a tag consisting of words defined by a previous -vocabs-. (As usual with such matters, the -vocabs- should be at the beginning of the lesson.) The first word in the tag is “soluble” which TUTOR finds is the third very important word in the vocabulary (discounting the ignorable or optional words “is,it,a,” etc.). TUTOR groups synonyms together so that “dissolve”, too, would be considered a “number 3” vocabulary word. The next word of the tag is “in” which TUTOR throws away because the -vocabs- command says that the word is ignorable. The next word is “water”, which is in the second set of important -vocabs- synonyms. The net result is that “concept soluble in water” is converted to the sequence “3 2”.
Now, consider a student in this lesson who types “does it dissolve in H2O”. Superficially, this looks quite different from the -concept- tag “soluble in water”. However, TUTOR encounters a -concept- command which, unlike -answer-, indicates that the student's response should be looked up in the defined vocabulary. (In the case of -answer- there is no one vocabulary set because each -answer- may include various -listreferences and particular words specific to that -answer-.) By a process identical to the conversion of the author's -concept- tag, TUTOR converts the student's response into “3 2”. This compact form “3 2” does not match the first “concept what color” (which was converted to “1”), so, TUTOR proceeds to the next judging command, which is “concept soluble in water” or rather its converted form “3 2”. This matches, so judging terminates and regular processing begins. The student gets a reply “It's slightly soluble in water.”
Notice that the first -concept- encountered triggers the transformation of the student's response into the compact form suitable for looking through a very long list of concepts. If the -vocabs- contains an entry such as (five,5,cinco), the student may match this entry with “3+2”, just as in an -answer- statement involving numbers.
You will have to experiment a little with this machinery in order to learn how best to manage the synonymization in the vocabulary. This does depend on the context. In an art lesson it would be disastrous to call red and blue synonyms as was done here, but it makes sense in this context (where the only concept related to color has to do with “what color is it”, which means essentially the same as “is it red” or “is it blue”).
You will find that the use of words not defined by -vocabs- will result in a markup indicating which words are undefined (X's will appear under these words). If your context is such that you need worry only about key words and don't care if the student asks “does it dissolve superbly in water”, you might precede the first -concept- with a “specs okextra” which says that extra student words not found in the vocabulary may be ignored, as though they had been so specified in the -vocabs- tag. In that case, you need not define any ignorable words with -vocabs-, but you would write “concept dissolve water”, not “concept dissolve in water” since extra author words are not tolerated. If you don't use “specs okextra”, the student's word “superbly” will be marked (xxxxxxxx). If the student misspells a vocabulary word, that word will be underlined such as “saluble in water.”
The following is an alternative and more detailed version of the heart of the dialog lesson, which illustrates several points. It is a rather complex example which brings together many aspects of TUTOR. Note particularly that the -concept- statements now are listed one after the other. The variable “unknown” is a number from 1 to 4 (associated with which compound the student is attempting to identify). The system variable “anscnt” is set to zero when judging starts (and when a -specs- is encountered) and it counts the number of -answer-, -wrong-, -ok-, -no-, and -concept- commands passed through. If the third such command terminates judging, “anscnt” will have the value 3. If no match is found, “anscnt” is set to -1.
The statement “wrong what is it” is necessary because a “concept what is it” contains only ignorable words and would, therefore, not distinguish between “what is it” and “does it what”, which also contains only ignorable words. Since -specs- resets “anscnt” to zero, “anscnt” will have the value 2 if the student's response matches the second -concept- (“soluble in water”). No regular commands follow this -concept-, so TUTOR goes right to the -specs- marker to execute the regular commands there. Since “anscnt” is greater than zero, TUTOR does a -goto- to unit “unknown”, where there is a -goto- to unit “replyl” (assuming we are working on unknown number 1), which writes “It is slightly soluble in water” on the student's screen.
This structure makes it very easy to add a fifth unknown compound to the lesson. The -vocabs- and list of -concept- commands do not have to be changed, since the basic concepts and vocabulary are pertinent to the analysis of any compound. All that is necessary is to add “reply5” to the end of the conditional -goto- in unit “unknown” and to write a unit “reply5” patterned after unit “replyl”. The lesson revision is completed!
What happens if the student says “it what does”? This will not match the -wrong- nor any of the -concept- commands, so “anscnt” will be -1. Therefore, the -goto- just after the -specs- will fall through to the following -writec-, which gives one of the two messages dependent on the system variable “vocab”: true if all words are found in vocabulary, false if some words are not found (these words would be underscored with xxxx). In this case, the student will get the message “I don't understand your sentence”, whereas if the student says “what is elephant” he will see the xxxx's under “elephant” and get the message “The xxxx words are not in my vocabulary”.
That was a fairly complicated example, but the discussion is justified by the general usefulness of many of the techniques employed and by the extraordinary power such a structure yields, both in its sophisticated handling of student responses and in the ease of expansion to additional options.
Suppose the -arrow- is in unit “analysis”. One way to proceed from one question to the next would be to place a “next analysis” in this unit. There is an efficient way to avoid erasing and recreating the display associated with this unit. Instead of proceeding, let's judge each response “wrong” so that we stay at this -arrow-. Replace the -specs- command with these two statements:
Despite its name, -judge- is a regular command, not a judging command. It can be used to alter the judgment made by the judging commands. In this case, TUTOR first skips over this regular command to get to the -concept- commands. If one of these commands matches the student response, TUTOR makes an “ok” judgment, but upon going to the -specsmarker TUTOR finds a “judge wrong” which overrides the earlier judgment. TUTOR keeps going, processing regular commands, and produces a message as we have seen before. The “nookno” specification prevents a “no” from appearing on the screen and the student simply sees our message. But the -arrow- has not been satisfied, so when the student presses NEXT, TUTOR erases the response and awaits a new response. Each time, the student gets a reply to his or her experimental question, and the “wrong” judgment takes us back to the -arrow-.
This is a good way to manage the screen because only a small portion of the display changes (the surrounding text and figures remain untouched). The “next analysis” re-entry to this same main unit would quickly get tiresome because of the repetitious replotting of the surrounding material.
You should now be able to use -answer-, -wrong-, and -list- in situations where the vocabulary is small and -concept- and -vocabs- where the vocabulary is large. You have seen how to use -specs- both to specify various judging options and to mark a place where post-judging actions can be centralized. You have seen one form of the regular -judgecommand “judge wrong” which overrides an “ok” judgment made by an -answer- or -concept-.
Another way to get a “wrong” judgment is to use -miscon- (“misconception”) commands instead of -concept- commands. Just as -wrong- is the opposite of -answer-, -miscon- is the opposite of -concept-.
There is a particularly convenient way to make different concepts equivalent, including different word orders:
The “continued” -concept- specifies synonymous concepts. If the student's response matches any of these three concepts the same message will be given. Also, “anscnt” will be the same no matter which of these concepts makes the match.
Use of -vocabs- makes possible the underlining of misspelled vocabulary words (or their acceptance with a “specs okspell”), just as with the -answer- command. Similarly, “specs noorder” can be used to indicate that no particular word order is required. There is a -vocab- command which permits a larger vocabulary (at the price of giving up these spelling and order capabilities). Just as the multi-word phrase “sodium*chloride” can be used with the -answer- command, so can such phrases be specified in a -vocabs- vocabulary.
At times you may be interested mainly in root words, no matter what endings are attached. The words “walk”, “walks”, “walked”, “walker”, and “walking” can be added to a -vocabs- very simply as “walk/s/ed/er/ ing”, which saves you some typing effort. If you want all of these except for “walk” itself to be added to the vocabulary, use a double slash after the root: “walk//s/ed/er/ing”.
An even more compact way to define common endings is with -endings- commands:
The use of the “0” and “9” sets of endings causes the vocabulary to contain these words: will, wills, willed, willing, fuller, and fullest (“full” itself is missing, due to the double slash). An -endings- set must be identified by a number from 0 to 9.