# DESCRIPTION## WeBWorK problem written by Justin Heckman# Council Bluffs Community Schools# ENDDESCRIPTION## DBsubject('')## DBchapter('')## DBsection('')## KEYWORDS('')## TitleText1('')## EditionText1('')## AuthorText1('')## Section1('')## Problem1('')## Author('Justin Heckman')## Institution('Council Bluffs Community School District')DOCUMENT();loadMacros("PGbasicmacros.pl","PGstandard.pl","PGcourse.pl","MathObjects.pl","PGauxiliaryFunctions.pl","PGchoicemacros.pl","PGanswermacros.pl",,"answerHints.pl","scaffold.pl","parserNumberWithUnits.pl","parserFormulaWithUnits.pl","PGML.pl","parserPopUp.pl");######################################################################################Context("Numeric");$xh= random(10, 30, 2);$vb= random(5, 15 , 1);$vobu= NumberWithUnits("0 m/s");$g=(9.81);$ag= NumberWithUnits("9.81 m/s^2");$xhu= NumberWithUnits("$xh m");$t= (sqrt(2*$xh/$g));$tu= NumberWithUnits("$t s");$xb= ($vb*$t);$xbu= NumberWithUnits("$xb m");$xhgg= random(150, 200, 2);$vC= random(20, 30, 1);$tbgg= (sqrt(2*$xhgg/$g));$xC= ($vC*$tbgg);$ns= ($xC/4);$nsu= NumberWithUnits("$ns m");$popup = PopUp(["?","a","b","c"],"c",);###################################################TEXT(beginproblem());###################################################BEGIN_PGMLThe subject of the 16 bit game Water Balloon Drop was to drop waterballoons from the top of buildings on unsuspecting bystanders. While thegame was rather lame a lacked dimension it does make for a good physicsproblem. By examining the height of the characters in the game in comparisonto the height that the balloons were dropped,it can be determined that theballoons are being dropped from a height of [$xh] m . Considering thatcyclists are worth more points and that they travel at a rate of [$vb] m/s on averagewe can use the following to determine how much ahead of a cyclist a balloonmust be dropped to strike a cyclist.a.) To find the answer to the posed question we will need to determine the the time it take forthe balloon to fall to the ground. To do so we will need to fill out a [:vvaxt:]. By examining thescenario we can determine the initial velocity of the water balloon, what is it?[_____]{$vobu}.b.) Since the building is on earth we can also determine the rate at which the balloon speedsup as it fell, a value we refer to as the acceleration due to gravity. What is theacceleration?[_____]{-$ag}.c.) Finally, we know the distance (x) that the balloon will fall, enter it now![_____]{$xhu}.d.) Now that we have 3 pieces of information in our vvaxt we can now determine theremaining pieces. Since we really want to know how far thebike will travel in the time it takes for the balloon to fall whatwe need to calculate is the time (t) that it takes the balloon tofall to the ground. Which formula will you use to solve fortime?A.) [: V_f=v_o+at :]B.) [:v_f^2=v_o^2+2ax:]C.) [:x=v_o*t = (1/2*a*t^2):][@ $popup->menu() @]*e.) How long will it take the balloon to fall to the ground?[_____]{$tu}.f.) Considering that the cyclist travels at 6 m/s how far in front of the moving cyclist should theballoon be dropped?[_____]{$xbu}.g.) The subject of a totally different but similargame is to drop water balloons from the top of thegolden gate bridge tower on top of passing cars.The towers have a height of [$xhgg] meters, accordingto Google, and that cars drive an average of [$vC] m/sacross the bridge. In this game we will assume thatthe beginning of each white stripe is 4 m from thebeginning of the next (2m stripe and 2m gap). If thisis game how many white stripes away from the edgeof the beam should a car be when the balloon is released in order to strike a car traveling ataverage speed?[_____]{$nsu}.END_PGMLinstall_problem_grader(~~&std_problem_grader);$showPartialCorrectAnswers = 0;ANS( $popup->cmp() );####################################################ENDDOCUMENT();
Forums
Search results: 21
Hello,
I continue to receive an error (see the attached screenshot) when I click on the Library Browser in WebWork.
I somehow managed to access it once, even after the error was , but now the error is back! I receive the same message in both Safari and Chrome.
Any thoughts or help would be much appreciated!
John @csuchico.edu]
A Partial success with a working model.
By comparing strings passed from an embedded GeoGebra applet to WeBWorK we were able to use a customized answer checker to solve our problem. To review: An embedded GeoGebra applet prompts students to click and drag 13 coordinate points for vertical placement for a connected line plot that approximates the sketch of the derivative overlaid a graph of the parent function. The string that is passed from GeoGebra is an accuracy score with an affixed percentage (for example 73%). The passed string has its percentage stripped within the custom answer checker which permits the remaining integer to be evaluated within a series of intervals that return comments and appropriate scores to the student.
We recognize that there is probably a more elegant way to create such a problem. But we could not get numeric values to pass from GeoGebra with any success and have settled on this stripped string custom answer checker.
Our Questions:
1.) Is there a way to pass numeric values from GeoGebra and assign them to a WeBWorK variable? We have not found any way to manage this.
2.) We would like to have greater control of the resulting score passed from GeoGebra to WeBWorK such that a score of 78% achieved in the applet is awarded 78% of the possible points in WeBWorK. Currently that 78% is rounded up to next multiple of 5 at 80% with our custom answer checker. Short of writing 100 individual answer checkers, is there a way to accomplish this?
3.) Sadly we could not work our way around the overlapping text issue that resulted from the latest version of GeoGebra. We try to use Mike Gage’s hot fix #354 but were not successful. How are the corrective lines below to be used? Is it not in the problem itself?
We are ww subscribers if this matters.
hot fix #354:
<div class = “enclose_geogebra_object”>
<div class = “geogebra_object”>
<script language=”javascript”>
…
</div>
</div>
Any feedback is most appreciated!
Tim
## This Homework problem uses an embedded GeoGebra applet
## that prompts the student to manipulate the vertical placement
## of 13 coordinate points in order to approximate the sketch of the
## derivative for a given graph of a function.
## The GeoGebra applet "scores" the student's attempt and this score
## must be passed back as a score to the WEBWorK answer checker.
## The GeoGebra applet was written by Professor Marc Renault and used here
## with permission. Check out his website for this and other GeoGebra applets
## related to first year Calculus courses:
## http://webspace.ship.edu/msrenault/GeoGebraCalculus/derivative_try_to_graph.html
DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGinfo.pl",
"unionTables.pl",
"AppletObjects.pl",
"contextArbitraryString.pl",
"answerHints.pl",
"PGcourse.pl",
);
TEXT(beginproblem());
$showPartialCorrectAnswers = 1;
Context("Numeric");
#################################
# Only a "correct" answer variable is declared as a string
# for comparison for the upper threshold of
# " > 95%" for a variable declaration
#################################
Context("ArbitraryString");
$cor ="> 95%"; # Accuracy above 95% is awarded 100%
Context("Numeric");
######################################
# Create link to applet:
###################################
# You can name your applet (anything reasonable :-) )
# Adjust the height and width as desired
# Paste the geogebra parameters in at the bottom of the page just above the
# command end command
# so that they don't get in the way
###################################
$appletName = "numberTest";
$applet = GeogebraWebApplet(
code => "geogebra.GeoGebraApplet",
archive => "geogebra.jar",
codebase => findAppletCodebase("geogebra.jar"),
appletName => $appletName,
appletId => $appletName,
submitActionAlias => 'getAppletValues', # default actionAlias
initializeActionAlias => '', # default actionAlias
setStateAlias => 'setXML',
getStateAlias => 'getXML',
setConfigAlias => '',
getConfigAlias => '',
returnFieldName => '',
width => 700, # may want to modify width
height => 300, # may want to modify height
# mayscript => "true",
debugMode => 0, # set debugMode to 0 for no debug
# to 1 to make xml representation visible
# to 2 to add alerts detailing progression
# through the applet
onInit => 'ggbOnInit',
type => 'geogebraweb',
# "submitActionScript" takes the student submission in a geogebra applet
# and passes it to webwork: getQE() is a webwork call for geogebra submission?
# A general case of retrieving all values() vs the specific cases "a" and "b"
# is shown below. The specific cases are commented out.
submitActionScript => qq{ getQE('answerBox').value = getAppletValues() },
#submitActionScript => qq{ getQE('answerBox').value = applet.getValue("a") },
#submitActionScript => qq{ getQE('answerBox').value = applet.getValue("b") },
selfLoading => 1,
params => GEOGEBRA_PARAMS(), # paste parameters in
);
#######################################################
# For setting initial values in GeoGebra from WeBWorK
# Uses JavaScript interface to GeoGebra.
# hotfix #354 via Mike Gage addressing the overlapping text
# with WeBWorK submission buttons was attempted and disgarded below.
# Affixed protective <div>s to prevent overlapping text, could not be fixed
#############################################################
TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) );
<script language="javascript">
function setAppletCoefficients() {
var applet=getApplet("$appletName"); // alert("Updating coefficients");
if (typeof(applet)!="undefined") {
if (typeof(applet.setValue)!="undefined") {
////////////////////////////////////////////////////////////////
/* List the values of the parameters to be set in the applet here:
One could assign the commented values of "a" and "b" in GeoGebra
to the WeBWorK variables $a & $b here. But this problem passes nothing
from ww to ggb as it relies upon the student's manipulation of the applet
and the resulting score to be passed back to WeBWorK. The commented examples
below are just kept as a reference for future problems...
*/
// applet.setValue("a", $a);
// applet.setValue("b", $b);
// applet.setCoords("C", $a, $b);
} else {
setTimeout("setAppletCoefficients()", 1000);
}
} else {
setTimeout("setAppletCoefficients()",1000);
}
}
ww_applet_list["$appletName"].setConfig = function() {setAppletCoefficients()};
</script>
END_SCRIPT
##################################
# Setup GeogebraWebApplet --
###################################
HEADER_TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) );
<script language="javascript">
function ggbOnInit(param) {
var applet = document.$appletName;
if (param == "$appletName") {
applet_loaded(param,1); // report that applet is ready.
ww_applet_list[param].safe_applet_initialize(2);
ww_applet_list[param].object = param;
console.log("ggbOnInit: ww_applet_list["+param+"].object = ", ww_applet_list[param].object );
}
}
</script>
END_SCRIPT
HEADER_TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) );
<script language="javascript">
function setConfig() {
var appletState = getQE('${appletName}_state').value;
if (ww_applet_list['$appletName'].object == undefined ) {
setTimeout("setConfig()", 5000);
console.log("waiting");
} else {
var applet=$appletName;
}
}
</script>
END_SCRIPT
HEADER_TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) );
<script language="javascript">
function getAppletValues() {
console.log("getAppletValues() entered");
// get a handle for the applet object
var applet = $appletName;
var D = applet.getValueString("text1"); // from ggb, accuracy to ww
/* The getQE ("Get Question Element") places the GeoGebra value in a
ww answer box as long as the supporting code is there to support the
box entry. But here we want the box to be invisible and for ggb to pass
the accuracy score to ww for comparison.
*/
// getQE('D').value = applet.getValueString("text1"); //Send value to ww
return(D); // Needed for ww to receive value D from ggb
}
</script>
END_SCRIPT
###################################
#insert applet into body -- this does not need to be changed
# except to adjust the insertion of the reinitialize_button or
# a hidden AnswerBox
###################################
TEXT($PAR, MODES(TeX=>'geogebraweb code',
HTML=>$applet->insertAll(
debug =>0,
reinitialize_button => 1,
includeAnswerBox=>1,
)));
#######################################
# TEXT
#######################################
#$ans7 =~ s/%/ppp/;
#$dum =~ s/ %//;
#$dum =~ s/> //;
#$ans6=~'answerBox';
Context()->texStrings;
BEGIN_TEXT
$BR
$BR
$BR
$BR
$BR
$BR Click and drag each purple coordinate point to make a sketch of the
$BR derivative based upon the slope of the parent function in black.
$BR Use the slider to determine the slope of the tangent line
$BR as an aid to approximate the sketch of the derivative.
$BR
END_TEXT
#########################################
# ANSWER section
## This answer checker takes ggb string 'D' as $s, "student input"
## and compares it to a ww string ($cor) after a strip ( a search and replace)
## of the non-numeric symbols of "%", ">", and " ". The stripped ww string "$cor"
## is assigned to "$c" for "correct", from ww.
## The PostFilter answer hint permits the stripped strings
## to be evaluated as Numeric intervals for Student feedback and scoring...
###############################################################
Context("ArbitraryString");
NAMED_ANS( 'answerBox' => String($cor)->cmp->withPostFilter(AnswerHints(
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //; ## Stripping "> " of "> 95%", leaving "95%"
$c =~ s/%//; ## Stripping "%" of "95%", leaving "95"
$s =~ s/%//; ## Stripping "%" of the student accuracy, leaving an integer
return (($s >= 0) && ($s <= 50)); } => ["Oh no! You must score more than 50%, for any credit. Try again.", score => 0],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 50) && ($s <= 60)); } => ["You could do better with another attempt, yes?", score => 0.60],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 60) && ($s <= 70)); } => ["Try again. You can manage better than this.", score => 0.70],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 70) && ($s <= 75)); } => ["This is okay, But you could do better, yes?", score => 0.75],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 75) && ($s <= 80)); } => ["You are getting better, Try another?", score => 0.80],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 80) && ($s <= 85)); } => ["Nice Work!", score => 0.85],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 85) && ($s <= 90)); } => ["Very Good!", score => 0.90],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return (($s > 90) && ($s <= 95)); } => ["Excellent!", score => 0.95],
sub {
my( $c, $s, $self) =@_;
$c =~ s/> //;
$c =~ s/%//;
$s =~ s/%//;
return $s > $c; } => ["Perfect!", score => 1],
)));
#######################################
sub GEOGEBRA_PARAMS {
my $result = {
showResetIcon=>"false" ,
enableRightClick=>"false" ,
enableLabelDrags=>"false",
showMenuBar=>"false" ,
showToolBar=>"false",
showAlgebraInput=>"false",
useBrowserForJS=>"true",
ggbbase64=>"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"
};
$result;
}
ENDDOCUMENT();
The cause/solution in our case was a combination of the following:
1. Add the following line to the %LMSrolesToWeBWorKroles hash: "Faculty" => "professor"
2. When choosing the Security Settings as detailed at http://webwork.maa.org/wiki/LTI-Advanced_Authentication_for_D2L#.WacknNGQyHA ),
"Send user ID to tool provider" does not appear in the list, instead select "Send LTI user ID and LTI role list to tool provider" (choosing system username or system Org Defined ID instead failed in our case).
So the minimal check boxes are:
Now I can't login into webwork and students are getting errors even if they are able to login. Below is a copy of the error message I get when trying to login to my course.
Students also complain that when they try to enter answers in a problem, they get errors as well. I can post screen shots of these errors if needed.
Any suggestions on what to do to fix this would be greatly appreciated.