In short, an evaluation type (when used in a solution) determines the way that the computer checks whether the student’s answer is correct or not.
Evaluation types are used in the “Solutions”, “Negative feedback” and “Positive feedback” tabs of an exercise. Below, we list a table of all evaluation types including their description. For some evaluation types, a separate article has been written including some examples of the use of this evaluation type. Links to these articles will be provided in the table. More information about automated feedback can be found here.
In case of relations like equations or inequalities, you can specify a rule to only apply to a side of the relations using rhs
: for right hand side or lhs
: for left hand side, before the definition. e.g. the evaluation type contains_var
with Definition rhs:x
checks for the variable x in only the right hand side.
A list of all evaluation types for mathematical answers
Name | Description | Automated feedback |
contains_brackets | Checks whether the user input contains brackets. Note that brackets for function arguments like |
|
contains_float | Checks whether the user input contains floats. With no arguments at least one occurrence triggers the rule. With one argument, the argument defines the number of occurrences, optionally specified by one of |
|
contains_integer | Checks whether the user input contains integers. With no arguments at least one occurrence triggers the rule. With one argument, the argument defines the number of occurrences, optionally specified by one of |
|
contains_number | Checks whether the number in the Definition field is present in the user input. Works for both positive and negative floats and integers. |
|
contains_one_base_power | Answer contains exactly one power at the base. |
|
contains_symbol | Checks whether the user input contains the symbol from the Definition field. |
|
contains_symbol_other_than | The user answer does not contain any other symbol than the one in the list in the Definition field, separated by ;, e.g. |
|
contains_symbol_within | Checks if the second operator in the definition field is present in the first operator of the answer. i.e. |
|
contains_variable | Checks whether the user input contains the variable from the Definition field. |
|
contains_variable_in_symbol | Checks if the variable in the definition field is present in the first operator/symbol of the answer. i.e |
|
contains_variable_other_than | The user answer does not contain any other variable than the one in the list in the Definition field, separated by ;, e.g. |
|
default_incorrect | Always reacts on wrong answers and has a predefined priority of 99. |
|
eq_one_side | One side of the equation must be equal to the variable in the Definition. e.g. |
|
eval_domain | Checks whether the user input is equal to the domain in Definition field where both should be in the form of a simplified equation in the disjunctive normal form with only one variable, e.g. |
|
eval_eq_exact | Check whether solutions indicated in the Definition field are solutions to the equation in the user input, using substitution. Define a list of equations in the Definition field that should be substituted in the equation the user input. |
|
eval_eq_numeric | Numerical check whether solutions indicated in the Definition field are solutions to the equation in the user input. The Precision field indicates the accepted margin of error. Define a list of variables in the Definition field that should be substituted in the equation the student answers. e.g. |
|
eval_exact | Exact mathematical comparison of expression in the Definition field with user input. No simplification rules are applied to the student answer. |
|
eval_graphs | Lines: Checks whether each pair of points from the user input is on a line defined in the Definition field and whether each line in the Definition fields has two points in the user input. e.g. |
|
eval_interval | Checks whether the interval provided by the student is equal to that in the Definition field, where the Definition is specified as a 1st or 2nd degree (in)equality. The variable you use is free, as long you do not use more than one. e.g. |
|
eval_lin_eqs | Evaluate a system of linear equations. As a Definition, write the maxima equations in disjunctive normal form, and after that write a ";" with a list of variables in "[]" and separated with a comma ",". e.g. |
|
eval_list | Checks if the answer is a list and if each expression is equal to the expression at the same index in the list of the Definition field, using eval normal. The list in the Definition field should be comma "," separated. e.g. [2,3,1]. Note that this evaluation types automatically checks for the right input form (list or vector) and the length of the list and gives appropriate feedback accordingly. |
|
eval_logic_equiv | Comparison of logical form in the Definition field with normal form of user input. |
|
eval_matrix | Check if the matrix from the Definition field is equal to the answer. Can be used with fb_matrix for feedback. It accepts input of matrix or a list of lists. e.g. |
|
eval_matrix_element | Numerically compares the [row,column] entry of the matrix from the user input [row,col]=...with the number represented by the expression in the Definition field. |
|
eval_normal | Exact mathematical comparison of normal form of expression in the Definition field with normal form of user input. e.g. |
|
eval_numeric | Numeric comparison of expression in the Definition field with user input, e.g. |
|
eval_openmath | Comparison between the OpenMath xml object in the Definition field and the result object of the student input in the formula editor. To create a solution, get the Transformed OpenMath from the editor here. |
|
eval_param_rep | Evaluate a parameter representation of the solution set of a list of linear equations. In the Definition field, use 2 arguments (separated with a ;), where the first is the list of linear equations [eq1,eq2,...] and the second is a list of the coordinates [x,y,...]. Optionally, you can add a third argument to prescribe the parameters that may be used, like [lambda,mu]. e.g. |
|
eval_polynomial | Automated polynomial checker that can be used together with fb_polynomial. In the Definition field a (multivariate) polynomial is entered to specify the correct answer. Then you can create just one positive and one negative feedback rule in with evaluation type fb_polynomial that will provide automated feedback. Feedback works for |
|
eval_rational_function | Automated checker for rational functions that can be used together with |
|
eval_statement | Evaluate the maxima statement in the Definition field, where the user input can be referenced using block(adiff:diff(answer,x),is(radcan(adiff-(sin(x)))=0)) to allow for all answer that are correct after differentiating them, like −cos(x)+c−cos(x)+c, but also −cos(x)+C−cos(x)+C |
|
eval_units | Converts the answer to base units and the compares the value and unit. For units support, maxima's ezunits package is used. In the Definition field you can specify the solution with a backtick |
|
eval_vector_rep | Checks whether the vector representation of the user input corresponds to the line defined by the linear equation in x and y in the Definition field. e.g. |
|
eval_vector_lin | Checks whether the two dimensional vector of the user input and the two dimensional vector in the Definition field are linearly dependant. e.g. |
|
fb_generic | Provides automatic negative feedback on the student answer. The student answer will be compared with the expression in the Definition field of this feedback rule. This feedback type is particularly good at pointing out minor mistakes in the student answer. Use the Precision field to indicate a minimum percentage of similarity between the Defintion and the answer at which the feedback kicks in (0 is the default). |
|
fb_lin_eqs | Use only with a solution rule that uses evaluation type eval_lin_eqs to give feedback the following specified cases. Use one of the following in the Definition field. |
|
fb_matrix | Use only with a solution rule that uses evaluation type eval_matrix to give feedback the following specified cases. Use one of the following in the Definition field. |
|
fb_param_rep | Use only with a solution rule that uses evaluation type eval_param_rep to give feedback the following specified cases. Use one of the following in the Definition field. |
|
fb_polynomial | Provides automated feedback coming from eval polynomial in the solution. The value in the Definition specifies what type of polynomial form is desired. The value in the Definition van be
Negative feedback checks:
Negative feedback checks:
Negative feedback checks:
|
|
fb_rational_function | Use only with a solution rule that uses evaluation type eval rational function to give feedback on the following specified cases. Use one of the following in the Definition field: |
|
fb_solve_in(eq) | Use only with a solution rule that uses evaluation type solve_inequality or solve_equality to give feedback on how the domain of the answer compares to the domain of the solution. Use one of the following in the Definition field. |
|
fraction_denominator | Checks whether the user input contains a fraction with another denominator as defined in the Definition field. e.g. |
|
fraction_diff_denominators | When the user input has more than one fraction, it checks whether all fractions have the same denominator. |
|
fraction_is_improper | Checks whether the absolute value of all fractions in user input is greater than or equal to one |
|
fraction_lcm_not_used | Checks for each fraction in user input if the denominators are not equal to or greater than the number in the Definition field. |
|
fraction_not_simplified | Checks whether all fractions in the user input are simplified. In the Definition field you can use the same values as for is_not_simplified_fraction to control what type of fractions are considered simplified. |
|
is_decimal_length | Checks whether the user input is a float with the same number of decimals as specified in the Definition field, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, = |
|
is_length | Checks whether the user input is a float or integer with the same length as specified in the Definition field, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, =. eg. gt 2 |
|
is_not_factorized | Comparison of the factors in the Definition with the factors of the answer. e.g. Definition |
|
is_not_float | Check whether the user input is not a float. |
|
is_not_fraction | Check whether the user input is not a fraction. |
|
is_not_ifactorized | Checks if the answer is decomposed into prime factors. No Definition is needed. |
|
is_not_integer | Checks whether the user input is not an integer. |
|
is_not_number | Checks whether the user input is not an integer and not a float. |
|
is_not_polynomial | Checks if the answer is a polynomial in the variables in the list from the Definition field. |
|
is_not_rational | Check whether the user input is either an integer or a fraction with the denominator unequal to zero. |
|
is_not_simplified_fraction | Checks whether the user input is a simplified fraction. Also works for equations, where it checks whether at least one side is a simplified fraction. With Definition set to |
|
is_not_simplified_root | Checks whether the answer (which is assumed to be an expression involving integers, multiplications, divisions, and higher roots) is in the normal form (a/b) * (c-th root of d), where b,c,d are positive integers and a is an integer. |
|
is_not_simplified_complex | Checks whether the answer is not in the form |
|
is_not_top_symbol | Checks whether the symbol with the highest precedence in the answer is not equal to one of the symbols in the Definition field. Define a list of one or more symbols in the Definition field. e.g. times;root means the highest symbol is either a times or a root symbol. |
|
is_not_vector_length | Check whether the user input has all vectors of the same length. Optionally, use an integer in the Definition field to expect a vector with the prescribe the length, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, = | |
is_not_unit | Check whether the student answer is a unit. With no Definition specified (empty), a check will be done whether the student answer is a unit. The Definition can be used to specify the unit(s) that must be used in the answer, like |
|
same_form | Checks the answer and the definition for having exactly the same form after maxima translation |
|
solve_equation | Automatically solve and give feedback on 1st or 2nd degree equation. This type is limited to one variable equations. e.g. |
|
solve_inequality | Evaluate the inequality in the Definition field and evaluate the student answer accordingly. This type is limited to one variable inequalities. e.g. |
|
significant_digits | Checks if the number of significant digits present in the student answer is equal to the integer in the definition field. Optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, =. e.g. | |
is_not_scientific_notation | Checks if the student answer is in scientific notation. I.e. |