Technical design philosophy for WeBWorK
What is the technological design philosophy of WeBWorK?
- 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.