Write Assessments for Function-Based Learner Solutions
For function-based solutions, you can write MATLAB® code using the built-in functions that check for variable equality and keyword or function presence:
assessVariableEqual
— Check whether a variable in the learner solution equals a specified value within tolerance.assessFunctionPresence
— Check for the presence of specific functions or keywords in the learner solution.assessFunctionAbsence
— Check that certain functions or keywords are not present in the learner solution.
Execution Model
Each assessment you write for a function-based solution typically includes a call to the learner solution. You can provide inputs to the function and evaluate any returned values. You can also call the reference solution to compare its output with the learner solution output.
Each assessment runs sequentially and independently of the other assessments. If one assessment fails, the subsequent assessments still run.
Variables created in one assessment are not available in the next one. Define all the required variables in each assessment.
If code terminates without errors, the assessment result shows a passed status. Otherwise, the assessment results show a failed status.
If the test is a pretest, the learner can view information about the assessment test by clicking the arrow to the left of the test name, regardless of whether the test passed or failed.
When you use
assessVariableEqual
with function-based problems, use the same name for any output variable created when calling the learner function as you would use in the learner function declaration. The default feedback messages reference the output variable name created in the assessment, and the learner may not recognize the output variable if it does not match the declaration.
Call Learner Solution in Assessments
To evaluate a function that a learner submits as a solution, each assessment calls the learner solution.
An example assessment for a triangleArea
function could
be:
b = 5;
h = 3;
area = triangleArea(b,h);
areaCorrect = 7.5;
assessVariableEqual('area',areaCorrect)
When the learner clicks Submit, this assessment calls the learner version of
triangleArea
.
Use Reference Solution to Assess Learner Solution
To compare the learner solution to the reference solution, call both functions.
To call the learner solution, use the syntax
myFunction
.To call the reference solution, use the syntax
reference.
myFunction
.
In both cases, replace myFunction
with the name of the
function you are using in the solution template.
An example assessment for a triangleArea
function could
be:
b = 5;
h = 3;
area = triangleArea(b,h);
areaCorrect = reference.triangleArea(b,h);
assessVariableEqual('area',areaCorrect)
Examples
Flip a Vector
The learner must write a function called flipIt
that flips
an input vector, reversing the order of the values in the vector. The learner
should not use the flip
function.
Reference Solution
function w = flipIt(v) w = v(end:-1:1); end
Assessment Tests. Call the learner solution with input vector [1 2 3 4]. Test that the
learner solution matches the reference solution and avoids using
flip
:
v = [1 2 3 4]; w = flipIt(v) w_correct = reference.flipIt(v); assessVariableEqual('w',w_correct); assessFunctionAbsence('flip','FileName','flipIt.m')
Call the learner solution again, this time with input vector [4]:
v = [4]; w = flipIt(v); assessVariableEqual('w',w_correct); assessFunctionAbsence('flip','FileName','flipIt.m')