# SubjectAreaTemplates

*Any additions to the problems below should use the format of the full problem template. Also, your example should illustrate the technique without giving away the answer to an existing WeBWorK question.*

## Complete Problem Authoring Templates by Subject Area

This page has complete examples of problem templates organized by subject area. Within each subject, we give an explicit and brief description of the essential characteristics of each type of question. To keep overlap to a minimum, we try to give an example of each problem technique exactly once, which means you may need to look for a particular problem technique under other subject headings until you find it. We try to give a fairly complete list of techniques, rather than a complete list of types of questions that one might ask in each subject. All of these questions exist in the National Problem Library (NPL) at `NationalProblemLibrary/FortLewis/Authoring/Templates/`

A detailed list of code snippets for specific problem techniques has it's own category: index of problem techniques.

### Miscellaneous Templates

- Answer is a number or a function. The most commonly used template file.
- Answer is a function with domain issues. We show how to set the domain and test points for evaluation and give customized answer hints. (Uses answerHints.pl)
- A multiple choice question with radio buttons. There is only one correct answer and all choices are shown.
- A multiple choice question with a popup menu. There is only one correct answer and the choices are hidden until the menu is clicked on.
- A multiple choice question with checkboxes. There is possibly more than one correct answer and all choices are shown.
- A list of many multiple choice questions with popup menus. For several multiple choice questions that share common answers. (Uses PGgraders.pl)
- A matching question with popup menus. A matching question in two-column format. (Uses unionTables.pl and PGgraders.pl)

### Algebra

- Answer is a fraction (rational number). This question requires students to simplify their answer. (Uses contextFraction.pl)
- Answer is an algebraic fraction. Uses two answer blanks for the fraction and requires students simplify their answer. (Uses parserMultiAnswer.pl)
- Answer blank in the exponent. For questions about simplifying exponents.
- Answer is a an equation that defines a function. The answer is an equation of the form y = f(x). (Uses parserAssignment.pl)
- Answer is an equation that implicitly defines a function. An equation for a circle. (Uses parserImplicitEquation.pl)
- Answer is any solution to an equation. Checks whether the student answer is a solution to an equation. (Uses parserSolutionFor.pl)
- Answer is an inequality. Standard solve an inequality question. (Uses contextInequalities.pl)
- Answer is a fully expanded and simplified polynomial. Multiplying two linear terms together and collecting like terms. (Uses contextLimitedPolynomial.pl)
- Answer is a factored polynomial. Standard factoring a quadratic question. (Uses contextPolynomialFactors.pl and contextLimitedPowers.pl)
- Answers can be entered into several answer blanks in any order. Factoring using separate answer blanks and the unordered answer checker. (Uses unorderedAnswer.pl)
- Answer must be simplified using laws of logarithms. Typical laws of logarithms question that disables certain operations so students must simplify their answer.

### Trigonometry

- Answers that are periodic. The student answer is evaluated modulo the period.
- Disabling functions so students must simplify answers. Unit circle trig question requiring students enter fractional answers. (Uses contextFraction.pl)
- Trig functions in degrees. Trig functions are redefined to be in degrees.
- Requiring trig identities be used. Cleverly redefining functions so that students must apply trig identities.
- Proving trig identities 1. A multi-part question that walks students through proving a trig identity. All parts are revealed sequentially and shown on the same page.
- Proving trig identities 2. The same multi-part question, but with each part shown on its own page. (Uses compoundProblem.pl)

### Precalculus

