<exercises xml:id="fill-in-exercises">
<title>Fill-In Exercises</title>
<exercise label="fillin-integer">
<title>Fill-In, Integer Answer</title>
<statement>
<p>
The game of bowling uses <var width="28" /> pins that you try to knock down.
(This answer blank has been set to be very wide.)
</p>
</statement>
<setup>
<var>
<condition number="10">
<feedback>
<p>
Arranged in a triangle, there are <m>1+2+3+4 = 10</m> pins,
a so-called <term>triangular</term> number.
</p>
</feedback>
</condition>
<condition number="16">
<feedback>
<p>
<em>Close</em>!
You may have used hexadecimal notation,
when you did not really mean to.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Incorrect.
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
<exercise label="fillin-string-integer">
<title>Fill-In, String and Number Answers</title>
<statement>
<p>
Complete the following line of a Python program so that it will declare an integer variable <c>age</c> with an initial value of <c>5</c>. (These two answer blanks have been set to be very short.)
</p>
<p>
<var width="2" /> <c>age = </c> <var width="3" /><c>;</c>
</p>
</statement>
<setup>
<var>
<condition string="int">
<feedback>
<p>
A variable of type <c>int</c> is appropriate for whole number ages.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Remember that Java uses just the first three letters of the word
<q>integer</q>
to define an integral type.
</p>
</feedback>
</condition>
</var>
<var>
<condition number="5">
<feedback>
<p>
An integer variable may be initialized to a value.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Use <c>5</c> as the initial value of the variable.
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
<exercise label="fillin-case-insensitive">
<title>Fill-In, Case-Insensitive Answer</title>
<statement>
<p>
The word <var /> is the opposite of
<q>yes</q>. (Try a mixture of upper and lower-case letters.)
</p>
</statement>
<setup>
<var case="insensitive">
<condition string="no">
<feedback>
The correct answers are no, No, nO, and NO.
</feedback>
</condition>
<condition string=".*">
<feedback>
Incorrect.
</feedback>
</condition>
</var>
</setup>
</exercise>
<exercise label="fillin-decimal">
<title>Fill-In, Decimal Answer</title>
<statement>
<p>
The decimal number <var /> is an approximation of
<m>\sfrac{1}{3}</m> to within three significant figures. (
<url href="https://en.wikipedia.org/wiki/Significant_figures" visual="en.wikipedia.org/wiki/Significant_figures">Wikipedia</url>).
</p>
</statement>
<setup>
<var>
<condition number="0.333" tolerance="0.0005">
<feedback>
<p>
Any value in the interval <m>0.333\pm 0.0005</m> is correct.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Incorrect.
Did you provide three <em>significant figures</em>?
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
<exercise label="fillin-numbers-many-tests">
<title>Fill-In, New Markup Numbers</title>
<statement>
<p>
I love <m>\pi</m>.
What number am I thinking of,
accurate to two decimal places?
</p>
<p>
<fillin width="5" answer="3.14" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<numcmp use-answer="yes" />
<feedback>
<p>
The decimal approximation of <m>\pi</m> is <m>3.1415926535\ldots</m>,
but to two decimal places we write <m>3.14</m>.
</p>
</feedback>
</test>
<test>
<numcmp use-answer="yes" tolerance="0.1" />
<feedback>
<p>
Your answer is within 0.1 of the value I wanted.
</p>
</feedback>
</test>
<test>
<numcmp value="42" />
<feedback>
<p>
That is a reasonable guess, but no.
</p>
</feedback>
</test>
<test>
<numcmp min="3" max="4" />
<feedback>
<p>
You chose a value between 3 and 4.
</p>
</feedback>
</test>
<test>
<numcmp value="3" tolerance="0.5" />
<feedback>
<p>
You chose a value that rounds to 3.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-strings-">
<title>Fill-In, New Markup Strings</title>
<statement>
<p>
The word I'm thinking about is
<q>magic</q>. What word am I thinking about?
<fillin width="5" answer="magic" /> (Interactive feedback explores a variety of options: Try what happens if you mix the case,
or type in a number, or include more than the word, or try
<q>pizzazz</q>.")
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<strcmp use-answer="yes" />
</test>
<test>
<strcmp use-answer="yes" case="insensitive" />
<feedback>
<p>
Some of the characters used the wrong case.
</p>
</feedback>
</test>
<test>
<strcmp>[0-9]+</strcmp>
<feedback>
<p>
You typed a word made out of digits.
</p>
</feedback>
</test>
<test>
<strcmp use-answer="yes" strip="no" />
<feedback>
<p>
Your answer includes the correct word but has extra text.
</p>
</feedback>
</test>
<test>
<strcmp strip="no" case="insensitive">z.+z</strcmp>
<feedback>
<p>
Your answer includes text surrounded by z's.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="ex-demo-jscmp-primes">
<title>Fill-In, Javascript test of numbers</title>
<statement>
<p>
What is an example of a prime number less than 20?
<fillin width="5" answer="13" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<jscmp>
[2, 3, 5, 7, 11, 13, 17, 19].includes(Number(ans))
</jscmp>
<feedback>
<p>
Any number from the list <m>\{2, 3, 5, 7, 11, 13, 17, 19\}</m> is a prime number less than 20.
</p>
</feedback>
</test>
<test>
<jscmp>
function(){
const val=Number(ans);
if (val <= 0) { return "You need to give a positive integer." }
if (val >= 20) { return "The integer must be less than 20." }
for (let i=2; i<=3; i++) {
if (val % i == 0) { return `Your answer is composite; for example, it is divisible by ${i}.` }
}
return false;
}()
</jscmp>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-jscmp-palindrome">
<title>Fill-In, Javascript test of strings</title>
<statement>
<p>
What is an example of a palindrome?
<fillin width="5" answer="radar" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<jscmp>
function(){
const r1 = new RegExp("^\\w+$");
var result=r1.test(ans);
if (result) {
let revAns = ans.split("").reverse().join("");
result = (ans === revAns);
}
return result;
}()
</jscmp>
<feedback>
<p>
Any word that is the same forward and backward is a palindrome.
</p>
</feedback>
</test>
<test>
<strcmp strip="no">\w+\s\w+</strcmp>
<feedback>
<p>
Your response needs to be a single word.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-random-simple">
<title>Fill-In, Simple Randomization with Numbers</title>
<statement>
<p>
What is the square of <m>x=<eval obj="myNum" /></m>?
<m>x^2=</m><fillin width="5" mode="number" ansobj="mySquare" />
</p>
</statement>
<setup seed="1234">
<setupScript>
v.myNum=RNG.randDiscrete(2, 12, 1);
v.mySquare=v.myNum**2;
</setupScript>
</setup>
<evaluation>
<evaluate>
<test correct="yes">
<numcmp use-answer="yes" />
</test>
<test>
<numcmp object="myNum" />
<feedback>
<p>
You responded with the original number.
Now square it.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-math-solve-equation">
<title>Fill-In, Dynamic Math with Simple Numerical Answer</title>
<statement>
<p>
Solve the equation
<me>
<eval obj="theFunction" />=0
</me>
to get the value of <m>x</m>.
</p>
<p>
<m>x = </m> <fillin width="5" mode="math" ansobj="theAnswer" />
</p>
</statement>
<solution>
<p>
We want to isolate the <m>x</m> in the equation <m><eval obj="theFunction" />=0</m>.
Because addition of <m><eval obj="b" /></m> is the last operation,
we apply the inverse by adding <m><eval obj="negB" /></m> to both sides.
The new, but equivalent equation is now <m><eval obj="m" />x = <eval obj="negB" /></m>.
Dividing both sides of the equation by <m><eval obj="m" /></m>,
we obtain the solution <m>x=<eval obj="theAnswer" /></m>.
</p>
</solution>
<setup seed="12345">
<de-object name="m" context="number">
<de-random distribution="discrete" nonzero="yes" min="-4" max="5" by="1" />
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" />
</de-object>
<de-object name="negB" context="number">
<de-number reduce="yes">-b</de-number>
</de-object>
<de-object name="theFunction" context="formula">
<de-expression mode="formula" reduce="yes">m*x+b</de-expression>
</de-object>
<de-object name="theAnswer" context="formula">
<de-expression mode="formula" reduce="yes">-b/m</de-expression>
</de-object>
</setup>
<evaluation>
<evaluate>
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<de-expression mode="formula">{{b}}/{{m}}</de-expression>
<feedback>
Check for a sign error while isolating <m>x</m>.
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-math-find-derivatives">
<title>Fill-In, Dynamic Math with Formulas as Answers</title>
<statement>
<p>
Consider the function <m>f(x)=<eval obj="formula" /></m>.
Find <m>f'(x)</m> and <m>f''(x)</m>.
</p>
<p>
<m>f'(x) = </m> <fillin mode="math" width="15" ansobj="correctD1" name="firstD" /> and <m>f''(x)=</m> <fillin mode="math" width="15" ansobj="correctD2" name="secondD" />
</p>
</statement>
<solution>
<p>
The derivative of a constant is zero,
so <m>\frac{d}{dx}[<eval obj="b" />]=0</m>.
The term <m>x^{<eval obj="n" />}</m> is a power,
so the power rule gives us <m>\frac{d}{dx}[x^{<eval obj="n" />}]=<eval obj="n" />x^{<eval obj="nm1" />}</m>.
Putting this together, we find <m>f'(x)=<eval obj="correctD1" /></m>.
Applying the power rule a second time,
we find <m>f''(x)=<eval obj="correctD2" /></m>.
</p>
</solution>
<setup seed="1234">
<de-object name="a" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="n" context="number">
<de-random distribution="discrete" min="2" max="5" />
</de-object>
<de-object name="nm1" context="number">
<de-number reduce="yes">n-1</de-number>
</de-object>
<de-object name="nm2" context="number">
<de-number reduce="yes">n-2</de-number>
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" nonzero="yes" />
</de-object>
<de-object name="formula" context="formula">
<de-expression mode="formula">a*x^n+b</de-expression>
</de-object>
<de-object name="correctD1" context="formula">
<de-expression mode="derivative" reduce="yes">
<formula><eval obj="formula" /></formula>
<variable name="x" />
</de-expression>
</de-object>
<de-object name="correctD2" context="formula">
<de-expression mode="derivative" reduce="yes">
<formula><eval obj="correctD1" /></formula>
<variable name="x" />
</de-expression>
</de-object>
</setup>
<evaluation>
<evaluate submit="firstD">
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<mathcmp obj="correctD2" />
<feedback>
<p>
You confused which derivative is which.
</p>
</feedback>
</test>
</evaluate>
<evaluate submit="secondD">
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<eval obj="correctD1" />
<feedback>
<p>
You confused which derivative is which.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
<exercise label="fillin-math-decompose-function">
<title>Fill-In, Dynamic Math with Interdependent Formula Checking</title>
<statement>
<p>
Consider the function
<me>
h(x)=<eval obj="composition" />
</me>.
Find two nontrivial functions <m>f(x)</m> and <m>g(x)</m> so that <m>h(x) = f(g(x))</m>.
</p>
<p>
<m>f(x) = </m> <fillin mode="math" width="15" ansobj="outerFormula" name="fGiven" /> and <m>g(x)=</m> <fillin mode="math" width="15" ansobj="innerFormula" name="gGiven" />
</p>
</statement>
<solution>
<p>
Noticing that the expression <m><eval obj="innerFormula" /></m> appears inside parentheses with a power,
it makes sense to think of that as the inner function,
defining <m>g(x) = <eval obj="innerFormula" /></m>.
The outer function describes what happens to that.
If we imagined replacing the formula <m><eval obj="innerFormula" /></m> with a box and then call that box our variable <m>x</m>,
we find the outer function is given by <m>f(x) = <eval obj="outerFormula" /></m>.
</p>
<p>
This is not the only non-trivial composition.
Can you find others?
</p>
</solution>
<setup seed="4321">
<de-object name="a" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="n" context="number">
<de-random distribution="discrete" min="2" max="5" />
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" by="1" nonzero="yes" />
</de-object>
<de-object name="c" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="d" context="number">
<de-random distribution="discrete" min="-10" max="10" by="1" nonzero="yes" />
</de-object>
<de-object name="outerFormula" context="formula">
<de-expression mode="formula" reduce="yes">a*x^n+b</de-expression>
</de-object>
<de-object name="innerFormula" context="formula">
<de-expression mode="formula" reduce="yes">c*x+d</de-expression>
</de-object>
<de-object name="identityFunction" context="formula">
<de-expression mode="formula">x</de-expression>
</de-object>
<de-object name="composition" context="formula" reduce="yes">
<de-expression mode="substitution">
<formula><eval obj="outerFormula" /></formula>
<variable name="x"><eval obj="innerFormula" /></variable>
</de-expression>
</de-object>
</setup>
<evaluation answers-coupled="yes">
<evaluate name="fGiven">
<test>
<eval obj="identityFunction" />
<feedback>
<p>
<m>f(x)=x</m> is not allowed for nontrivial compositions.
</p>
</feedback>
</test>
<test>
<logic op="not">
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="fGiven" /></formula>
<variable name="x"><eval obj="gGiven" /></variable>
</de-expression>
</mathcmp>
</logic>
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="gGiven" /></formula>
<variable name="x"><eval obj="fGiven" /></variable>
</de-expression>
</mathcmp>
<feedback>
<p>
You have composed in the wrong order.
</p>
</feedback>
</test>
</evaluate>
<evaluate name="gGiven">
<test>
<eval obj="identityFunction" />
<feedback>
<m>g(x)=x</m> is not allowed for nontrivial compositions.
</feedback>
</test>
</evaluate>
<evaluate all="yes">
<test correct="yes">
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="fGiven" /></formula>
<variable name="x"><eval obj="gGiven" /></variable>
</de-expression>
</mathcmp>
<logic op="not">
<mathcmp>
<eval obj="fGiven" />
<eval obj="identityFunction" />
</mathcmp>
</logic>
<logic op="not">
<mathcmp>
<eval obj="gGiven" />
<eval obj="identityFunction" />
</mathcmp>
</logic>
</test>
</evaluate>
</evaluation>
</exercise>
</exercises>
Exercises 3.18 Fill-In Exercises
View Source for exercises
1. Fill-In, Integer Answer.
View Source for exercise
<exercise label="fillin-integer">
<title>Fill-In, Integer Answer</title>
<statement>
<p>
The game of bowling uses <var width="28" /> pins that you try to knock down.
(This answer blank has been set to be very wide.)
</p>
</statement>
<setup>
<var>
<condition number="10">
<feedback>
<p>
Arranged in a triangle, there are <m>1+2+3+4 = 10</m> pins,
a so-called <term>triangular</term> number.
</p>
</feedback>
</condition>
<condition number="16">
<feedback>
<p>
<em>Close</em>!
You may have used hexadecimal notation,
when you did not really mean to.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Incorrect.
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
The game of bowling uses pins that you try to knock down. (This answer blank has been set to be very wide.)
2. Fill-In, String and Number Answers.
View Source for exercise
<exercise label="fillin-string-integer">
<title>Fill-In, String and Number Answers</title>
<statement>
<p>
Complete the following line of a Python program so that it will declare an integer variable <c>age</c> with an initial value of <c>5</c>. (These two answer blanks have been set to be very short.)
</p>
<p>
<var width="2" /> <c>age = </c> <var width="3" /><c>;</c>
</p>
</statement>
<setup>
<var>
<condition string="int">
<feedback>
<p>
A variable of type <c>int</c> is appropriate for whole number ages.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Remember that Java uses just the first three letters of the word
<q>integer</q>
to define an integral type.
</p>
</feedback>
</condition>
</var>
<var>
<condition number="5">
<feedback>
<p>
An integer variable may be initialized to a value.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Use <c>5</c> as the initial value of the variable.
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
Complete the following line of a Python program so that it will declare an integer variable
age
with an initial value of 5
. (These two answer blanks have been set to be very short.)age =
;
3. Fill-In, Case-Insensitive Answer.
View Source for exercise
<exercise label="fillin-case-insensitive">
<title>Fill-In, Case-Insensitive Answer</title>
<statement>
<p>
The word <var /> is the opposite of
<q>yes</q>. (Try a mixture of upper and lower-case letters.)
</p>
</statement>
<setup>
<var case="insensitive">
<condition string="no">
<feedback>
The correct answers are no, No, nO, and NO.
</feedback>
</condition>
<condition string=".*">
<feedback>
Incorrect.
</feedback>
</condition>
</var>
</setup>
</exercise>
The word is the opposite of “yes”. (Try a mixture of upper and lower-case letters.)
4. Fill-In, Decimal Answer.
View Source for exercise
<exercise label="fillin-decimal">
<title>Fill-In, Decimal Answer</title>
<statement>
<p>
The decimal number <var /> is an approximation of
<m>\sfrac{1}{3}</m> to within three significant figures. (
<url href="https://en.wikipedia.org/wiki/Significant_figures" visual="en.wikipedia.org/wiki/Significant_figures">Wikipedia</url>).
</p>
</statement>
<setup>
<var>
<condition number="0.333" tolerance="0.0005">
<feedback>
<p>
Any value in the interval <m>0.333\pm 0.0005</m> is correct.
</p>
</feedback>
</condition>
<condition string=".*">
<feedback>
<p>
Incorrect.
Did you provide three <em>significant figures</em>?
</p>
</feedback>
</condition>
</var>
</setup>
</exercise>
The decimal number is an approximation of \(\sfrac{1}{3}\) to within three significant figures. ( Wikipedia).
1
en.wikipedia.org/wiki/Significant_figures
5. Fill-In, New Markup Numbers.
View Source for exercise
<exercise label="fillin-numbers-many-tests">
<title>Fill-In, New Markup Numbers</title>
<statement>
<p>
I love <m>\pi</m>.
What number am I thinking of,
accurate to two decimal places?
</p>
<p>
<fillin width="5" answer="3.14" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<numcmp use-answer="yes" />
<feedback>
<p>
The decimal approximation of <m>\pi</m> is <m>3.1415926535\ldots</m>,
but to two decimal places we write <m>3.14</m>.
</p>
</feedback>
</test>
<test>
<numcmp use-answer="yes" tolerance="0.1" />
<feedback>
<p>
Your answer is within 0.1 of the value I wanted.
</p>
</feedback>
</test>
<test>
<numcmp value="42" />
<feedback>
<p>
That is a reasonable guess, but no.
</p>
</feedback>
</test>
<test>
<numcmp min="3" max="4" />
<feedback>
<p>
You chose a value between 3 and 4.
</p>
</feedback>
</test>
<test>
<numcmp value="3" tolerance="0.5" />
<feedback>
<p>
You chose a value that rounds to 3.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
6. Fill-In, New Markup Strings.
View Source for exercise
<exercise label="fillin-strings-">
<title>Fill-In, New Markup Strings</title>
<statement>
<p>
The word I'm thinking about is
<q>magic</q>. What word am I thinking about?
<fillin width="5" answer="magic" /> (Interactive feedback explores a variety of options: Try what happens if you mix the case,
or type in a number, or include more than the word, or try
<q>pizzazz</q>.")
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<strcmp use-answer="yes" />
</test>
<test>
<strcmp use-answer="yes" case="insensitive" />
<feedback>
<p>
Some of the characters used the wrong case.
</p>
</feedback>
</test>
<test>
<strcmp>[0-9]+</strcmp>
<feedback>
<p>
You typed a word made out of digits.
</p>
</feedback>
</test>
<test>
<strcmp use-answer="yes" strip="no" />
<feedback>
<p>
Your answer includes the correct word but has extra text.
</p>
</feedback>
</test>
<test>
<strcmp strip="no" case="insensitive">z.+z</strcmp>
<feedback>
<p>
Your answer includes text surrounded by z's.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
7. Fill-In, Javascript test of numbers.
View Source for exercise
<exercise label="ex-demo-jscmp-primes">
<title>Fill-In, Javascript test of numbers</title>
<statement>
<p>
What is an example of a prime number less than 20?
<fillin width="5" answer="13" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<jscmp>
[2, 3, 5, 7, 11, 13, 17, 19].includes(Number(ans))
</jscmp>
<feedback>
<p>
Any number from the list <m>\{2, 3, 5, 7, 11, 13, 17, 19\}</m> is a prime number less than 20.
</p>
</feedback>
</test>
<test>
<jscmp>
function(){
const val=Number(ans);
if (val <= 0) { return "You need to give a positive integer." }
if (val >= 20) { return "The integer must be less than 20." }
for (let i=2; i<=3; i++) {
if (val % i == 0) { return `Your answer is composite; for example, it is divisible by ${i}.` }
}
return false;
}()
</jscmp>
</test>
</evaluate>
</evaluation>
</exercise>
8. Fill-In, Javascript test of strings.
View Source for exercise
<exercise label="fillin-jscmp-palindrome">
<title>Fill-In, Javascript test of strings</title>
<statement>
<p>
What is an example of a palindrome?
<fillin width="5" answer="radar" />
</p>
</statement>
<evaluation>
<evaluate>
<test correct="yes">
<jscmp>
function(){
const r1 = new RegExp("^\\w+$");
var result=r1.test(ans);
if (result) {
let revAns = ans.split("").reverse().join("");
result = (ans === revAns);
}
return result;
}()
</jscmp>
<feedback>
<p>
Any word that is the same forward and backward is a palindrome.
</p>
</feedback>
</test>
<test>
<strcmp strip="no">\w+\s\w+</strcmp>
<feedback>
<p>
Your response needs to be a single word.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
9. Fill-In, Simple Randomization with Numbers.
View Source for exercise
<exercise label="fillin-random-simple">
<title>Fill-In, Simple Randomization with Numbers</title>
<statement>
<p>
What is the square of <m>x=<eval obj="myNum" /></m>?
<m>x^2=</m><fillin width="5" mode="number" ansobj="mySquare" />
</p>
</statement>
<setup seed="1234">
<setupScript>
v.myNum=RNG.randDiscrete(2, 12, 1);
v.mySquare=v.myNum**2;
</setupScript>
</setup>
<evaluation>
<evaluate>
<test correct="yes">
<numcmp use-answer="yes" />
</test>
<test>
<numcmp object="myNum" />
<feedback>
<p>
You responded with the original number.
Now square it.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
10. Fill-In, Dynamic Math with Simple Numerical Answer.
View Source for exercise
<exercise label="fillin-math-solve-equation">
<title>Fill-In, Dynamic Math with Simple Numerical Answer</title>
<statement>
<p>
Solve the equation
<me>
<eval obj="theFunction" />=0
</me>
to get the value of <m>x</m>.
</p>
<p>
<m>x = </m> <fillin width="5" mode="math" ansobj="theAnswer" />
</p>
</statement>
<solution>
<p>
We want to isolate the <m>x</m> in the equation <m><eval obj="theFunction" />=0</m>.
Because addition of <m><eval obj="b" /></m> is the last operation,
we apply the inverse by adding <m><eval obj="negB" /></m> to both sides.
The new, but equivalent equation is now <m><eval obj="m" />x = <eval obj="negB" /></m>.
Dividing both sides of the equation by <m><eval obj="m" /></m>,
we obtain the solution <m>x=<eval obj="theAnswer" /></m>.
</p>
</solution>
<setup seed="12345">
<de-object name="m" context="number">
<de-random distribution="discrete" nonzero="yes" min="-4" max="5" by="1" />
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" />
</de-object>
<de-object name="negB" context="number">
<de-number reduce="yes">-b</de-number>
</de-object>
<de-object name="theFunction" context="formula">
<de-expression mode="formula" reduce="yes">m*x+b</de-expression>
</de-object>
<de-object name="theAnswer" context="formula">
<de-expression mode="formula" reduce="yes">-b/m</de-expression>
</de-object>
</setup>
<evaluation>
<evaluate>
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<de-expression mode="formula">{{b}}/{{m}}</de-expression>
<feedback>
Check for a sign error while isolating <m>x</m>.
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
11. Fill-In, Dynamic Math with Formulas as Answers.
View Source for exercise
<exercise label="fillin-math-find-derivatives">
<title>Fill-In, Dynamic Math with Formulas as Answers</title>
<statement>
<p>
Consider the function <m>f(x)=<eval obj="formula" /></m>.
Find <m>f'(x)</m> and <m>f''(x)</m>.
</p>
<p>
<m>f'(x) = </m> <fillin mode="math" width="15" ansobj="correctD1" name="firstD" /> and <m>f''(x)=</m> <fillin mode="math" width="15" ansobj="correctD2" name="secondD" />
</p>
</statement>
<solution>
<p>
The derivative of a constant is zero,
so <m>\frac{d}{dx}[<eval obj="b" />]=0</m>.
The term <m>x^{<eval obj="n" />}</m> is a power,
so the power rule gives us <m>\frac{d}{dx}[x^{<eval obj="n" />}]=<eval obj="n" />x^{<eval obj="nm1" />}</m>.
Putting this together, we find <m>f'(x)=<eval obj="correctD1" /></m>.
Applying the power rule a second time,
we find <m>f''(x)=<eval obj="correctD2" /></m>.
</p>
</solution>
<setup seed="1234">
<de-object name="a" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="n" context="number">
<de-random distribution="discrete" min="2" max="5" />
</de-object>
<de-object name="nm1" context="number">
<de-number reduce="yes">n-1</de-number>
</de-object>
<de-object name="nm2" context="number">
<de-number reduce="yes">n-2</de-number>
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" nonzero="yes" />
</de-object>
<de-object name="formula" context="formula">
<de-expression mode="formula">a*x^n+b</de-expression>
</de-object>
<de-object name="correctD1" context="formula">
<de-expression mode="derivative" reduce="yes">
<formula><eval obj="formula" /></formula>
<variable name="x" />
</de-expression>
</de-object>
<de-object name="correctD2" context="formula">
<de-expression mode="derivative" reduce="yes">
<formula><eval obj="correctD1" /></formula>
<variable name="x" />
</de-expression>
</de-object>
</setup>
<evaluation>
<evaluate submit="firstD">
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<mathcmp obj="correctD2" />
<feedback>
<p>
You confused which derivative is which.
</p>
</feedback>
</test>
</evaluate>
<evaluate submit="secondD">
<test correct="yes">
<mathcmp use-answer="yes" />
</test>
<test>
<eval obj="correctD1" />
<feedback>
<p>
You confused which derivative is which.
</p>
</feedback>
</test>
</evaluate>
</evaluation>
</exercise>
12. Fill-In, Dynamic Math with Interdependent Formula Checking.
View Source for exercise
<exercise label="fillin-math-decompose-function">
<title>Fill-In, Dynamic Math with Interdependent Formula Checking</title>
<statement>
<p>
Consider the function
<me>
h(x)=<eval obj="composition" />
</me>.
Find two nontrivial functions <m>f(x)</m> and <m>g(x)</m> so that <m>h(x) = f(g(x))</m>.
</p>
<p>
<m>f(x) = </m> <fillin mode="math" width="15" ansobj="outerFormula" name="fGiven" /> and <m>g(x)=</m> <fillin mode="math" width="15" ansobj="innerFormula" name="gGiven" />
</p>
</statement>
<solution>
<p>
Noticing that the expression <m><eval obj="innerFormula" /></m> appears inside parentheses with a power,
it makes sense to think of that as the inner function,
defining <m>g(x) = <eval obj="innerFormula" /></m>.
The outer function describes what happens to that.
If we imagined replacing the formula <m><eval obj="innerFormula" /></m> with a box and then call that box our variable <m>x</m>,
we find the outer function is given by <m>f(x) = <eval obj="outerFormula" /></m>.
</p>
<p>
This is not the only non-trivial composition.
Can you find others?
</p>
</solution>
<setup seed="4321">
<de-object name="a" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="n" context="number">
<de-random distribution="discrete" min="2" max="5" />
</de-object>
<de-object name="b" context="number">
<de-random distribution="discrete" min="-10" max="10" by="1" nonzero="yes" />
</de-object>
<de-object name="c" context="number">
<de-random distribution="discrete" min="-4" max="5" by="1" nonzero="yes" />
</de-object>
<de-object name="d" context="number">
<de-random distribution="discrete" min="-10" max="10" by="1" nonzero="yes" />
</de-object>
<de-object name="outerFormula" context="formula">
<de-expression mode="formula" reduce="yes">a*x^n+b</de-expression>
</de-object>
<de-object name="innerFormula" context="formula">
<de-expression mode="formula" reduce="yes">c*x+d</de-expression>
</de-object>
<de-object name="identityFunction" context="formula">
<de-expression mode="formula">x</de-expression>
</de-object>
<de-object name="composition" context="formula" reduce="yes">
<de-expression mode="substitution">
<formula><eval obj="outerFormula" /></formula>
<variable name="x"><eval obj="innerFormula" /></variable>
</de-expression>
</de-object>
</setup>
<evaluation answers-coupled="yes">
<evaluate name="fGiven">
<test>
<eval obj="identityFunction" />
<feedback>
<p>
<m>f(x)=x</m> is not allowed for nontrivial compositions.
</p>
</feedback>
</test>
<test>
<logic op="not">
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="fGiven" /></formula>
<variable name="x"><eval obj="gGiven" /></variable>
</de-expression>
</mathcmp>
</logic>
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="gGiven" /></formula>
<variable name="x"><eval obj="fGiven" /></variable>
</de-expression>
</mathcmp>
<feedback>
<p>
You have composed in the wrong order.
</p>
</feedback>
</test>
</evaluate>
<evaluate name="gGiven">
<test>
<eval obj="identityFunction" />
<feedback>
<m>g(x)=x</m> is not allowed for nontrivial compositions.
</feedback>
</test>
</evaluate>
<evaluate all="yes">
<test correct="yes">
<mathcmp>
<eval obj="composition" />
<de-expression context="formula" mode="substitution">
<formula><eval obj="fGiven" /></formula>
<variable name="x"><eval obj="gGiven" /></variable>
</de-expression>
</mathcmp>
<logic op="not">
<mathcmp>
<eval obj="fGiven" />
<eval obj="identityFunction" />
</mathcmp>
</logic>
<logic op="not">
<mathcmp>
<eval obj="gGiven" />
<eval obj="identityFunction" />
</mathcmp>
</logic>
</test>
</evaluate>
</evaluation>
</exercise>