First and foremost, WeBWorK
attempts to build on the freely available technology of others. This
dependence on common web technology is probably the most significant
difference between CAPA and WeBWorK. CAPA is a self-contained C program and the advances in processing must come from improvements to CAPA itself. WeBWorK knits together existing web programs and the improvements which the internet community makes to WeBWorK components are immediately available to those using WeBWorK. Because of this use of commonly available web programs, WeBWorK
has been able to match and sometimes exceed CAPA's capabilities in less
than a year and a half of part-time development by two professors, a
student systems manager, and two student interns.
We use web browsers (Netscape, Lynx, Microsoft Internet Explorer) to
display the information. This means that any new improvements for
viewing internet documents are immediately available to those designing
WeBWorK problems -- little or no modification of WeBWorK
itself is needed to take advantage of these improvements. In addition
to GIF illustrations, one can use animated GIF's, HTML hyper links or
JAVA applets to enhance the effectiveness of a problem. Of course Lynx,
cannot view graphical data, and many current computers don't have
sufficient memory, power or bandwidth to execute JAVA code, but because
of the tolerant design standards of internet HTML it is possible to
offer enhanced versions of a homework problem to those blessed with
powerful equipment and still allow the basic version of the problem to
be read and interpreted by programs of a previous electronic
generation.
We use Perl, a scripting language similar to C, to process the problem
sets as written by the instructor and deliver it (in real time) to the
student requesting the document. Perl is free, well designed, written
and maintained, and available on a wide variety of platforms. It is
also heavily used, so that knowledge of Perl is widespread among
webmasters creating dynamic web pages. Since WeBWorK started,
the switch from Perl4 to Perl5 has created several new possibilities
for simplifying the creation of problem sets, without any basic changes
in WeBWorK itself. This is an example of the advantages of building WeBWorK on the technology of others -- WeBWorK can immediately take advantage of advances in the basic technology provided by the web community.
Maintaining the database which remembers which version of the problem
goes to which student is something which we have, to a large extent had
to do ourselves, although even here we have used GDBM -- the no frills
database tool created by Gnu software. We are still searching for a
fast, moderately powerful database which will meet our needs in this
regard.
In designing the problem programming interface for the professor we
seek to emulate some of the successful text processing languages such
as TeX and Perl.
First, the instructor should be able to use the system in simple ways
without learning the entire system. If your problems are similar to
existing problems, then you should be able to safely modify these
template problems to achieve your goals.
Along with this comes the principle of "minimum surprise", once the
instructor is somewhat familiar with the system things that SHOULD work
will work, or at the very least they will fail gracefully.
At the other extreme comes the principle of extensibility -- if the
instructor understands the system he or she should be able to extend it
functionality without rewriting the entire system from scratch. This
principle is achieved, as in TeX, by creating macro packages which
simplify writing out the problems. These macro packages can be
customized individually for each class or instructor using a common WeBWorK
system. Since it is possible to use the full power of the text
processing language Perl in writing the macro packages this provides
great flexibility for experimentation and improvement without altering
the basic WeBWorK framework.