- Domain and range of a function. Requires students to enter answers as inequalities using correct variables. (Uses contextInequalities.pl)
- Dynamically generated graph. A dynamically generated graph placed side-by-side with text. (Uses PGgraphmacros.pl and unionTables.pl)
- Function decomposition. Write a given function as a composition of two non-identity functions. (Uses answerComposition.pl)
- Scaling and translating functions. Adding a named function to the context for a scaling and translating question. (Uses parserFunction.pl)
- Table of values for a function. Fill in a table of values for a function.
- Answer could be a string, or a number, or a function, etc. For when a single answer could be a string or one of several other data types.
- Answer is a function up to multiplication. Answer is any quadratic with the specified roots. Uses a custom answer checker and adaptive parameters.
- Answer is a point or list of points. Finding the x-intercepts and y-intercepts of function, with lists of points as answers. (Uses contextLimitedPoint.pl)

### Differential Calculus

- Differentiating and evaluating a function. Differentiating functions and controlling how they are evaluated and answers are displayed. (Uses unionLists.pl)
- Answer is a number or formula with units. A velocity question with units. (uses parserNumberWithUnits.pl and parserFormulaWithUnits.pl)
- Answer is a difference quotient. Students are required to simplify their difference quotient. (Uses parserDifferenceQuotient.pl)
- Linear approximation. Gives hints to students who enter a number instead of an equation for a line. (Uses answerHints.pl and parserAssignment.pl)

### Integral Calculus

- Dynamically generated graphs with Riemann sums. Has graphs with shaded (filled) regions. (Uses weightedGrader.pl and PGgraphmacros.pl)
- Find the area of the shaded region. A dynamically generated graph with a shaded region. (Uses PGgraphmacros.pl and unionTables.pl)
- Indefinite integrals and general antiderivatives. Checks whether a student's answer differs from the correct answer by a constant. (Uses parserFormulaUpToConstant.pl)
- Interactive GeoGebra applet for the Fundamental Theorem of Calculus. Shows how to construct and include a GeoGebra (Java) applet. (Uses AppletObjects.pl)
- Answer blanks in the limits of integration. Uses tables cleverly to put answer blanks into the limits of integration. (Uses PGunion.pl and answerHints.pl)
- Volume of solids of revolution 1. Requires students to set up an integral and the answer blanks are weighted. (Uses weightedGrader.pl)
- Volume of solids of revolution 2. Requires students to set up an integral, the answer blanks are weighted, and the final answer provides full credit. (Uses weightedGrader.pl)
- Volume of solids of revolution 3. Requires students to set up an integral and all answers must be correct for any credit to be awarded.

### Sequences and Series

- Answer is an ordered list. The answer is a sequence of numbers.
- Sequences and recursively defined functions. We add a named function (dummy function) to the context for a recursively defined function. (Uses parserFunction.pl)
- Sequences with explicit formulas. Restricts the domain of the formula to positive integers to avoid errors in answer evaluation.
- Series tests. Requiring students to justify their answers for a series test. (Uses parserMultiAnswer.pl, PGgraders.pl, and unionTables.pl)

### Parametric Equations and Vector Parametric Equations

- Graphing a parametric curve in 2D. Plotting a polar curve in the plane.
- Graphing a parametric curve in 3D. Plotting a parametric curve in 3D space. (Uses LiveGraphicsParametricCurve3D.pl)
- Graphing a parametric surface in 3D. Plotting a parametric surface in 3D space. (Uses LiveGraphicsParametricSurface3D.pl)
- Answer is a parametric curve in space. Uses three separate answer blanks that are controlled by MultiAnswer. (Uses parserMultiAnswer.pl)
- Answer is a vector parametric curve in the plane. Requires students to enter a vector parametric curve with correct domain. (Uses parserMultiAnswer.pl and parserVectorUtils.pl)
- Answer involves a vector parametric curve and its derivatives. Shows how to get the components of a vector-valued function, and uses a custom answer checker. (Uses parserVectorUtils.pl)
- Answer is a vector parametric lines. Shows how to require a particular parametrization or allow any parametrization. (Uses parserVectorUtils.pl and parserParametricLine.pl)

### Multivariable Differential Calculus

- Answer is an equation for a line (in 2D) or a plane (in 3D). The answer can be any linear (affine) equation. (Uses parserImplicitPlane.pl)
- Contour plots. Shows how to construct a contour plot with a color gradient and labeled contours.
- Interactive 3D graph of a function in rectangular coordinates. Uses LiveGraphics3D Java applet to display an interactive graph. (Uses LiveGraphicsRectangularPlot3D.pl)
- Interactive 3D graph of a function in cylindrical coordinates. Uses LiveGraphics3D Java applet to display an interactive graph. (Uses LiveGraphicsCylindricalPlot3D.pl)

### Multivariable Integral Calculus

- Setting up a double integral. Allows a double integral to be set up in either order. (Uses parserMultiAnswer.pl)

### Vector Calculus

- Vector operations. Dot product, cross product, length, unit vectors, parallel vectors. (Uses parserVectorUtils.pl and unionLists.pl)
- Graphing a vector field in 2D. Plotting a vector field in the plane. (Uses PGgraphmacros.pl and VectorField2D.pl)
- Graphing a vector field in 3D. Plotting a vector field in space. (Uses LiveGraphicsVectorField3D.pl)

### Differential Equations

- Using the Heaviside step function We show how to evaluate answers involving the Heaviside step function. (Uses parserFunction.pl)
- Graphing a slope field.
- General solutions to ODEs with arbitrary constants. http://webwork.maa.org/moodle/mod/forum/discuss.php?d=378 and http://webwork.maa.org/moodle/mod/forum/discuss.php?d=324
- Primes in formulas http://webwork.maa.org/moodle/mod/forum/discuss.php?d=442

### Linear Algebra

- Matrices and matrix operations http://webwork.maa.org/moodle/mod/forum/discuss.php?d=354

### Complex Analysis

### Miscellaneous Topics

- Chemistry http://webwork.maa.org/moodle/mod/forum/discuss.php?d=449
- JavaScript graphing http://webwork.maa.org/moodle/mod/forum/discuss.php?d=431
- HTML input for dynamic problem adjustments http://webwork.maa.org/moodle/mod/forum/discuss.php?d=2351

### Graphing

- Dynamically generated graph. A dynamically generated graph placed side-by-side with text. (Uses PGgraphmacros.pl and unionTables.pl)
- Dynamically generated graphs with Riemann sums. Has graphs with shaded (filled) regions. (Uses weightedGrader.pl and PGgraphmacros.pl)
- Find the area of the shaded region. A dynamically generated graph with a shaded region. (Uses PGgraphmacros.pl and unionTables.pl)
- Interactive GeoGebra applet for the Fundamental Theorem of Calculus. Shows how to construct and include a GeoGebra (Java) applet. (Uses AppletObjects.pl)
- Graphing a parametric curve in 2D. Plotting a polar curve in the plane.
- Graphing a parametric curve in 3D. Plotting a parametric curve in 3D space. (Uses LiveGraphicsParametricCurve3D.pl)
- Graphing a parametric surface in 3D. Plotting a parametric surface in 3D space. (Uses LiveGraphicsParametricSurface3D.pl)
- Contour plots. Shows how to construct a contour plot with a color gradient and labeled contours.
- Interactive 3D graph of a function in rectangular coordinates. Uses LiveGraphics3D Java applet to display an interactive graph. (Uses LiveGraphicsRectangularPlot3D.pl)
- Interactive 3D graph of a function in cylindrical coordinates. Uses LiveGraphics3D Java applet to display an interactive graph. (Uses LiveGraphicsCylindricalPlot3D.pl)
- Graphing a vector field in 2D. Plotting a vector field in the plane. (Uses PGgraphmacros.pl and VectorField2D.pl)
- Graphing a vector field in 3D. Plotting a vector field in space. (Uses LiveGraphicsVectorField3D.pl)

### Links to Documentation

- MathObjects documentation Written by Davide Cervone
- POD documentation (POD - Plain Old Documentation)
- PG macro files Source code for pg/macros files.
- PG library files Source code for pg/lib files.