WebSteer: An open framework for interactive documentation and training
over the Web
Jorge H. C. Fernandes* (jhcf@di.ufpe.br)
Departmento de Informática, Universidade Federal de Pernambuco
Av. Prof. Luiz Freire, s/n, C.P. 7851, Cidade Universitária
50.732-970 Recife - PE, Brazil, Fax:+55-81-271-8438
* on leave from DIMAp/UFRN - Brazil
Silvio Lemos Meira(srlm@di.ufpe.br)
Departmento de Informática, Universidade Federal de Pernambuco
Abstract
This paper presents WebSteer: a framework for construction and delivery of
interactive documentation, training and education material over the Web.
WebSteer extends the current technology of Java Applets and HTML browsing
by creating a highly interactive instructional setting.
WebSteer is based upon the laboratory metaphor, where learners
follow instructional modules (courseware) by interacting with informative texts
and reactive instruments in a scripted environment.
WebSteer allows the user to select and follow any
courseware made available by providers. Each courseware is composed by a
(possibly open) set of HTML pages, a set of scripts, and a set of applets
(instruments). The HTML pages are rendered by a special purpose HTML
browser: the Slide Projector. The instruments (applets) are laid over the
Workbench and cater for the multimedia user interface. They generally simulate
the workings of laboratory instruments that are manipulated by the user. The
scripts are hosted in the HTML pages and written in a purpose-designed
language called JetScript.
These scripts describe how to map events that are raised by the instruments
and by the Slide Projector into messages that are sent to the other instruments
and to the Slide Projector.
The main differences between the WebSteer model and the Java
Applet model created by Sun Microsystems and supported by popular HTML
browsers like Netscape Navigator and Microsoft Internet Explorer are: the
promotion of applets to the status of first class Web components, and
the provision of a simple, detached and high-level event handling
mechanism between applets and HTML pages
1 - Introduction
2 - The WebSteer Approach
3 - Architectural Elements of WebSteer
4 - Creating Courseware For WebSteer
5 - Conclusions and Future Work
Acknowledgements
References
The intense use of
the Internet and of the Web as ground for construction and deployment of
advanced, open and long distance instruction tools is highly awaited, and
theme of intense research[1, 2].
While many of the sophisticated instruction tools available today are closed
systems, sharing neither content material nor interface elements with other
environments[3], the Web made available a
huge and shared information base
that may be successfully used for construction of open education and
training tools.
While the conventional teacher-directed instruction mode relies basically on
this figure as the didactic knowledge dispenser, the use of networking
technologies for long distance instruction cannot rely on the teacher as sole
controller of the subject matter ministering.
Long distance instruction needs to use independent and highly
interactive construction blocks that are directly manipulated by the learner
while maintaining some level of control by
teachers and course facilitators.
The recent introduction of the Java[4]
programming language and of HTML browsers
that support the execution of Java Applets, like Netscape Navigator, provided an
innovative way to deliver dynamic information over the Web. Applets are
programs written in Java, that can be downloaded automatically from Web
servers and executed inside browsers, at the user's side.
The applet code is highly portable among different computational platforms
and present multimedia capability, being
able to manipulate images, sound and text. An applet in execution is hosted
inside a specific HTML page, and its graphical interface is presented in
a predefined area within this HTML page's display space.
The ubiquitous Applet technology has already produced a strong
ground for the construction of interactive content,
that is being used for education and training purposes. See for instance, the
Gamelan directory of educational applets [5]
that presented approximately five hundred entries in January, 1997.
Unfortunately, the standard applet technology does not provide
a satisfactory level of integration with HTML, due to several limitations:
- An applet loaded in a browser is highly dependent of the specific
HTML page that
hosts it, the applet becoming a mere transitory process that pursues
interaction with the user while it is being shown in a specific area
of the HTML page that hosts it;
- an applet loaded in a given HTML page cannot easily communicate with applets
loaded in other pages;
- user interactions over an HTML page cannot easily be forwarded to an
already loaded applet.
The two last limitations can be partially overcomed by the additional use of
other browser, Web and networking technologies like JavaScript, CGI,
interprocess communications, etc, that in our opinion pose one more
complexity threat to the builder of educational content.
WebSteer solves these three problems by detaching the applet from
HTML pages, and by
allowing the interoperation between an arbitrary assembly
of applets and HTML.
The WebSteer approach is based on the following points:
Applets as providers of multimedia interactive content
Although there are some successful examples of its use in educational
contexts[6],
sophisticated component software models like
OpenDoc and CORBA[7] are not well suited for the
construction of education and training software by teachers and learners.
They are aimed at the construction of high-performance packed software,
but lack simplicity and lightness.
The most successful approach to the delivery of software over the Web is the
applet technology, the ubiquitous mobile code approach developed
by Sun Microsystems (JavaSoft[8]).
Reuse of and compatibility with pre-existing HTML pages and applets
We must make extensive reuse of preexisting resources in the
construction of courseware, mainly HTML and applets. When reusing or
adapting these resources we should keep them compatible with the
original model.
Loose control of HTML browsing and applet interaction
Navigation with conventional HTML browsers is ever more "flexible",
and thus is not suited to controlled educational contexts.
Furthermore it is not easy to guide the interaction of learners with
conventional applets.
WebSteer creates a loosely controlled environment for HTML browsing
and applet execution that watches the interaction of the user
with these elements. By using a detached script (see
JetScript below) , it produces a
guided control over the browser and the applets.
Usage traceability and reconfigurability
As pointed out in[3],
the next generation of educational tools should ease the
monitoring and reconfiguring of the learner's activity environment.
We believe that the collection of usage profiles generated by WebSteer
at run-time can be a valuable source for monitoring learners activity.
Reconfiguration of the courseware may be easily made by altering the
script (see JetScript below).
Simple declarative scripting languages
Powerful scripting languages like JavaScript and VBScript
pose one more threat to the builder of educational software, provided that
they are overly complex and aimed at a more sophisticated software developer
population. Minimalist, but not
simplist, scripting languages like JetScript, which we developed especifically
for use in WebSteer, provide enough power to be used as a glue in the
construction of courseware.
The elements that make the architecture of WebSteer are:
the Slide Projector, the Workbench and the Event Handling System,
all under the supervision of the Core Controller.
The Core Controller
In its external appearance (Figure 1) the Core Controller shows
the list of available courseware, and two buttons. It is in fact a Java Applet, that handles events and
controls how the whole system works. To experiment with WebSteer you need only
to access the home page[9] using some Java
enabled browser, select a courseware
and press the "Load Courseware" button. In
Section 4 we give some information about the courseware we have
made available.
Figure 1 - Interface of WebSteer's Core Controller
The Slide Projector
The Slide Projector (see Figure 2) is a simple HTML browser that renders normal HTML
text, signaling to the Core Controller when the user follows any HTML
reference. Beyond rendering HTML pages, the Slide Projector allows you
to step back or forward in the browsing. As the user cannot freely choose an URL
to be loaded, the browsing scope is limited to a
predefined set. Under the control of the Core Controler, the Slide Projector may
also load any HTML page given by the courseware.
Figure 2 - Slide Projector showing an excerpt the courseware Learning Real
Numbers
The Workbench
The Workbench supports the loading and execution of an arbitrary set of
applets. It detaches the applets from an HTML page and aggregates
them over a common interface area.
By using the techniques described in Section 4, you may
easily adapt any applets to raise events and receive messages,
so that it may work cooperatively with the other applets.
The Figure 3 shows the Workbench loaded with
the Segment Calculator, an instrument used in the
courseware Learning Real Numbers. While the user can interact directly with
the instrument's graphical user interface (GUI), some of its functions are
triggered by the interaction of the user with the Slide Projector. For
instance, the link Example: Formula for the Distance
(underlined in the Figure 2) enables an specific mode of
operation (calculate the distance between two points) of the instrument.
Figure 3 - Workbench loaded with the Segment Calculator
The Event Handling System
The invisible element that supports the architecture of
WebSteer is a simple yet
powerful event handling system programmed in JetScript. Below, we
explain the concepts of events, messages and JetScript.
Events
There are two types of events in WebSteer: slide and instrument. A slide
event is raised by the Slide Projector when the user selects an HTML reference
inside the document its is browsing. Instrument events are generated by
instruments that are loaded on the Workbench. The WebSteer programming
framework supports the easy transformation of ordinary applets into WebSteer's
instruments. In the current version of the WebSteer's event system, the
informations contained in an Event are the type of event raised (slide ou
instrument), and the name of the event. Some example events are:
- onSlideEvent(http://www.di.ufpe.br/~java/websteer)
- The user selected the HTML reference "http://www.di.ufpe.br/~java/websteer"
- onSlideEvent(#Architecture)
- The user selected the internal HTML reference "#Architecture"
- onInstrumentEvent(WebSteerInWebSteer#Back)
- The instrument WebSteerInWebSteer raised the event "Back"
- onInstrumentEvent(VisibleComputer#Start/Reset)
- The instrument VisibleComputer raised the event "Start/Reset"
Messages
Messages are requests for computation sent from the Core Controller to the
Slide Projector and to the instruments.
There are two types of programmable messages in WebSteer: slide and
instrument. Slide messages are received by the Slide Projector and
carry as an argument the URL of a new document that should be retrieved by the
Slide Projector. Instrument messages are received by an instrument and
carry a name and a possibly null arguments list.
The instrument handles the messages
through its method handleMessage().
Some example messages are:
- http://www.di.ufpe.br/~java/websteer/
- Requests that the Slide Projector retrieve the resource
whose URL is "http://www.di.ufpe.br/~java/websteer/"
- WebSteerInWebSteer#Back(2)
- Requests that the instrument WebSteerInWebSteer handle the message
named "Back" with the argument "2"
- VisibleComputer#reset()
- Requests that the instrument VisibleComputer handle the message
"reset" with no arguments.
The mapping between events and actions is the heart of control in WebSteer and
is defined using the JetScript language.
JetScript presents the simple declarative syntax shown below.
The full syntax is described in the
WebSteer Tutorial courseware.
<jetscript> ::= <jetscript <preamble><mappings> jetscript>
<preamble> ::= name= <script-name>;
instruments= <instrument-list>;
<mappings> ::= <mapping>;<mappings>
<mapping> ::= <event> =) <message>
<event> ::= onSlideEvent(<event-name>) |
onInstrumentEvent(<instrument-name>#<event-name>)
<message> ::= <slide-message> | <instrument-message>
<slide-message> ::= <url>
<instrument-message> ::= <instrument-name>#<message-name>(<args>))
The syntax above is meant only to give a
general idea of JetScript. For the sake of clarity we allow a more
relaxed syntax for scripts, as the example below:
<JETSCRIPT
name = WebSteerInWebSteer;
instruments = WebSteerInWebSteer, SlideSelector;
onSlideEvent(#showWorkbench) =)
WebSteerInWebSteer#showWorkbench();
onInstrumentEvent(WebSteerInWebSteer#Back) =)
scripts/webSteerInWebSteer/BackButton.html;
Forward =)
scripts/webSteerInWebSteer/ForwardButton.html;
#showComponents =)
showSlideProj(), showWorkbench(), showCoreControl();
JETSCRIPT>
When the script above is inside an HTML page loaded by the
Slide Projector, the instruments WebSteerInWebSteer and SlideSelector are
loaded and laid out on the Workbench. The Controller them watches
the occurrence of
any of the four events defined in the script and sents to the instruments
the message corresponding. The first two mappings
use an explicit and longer format, while the last two are
abbreviations meant to simplify the writting of scripts. The semantic of each
definition is as follows:
onSlideEvent(#showWorkbench) =)
WebSteerInWebSteer#showWorkbench();
When the internal HTML reference #showWorkbench is raised by the slide
projector, the message showWorkbench() is sent to the instrument
WebSteerInWebSteer
onInstrumentEvent(WebSteerInWebSteer#Back) =)
scripts/webSteerInWebSteer/BackButton.html;
When the event Back is raised by the instrument WebSteerInWebSteer, the
HTML page whose (relative) URL is scripts/webSteerInWebSteer/BackButton.html
should be rendered by the Slide Projector;
Forward =)
scripts/webSteerInWebSteer/ForwardButton.html;
When an event Forward is raised by any instrument or by the
Slide Projector, the page whose URL is
scripts/webSteerInWebSteer/ForwardButton.html
should be rendered by the Slide Projector;
#showComponents =)
showSlideProj(), showWorkbench(), showCoreControl();
When any event whose name is #showComponents is raised by any instrument or by
the Slide Projector the messages showSlideProj(), showWorkbench() and
showCoreControl() should be sent to all the instruments loaded on the
Workbench: WebSteerInWebSteer and SlideSelector.
In this section we give a small example of courseware development in
WebSteer, the Clock Lecture. This demands
the creation of a Java class, ClockInstrument,
that defines an WebSteer's instrument,
and two HTML pages, one of these hosting a script written in JetScript.
The important
point of this example is to show how we can reuse the fully compiled code
of any existing applet, such as the Clock2 applet that is in the
demo directory of
the distribution of the Java Development Kit 1.0.2 from JavaSoft
[8].
This
clock will be adapted to work as a WebSteer's instrument.
The general comprehension of
the approach should not demand specific knowledge of Java, but to an
introduction
to the language we suggest [4].
public class ClockInstrument
extends Clock2
implements websteer.InstrumentInterface {
public void raise(String s) {
java.awt.Container parent = getParent();
if (parent instanceof websteer.Workbench) {
((websteer.Workbench)parent)
.raise((this.getClass()).getName(), s);
}
}
public boolean action(java.awt.Event awtEvent, Object arg) {
raise(arg.toString());
return super.action(awtEvent, arg);
}
public boolean handleMessage(websteer.Message message) {
if (message.kind().equals("show")) {
show();
return true;
} else if (message.kind().equals("hide")) {
hide();
return true;
} else if (message.kind().equals("stop")) {
stop();
return true;
} else if (message.kind().equals("start")) {
start();
return true;
}
return false;
}
public java.awt.Dimension preferredSize() {
return new java.awt.Dimension(200, 150);
}
}
The adaptation of any preexisting applet of any size consists basically in the
creation of a Java class that inherits
from the original applet,
implements the InstrumentInterface from WebSteer, and declares
at least these four methods: raise(), action(),
handleMessage() and preferredSize().
raise() and action() are standard and should not be
modified.
raise() allows
events to be signaled by the instrument.
action() relies on
raise() to signal that some user interface action was done
by the user.
The name of the target in the GUI action
(arg.toString()) is sent as an event.
handleMessage()
defines how the instrument
copes with the messages it receives.
In this case, any ClockInstrument
handles only the
messages start(), stop(), hide() and show(). The method preferredSize() just returns
the expected size that the instrument's GUI occupies over the workbench.
To allow more interactivity to the courseware, we will insert extra
code that allows the instrument raise an event named "newMinute",
each time the minute of the clock changes.
This method relies on the updating of the GUI
of Java, that automatically calls the method paint(Graphics).
The code as below
should be inserted in the ClockInstrument definition above in order to raise
this event.
int oldMinute = new java.util.Date().getMinutes();
public void paint(java.awt.Graphics g) {
int newMinute = new java.util.Date().getMinutes();
if (newMinute != oldMinute) {
raise("newMinute");
oldMinute = newMinute;
}
super.paint(g);
}
Creating HTML and JetScript
Below, we show the source of the HTML page that
raises the slide events
(#stop, #start, #hide and #show).
This is made placing HREFs in the HTML code (<A HREF="#stop">,
etc). The same page contains the script that controls
the interaction between the Slide Projector and the ClockInstrument.
<HTML>
<HEAD>
<TITLE>Controlling a Clock Using WebSteer>
</HEAD>
<BODY>
If you <A HREF="#stop">click here<A> the Clock stops.
To get it going again, you <A HREF="#start">click here<A>.
If you don't want to see it anymore,
just <A HREF="#hide">hide it<A>.
To see it again, all you gotta do is to
<A HREF="#show">click here<A>.
</BODY>
<JETSCRIPT
name = ClockLecture;
instruments = ClockInstrument;
#stop =) stop();
#start =) start();
#hide =) hide();
#show =) show();
newMinute =) scripts/ClockLecture/NewMinute.html;
JETSCRIPT>
</HTML>
Although the example provided may seem too complex to produce a small
result, we have learnt that the consistent application of these simple
techniques produces useful effects. For instance,
after the possible incremental definition of instruments' events
and messages, it becomes very easy to alter the general
behavior of the courseware.
Using WebSteer and applets we have developed courseware, interesting
experiments, and useful instruments that show strong possibilities for its
use in education and training settings.
As of February, 3, 1997, the current version of WebSteer is itself an
applet (and a WebSteer's Instrument!), and presents the following
courseware:
- Inet'97 paper
- An adaptation of this paper that employs two instruments:
an instrument
graphically simulating how the event system of WebSteer works,
and another copy of the WebSteer environment itself
inside it. This courseware is a nice example of the high interactiveness
achieved with the use of WebSteer.
- WebSteer Tutorial
- This is an extended version of the courseware Inet'97 paper,
that guides you through the use of the framework.
- Learning Real Numbers
- Real courseware that is being used to teach pre-calculus at UFPE.
- Digital Watch
- A small lecture about the use of a simple digital watch.
- Clock Lecture
- The example couseware shown in this section.
- Tiny Example
- A small sample of how instruments can control HTML browsing and
vice-versa.
- The Visible Computer
- An experiment at an early stage,
that employs an instrument simulating the internal
workings of a small computer. It is meant to be used to
teach computer architecture
concepts (the HTML pages are in portuguese).
WebSteer was developed entirely in Java (10 Kilo Lines Of Code-KLOC),
by a team formed by
students, teachers and researches from the
Departamento de Informática of UFPE: the Recife Java Team.
Since its initial developments (nearly one year ago) we have been simplifying
and experimenting with WebSteer, and the developing of other applets.
Some instruments employed in WebSteer are
as big as the environment itself: SegmentCalulator (used in the courseware
Learning Real Numbers, has 6.5 KLOC) and VisibleComputer has 8 KLOC.
These applets were developed using the Java Development Kit v.1.0.2.
WebSteer presents satisfactory performance in SparcStations, and Intel 486
(16 MB or more)
machines under Windows 95, using either appletviewer or Netscape 2.02
and 3.0. When accessing WebSteer is very likely that you experiment some
delay while the code is being downloaded over the Internet.
We are actively working in the enhancement of WebSteer, and are facing
several issues to be tackled in the near future. They are:
- construct an authoring environment that could
handle the remote creation and reconfiguration of courseware (scripts,
instruments and HTML);
- enhance JetScript to cope with parameters inside events.
This will add higher-order capacity to JetScript and
prepare for the possible application of WebSteer in the construction of
arbitrary networked software;
- add support to more advanced HTML features in the Slide Projector,
such as forms and tables;
- construct an user accessible event monitoring
system, that could easily track, diagnose, interpret and summarize user
activity. One such system should also be made available for remote monitoring
by teachers and course facilitators;
- collect real usage data that could prove
the effectiveness of Websteer for
distance education and training;
- deliver a public version of WebSteer, for use by educational
and research institutions;
Our findings about the WebSteer project are that:
- it is very easy to adapt existing applets to be used as instruments;
- java is the most promising technology for development of interactive
networked components, due to its openess and ubiquitiness;
- any highly interactive networked software, courseware
included here, must employ some scripting language to act as a glue
connecting otherwise unknown components. This scripting language should be as
simple and clear as possible, and JetScript is one such example;
- the interactivity between applets and HTML browsing provided by
WebSteer presents a tangible beneficial effect, that may be explored in some
other computational contexts.
- although we have not built an authoring environment,
we feel that is feasible use WebSteer to create real courseware;
We wish to express our thanks to the Recife Java Team, for the hard work
in the construction of the prototype of WebSteer and coursewares; to Sun
Microsystems, for providing the source code of the alpha version of the HTML
browser HotJava,
used as baseline for construction of the Slide Projector; and to
Pedro Falcão Goncalves, for its comments and suggestions.
- National Science Foundation, (1995),
NSF Educational Technology Workshop (Setting a Research Agenda for
Computer Science in Educational Technology),
http://www.cc.gatech.edu/gvu/edtech/nsfws/
- U.S. Department of Education, (1995),
The Future of Networking Technologies for Learning,
U.S. Department of Education - Office of Educational Technology,
http://www.ed.gov/Technology/Futures/
- Riesbeck, Chris, et alli, (1995),
Tools for Authoring Educational Technology,
in NSF Educational Technology Workshop,
http://www.cc.gatech.edu/gvu/edtech/nsfws/tools.html
- Gosling, James and McGilton, Henry, (1996),
The Java Language Environment: A White Paper,
Javasoft,
http://www.javasoft.com/doc/language_environment/
- Gamelan,
Educational Applets Directory,
http://www-a.gamelan.com/pages/Gamelan.educational.html
- Roschelle, Jeremy and Kaput, James, (1996),
OpenDoc and Open Scripting Architectures
for Educational Components,
ITS'96 Workshop on Architectures and Methods for Designing
Cost-Effective and Reusable ITSs,
http://advlearn.lrdc.pitt.edu/its-arch/papers/roschelle.html
- Orfali, R., Harkey, D., and Edwards, J., (1995),
The Essential distributed objects survival guide,
New York: Wiley.
- JavaSoft,
JavaSoft home-page,
http://www.javasoft.com/
- Fernandes, Jorge and Meira, Silvio,
The WebSteer Project home-page,
http://www.di.ufpe.br/~java/websteer/