Most people write problems starting from templates. Problems from the OPL can be modified to suit individual needs, or existing problem templates can be used to create new problems.
WeBWorK problems are written in Perl, using three levels of macros. PG macros (the Problem Generation language) implement basic code e.g. randomization that sets up the problem. MathObject macros package mathematical entities such as numbers, formulas, vectors, matrices, sets, etc., into objects that behave in a natural way and contain methods for checking students' answers. PGML macros give authors greater control over the problem display and facilitate organizing the PG/MathObjects code in a way that makes the code easier to understand and maintain. Many older problems were written using only PG and MathObjects, or PG alone because MathObjects or PGML weren't available. Authors of new problems are encouraged to use all three levels of macros, except in certain specialized cases where the old methods work best.
All of the templates mentioned above use PG, and most use the PGML and MathObject Macros. (Look for the lines "PGML.pl" and "MathObjects.pl" in the LoadMacros section of the code). For those who would like to read up on the basics of coding problems the following pages are recommended:
- Problem Authoring Background Information -- includes a PG language overview, some comments about editing problems and ensuring server access.
- MathObjects -- information on authoring problems using MathObjects.
- PGML -- information on authoring problem using the PGML markup language.
- PG-Labs -- try out code fragments on line including code fragments containing MathObjects and PGML. This is a quick way to learn the fine points of the MathObject and PGML syntax.
Reference documents and manuals
This category currently contains no pages or media.