Commit 85101828 by Chris Rodriguez

Updating Yaml

parent e6330716
......@@ -5,39 +5,15 @@ metadata:
showanswer: never
data: |
<problem>
<p>
In these problems (also called custom JavaScript problems or JS Input
problems), you add a problem or tool that uses JavaScript in Studio.
Studio embeds the problem in an IFrame so that your students can
interact with it in the LMS. You can grade your students' work using
JavaScript and some basic Python, and the grading is integrated into the
edX grading system.
</p>
<p>
The JS Input problem that you create must use HTML, JavaScript, and
cascading style sheets (CSS). You can use any application creation tool,
such as the Google Web Toolkit (GWT), to create your JS Input problem.
</p>
<p>
For more information, see
<a href="http://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/exercises_tools/custom_javascript.html" target="_blank">
Custom JavaScript Problem</a> in <i>Building and Running an edX Course</i>.
</p>
<p>
JavaScript developers can also see
<a href="http://edx.readthedocs.io/projects/edx-developer-guide/en/latest/extending_platform/javascript.html" target="_blank">
Custom JavaScript Applications</a> in the <i>EdX Developer's Guide</i>.
</p>
<p>
When you add the problem, be sure to select <strong>Settings</strong>
to specify a <strong>Display Name</strong> and other values that apply.
</p>
<p>You can use the following example problem as a model.</p>
<customresponse cfn="vglcfn">
<script type="loncapa/python">
<![CDATA[
<script type="loncapa/python">
import json
########## Course Author Section #########
## Change whatever you need to in here. ##
##########################################
# These are REQUIRED for all problems.
problem_type = 'interval' # Set to 'interval' or a 'number'
show_open_close = False # Do we ask for open/closed interval?
......@@ -51,21 +27,26 @@ data: |
brackets = [1, 0.5, 0.25, 0] # Scores for various range brackets
# Only for interval-guessing:
correct_interval = [416,660] # Please put the lower value on the left.
interval_type = ['closed', 'closed'] # Are endpoints 'open' or 'closed'?
correct_interval = [416,660] # Please put the lower value on the left.
interval_type = ['closed', 'closed'] # Are endpoints 'open' or 'closed'?
interval_tolerance = 'linear' # Options: 'linear', 'strict', or 'generous'
type_penalty = 0.1 # Points off if open/closed incorrect
type_penalty = 0.1 # Points off if open/closed incorrect
# Only for estimation
max_time = 1000 # Large number of people beyond actual high
max_time = 1000 # Large number of people beyond actual high
######## End Course Author Section #########
## Don't change anything below this line. ##
############################################
# Set the outer bounds for the slider
lowerlimit = 0
upperlimit = 1000
def answercheck(e, ans):
# Get the student's answer.
parsed = json.loads(ans)
answer = json.loads(parsed['answer'])
......@@ -73,11 +54,11 @@ data: |
guess_lower = answer['lowerguess']
guess_upper_closed = answer['upperclosed']
guess_lower_closed = answer['lowerclosed']
# Now begins the grading.
message = ''
final_grade = 0
if problem_type == 'interval':
if guess_upper &lt; correct_interval[0]:
# No points if there's no overlap.
......@@ -93,21 +74,21 @@ data: |
endpoints.append(guess_upper)
endpoints.append(guess_lower)
endpoints.sort()
overlap = endpoints[2] - endpoints[1]
bigrange = max(correct_interval[1] - correct_interval[0], guess_upper - guess_lower)
final_grade = float(overlap) / float(bigrange)
message = str(int(round(final_grade, 2) * 100)) + '% overlap with correct answer.'
if interval_tolerance == 'strict':
final_grade = final_grade * final_grade
elif interval_tolerance == 'generous':
final_grade = math.sqrt(final_grade)
# Round up to the nearest tenth.
final_grade = math.ceil(final_grade*10.0) / 10.0
if show_open_close:
if(guess_lower_closed != True and interval_type[0] == 'closed'):
final_grade = final_grade - type_penalty
......@@ -121,11 +102,11 @@ data: |
if(guess_upper_closed == True and interval_type[1] != 'closed'):
final_grade = final_grade - type_penalty
message += ' Upper endpoint is wrong.'
else:
farthest = max(abs(correct_number - guess_upper), abs(correct_number - guess_lower))
if farthest &lt; tolerance[0]:
final_grade = brackets[0]
message = 'Close enough! Actual answer: ' + str(correct_number)
......@@ -138,12 +119,12 @@ data: |
else:
final_grade = brackets[3]
message = 'Your range is too large to get points.'
if guess_upper &gt; correct_number and guess_lower &lt; correct_number:
message += ' The answer is within your range.'
else:
message += ' The answer is outside your range.'
if not feedback:
message = ''
......@@ -153,29 +134,47 @@ data: |
isOK = "Partial"
else:
isOK = False
return {
'input_list': [
{ 'ok': isOK, 'msg': message, 'grade_decimal': final_grade},
]
}
]]>
</script>
<script type="text/javascript">
$(document).ready(function(){
console.log('Let\'s go!');
});
// Logs a javascript object.
function logThatThing(ThatThing){
// Log it to the console just to verify it's working
console.log(JSON.stringify(ThatThing));
// Send it to the official edX logamajig!
// Logger.log("harvardx.public_demo.range_guesser", ThatThing);
}
</script>
<p>What is the range of passengers that can fit on a 747 aircraft? Set the low and high bounds. (416 and 660 persons)</p>
<p class="sr" aria-hidden="true">
<span id="lowerlimit">$lowerlimit</span>
<span id="upperlimit">$upperlimit</span>
<span id="openclose">$show_open_close</span>
<span id="istimequestion">$is_time_question</span>
<span id="maxtime">$max_time</span>
</p>
<customresponse cfn="answercheck">
<jsinput gradefn="guesser.getGrade" get_statefn="guesser.getState" set_statefn="guesser.setState" width="800" height="120" html_file="https://files.edx.org/custom-js/guesser.html" sop="false"/>
</customresponse>
<solution>
<div class="detailed-solution">
<p>Explanation</p>
<p>Answer: The 747-400 passenger version can accommodate between 416 and 660 passengers depending on the layout and configuration.</p>
</div>
</solution>
</problem>
<p>What is the range of passengers that can fit on a 747 aircraft? Set the low and high bounds. (416 and 660 persons)</p>
<p class="sr" aria-hidden="true">
<span id="lowerlimit">$lowerlimit</span>
<span id="upperlimit">$upperlimit</span>
<span id="openclose">$show_open_close</span>
<span id="istimequestion">$is_time_question</span>
<span id="maxtime">$max_time</span>
</p>
<customresponse cfn="answercheck">
<jsinput gradefn="guesser.getGrade" get_statefn="guesser.getState" set_statefn="guesser.setState" width="800" height="120" html_file="/static/guesser.html" sop="false"/>
</customresponse>
<solution>
<div class="detailed-solution">
<p>Explanation</p>
<p>Answer: The 747-400 passenger version can accommodate between 416 and 660 passengers depending on the layout and configuration.</p>
</div>
</solution>
</problem>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment