Click to enlarge

This PG code shows how to write a question whose answer is an essay. This feature was introduced in Fall 2012.

PG problem file Explanation

Problem tagging:

```DOCUMENT();
"PGstandard.pl",
"MathObjects.pl",
"parserPopUp.pl",
"PGessaymacros.pl",
"PGcourse.pl",
);
TEXT(beginproblem());

```

Initialization: Use the `PGessaymacros.pl` for the essay answer and `parserPopUp.pl` for the multiple choice drop down menu. Setting `\$showPartialCorrectAnswers = 0;` means that students will not receive feedback on whether their answers are correct. The all-or-nothing problem grader (the standard problem grader) is used in order to withhold assigning any credit when the student submits an answer. This allows the professor to manually determine what percentage the student should get. If the standard problem grader was not used here, then the default problem grader (the average problem grader) would award 50 percent credit to students who answer the multiple choice question correct.

```Context("Numeric");

\$popup = PopUp(
[ "Choose", "True", "False" ], # choices
);

\$a = random(2,5,1);

\$f1 = Compute("ln(x (x-\$a))");
\$f2 = Compute("ln(x) + ln(x-\$a)");
```

Setup: Nothing out of the ordinary happens here.

```Context()->texStrings;
BEGIN_TEXT
Answer the following true / false question and
\$BR
\$BR
For all real numbers \( x \), \( \$f1 = \$f2 \).
\$BR
\$BR
\$BR
\{ essay_box(8,60) \}
END_TEXT
Context()->normalStrings;
```

Main Text: Clearly communicate to the student the expectations of the problem and how it will be graded. The `essay_box(w,h)` is resizable and takes inputs for initial width and height.

```ANS( \$popup->cmp() );
ANS( essay_cmp() );
```

Answer Evaluation: The essay answer is graded manually by the professor. Hand grading is done either (1) by clicking on the homework set and clicking the Grade problem link in the rightmost column of the problem list

or (2) by clicking on Statistics in

Note that `essay_cmp()` is not associated with any object (i.e., it is not `\$essay->cmp()`).

```Context()->texStrings;
BEGIN_SOLUTION
\${PAR}SOLUTION:\${PAR}
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();
```

Solution: