In a courseware document, the user may be presented with the specification or design of some system. This will generally have special behaviour designed to enhance the user's knowledge. However, when statically presented there are often limits in the understanding that can be reached due to the information only giving one view of the system. It is often more desirable to allow the receiver of the knowledge to ``play'' with the system, adjusting parameters or design aspects, and observing the effect on the system. Such interaction cannot be forecast completely in advance, so an attempt to define all possible variations and cater for it in the courseware is usually doomed to fail. It is desirable to allow for an open-ended interaction with the system.
The courseware considered in this paper is concerned with learning a programming language Lecture Notes For Operating Systems [HREF1] . In doing this, many example programs are presented, each with the intent of illustrating some aspect of the language or of algorithm design or implementation. Just by presenting material, little is offered that is better than a paper-based textbook. However, most GUI browsers will allow selection of text, and pasting into another document, so that an active user will be able to select an example program and paste it into an editor for execution. Once there, it can be modified and experimented with. Despite this, it involves a degree of knowledge and motivation by the user that may be missing (remembering that they are often far from expert with the environment). It would be advantageous if there were mechanisms within the Web document to encourage such exploration directly.
The courseware problem dealt with here is an extreme version of a quite common problem. For example, a fluid dynamics document may illustrate fluid flows around a shape, and various fluid parameters may be set for the diagram to be drawn by software such as Mathematica. Alternatively, in a course on functions, the function to be sketched may be a user-set parameter. Moving closer to our example, the courseware may be exploring the use of macros in spreadsheets, where the user experiments by setting different macros.
This paper looks at a variety of methods that can be used to encourage this type of exploration. It is in fact very easy to set up a mechanism that will allow this, but which can be abused by an unscrupulous user to the extent of compromising the system delivering the courseware. This is discussed in the next section. The following sections address means of solving this by shifting responsibility for aspects of the interaction over to the client (browser) side. This is all done within the context of standard browsers and servers upto HTML version 2. The adequacy of these methods is then discussed. The remaining sections look at experimental or proposed methods with the aim of seeing if they can overcome the remaining problems. These include: HTML version 3 scripting support in Forms HTML Version 3 [HREF2] and Java Java Home Page [HREF3] support for scripting applets. Two solutions to this problem are then presented, using firstly the Common Client Interface CCI Specification [HREF4] , and secondly a proxy server running locally with the browser. The solutions allow a range of other posssible uses, which are touched upon. Some outstanding problems and conclusions are then discussed.
/cgi-bin/) then the server will
attempt to execute the URL as a program,
and return the output back to the browser as a document. For the courseware
we are considering - learning a programming language - the server program
should compile and execute a program in the language, returning the output
to the user. For example, a suitable CGI
Bourne shell script to compile and execute
``hello world'' in C might be
hello.c,
compile it to hello if possible, and either execute it or
return the compiler errors. Then it will clean up all files created doing
this.
(The CGI script does all stages of compile, link, execution, etc. This
avoids any need to maintain state across different CGI programs, which
would be considerably more complex.)