WeBWorK is a free (GPL/Artistic) Perl-based system for delivering individualized homework problems over the web. It was originally developed in 1995 by Profs. Arnold Pizer and Michael Gage at the University of Rochester Department of Mathematics, for use in mathematics instruction. It is now supported by a team of developers from several institutions and is used for a variety of subjects.
WeBWorK enhances the educational process in several ways. By providing students with immediate feedback as to the correctness of their answers, students are encouraged to make multiple attempts until they succeed. By individualizing problems, cheating is discouraged. By providing instructors with real-time statistics, lesson plans can be customized to better serve students.
The major way in which WeBWorK differs from other web-based homework systems is in the way problems are written. The PG ("problem generation") language allows the inclusion of both Perl and LaTeX code, allowing problem authors to take advantage of the syntactic efficiency of Perl and the typographical flexibility of LaTeX (which is pretty much necessary for rendering mathematics expressions).
The process of defining a problem is highly modular, with various pluggable display macros, answer evaluators, and graders. This allows for a high degree of freedom in defining how problems behave.
A library of canned problems is provided, with over 12,000 problems contributed to the National Problem Library (or NPL) at last count. A large collection of macro files which simplify writing new problems is also available. (Use the MathObjects macros provided by Davide Cervone where ever possible to simplify the writing of the problem and to make it easier to maintain.)
WeBWorK uses Apache with mod_perl, MySQL, LaTeX, dvipng, the GD graphics library, and several CPAN modules. WeBWorK is being used on Linux, FreeBSD, and Solaris, and will run on any UNIX-like system that supports its dependencies.