Questions

When instructors add or edit a question, they arrive at the question-editing page, authortool/question.jsp. The code for question.jsp includes question.js, a set of Javascript methods that the designers moved to a different file simply to reduce the length of question.jsp. A question consists of the following parts:

ACE stores master-authored questions in questions_v3. It stores questions that have been modified or newly authored by instructors in user_questions_v3. The tables are very similar, but user_questions_v3 contains a field for the ACE ID of the instructor. If the instructor has modified a database question, ACE stores the modified question in user_questions_v3 with the same unique question ID as the original database question. If the question is a new one, ACE gives it a negative unique ID number. ACE stores figures, question data, evaluators, and (in ACE 1.6) molecules associated with the question in their own separate tables, again putting the information from database and locally authored questions in separate tables.

[an error occurred while processing this directive]

Question type

The author chooses the major question type from a pull-down menu in the upper left of the question-editing page and the other options with checkboxes in the upper middle of the page. We have organized the question types, which we store in q_type, into three groups:

Question flags

We store the question flags in q_flags. Each bit of the flags value represents one of the following question modifications or display options, which are all off by default:

ACE displays only the options that are relevant to the selected question type. The question type has effects in various parts of ACE. For example, ACE allots more space to the Marvin canvas on the question-answering page for mechanism and synthesis questions, it makes different evaluators available when the author has turned on the SHOWMAPPING or THREEDIM flags, and it creates new figures and evaluates responses differently when the author turns on the USES_SUBSTNS flag.

Provenance

A question's book may be Bruice, Wade, or Other. When a question is from Bruice or Wade, the author should enter a chapter number and question number; otherwise, the author should enter his own initials. ACE uses the chapter numbers to build the list of per-chapter questions from Bruice or Wade in the assignment assembly tool. ACE provides as options on the question-editing page all of the books associated with courses in the database. ACE displays each question's book, chapter, and remarks to instructors only in the assignment assembly tool and on the question list page of an assignment.

Statement

The question statement is simply the English text of a question, such as, "Draw the product of the following reaction." (The question statements of fill-in-the-blank questions are more complex; see below.) A question must have either a statement or at least one figure for ACE to save it.

If the question set in which a question resides has a common question statement, then, when ACE displays any question in that set to a student, it appends the common question statement to the beginning of the question's own statement. You may edit the common question statement directly from the question set display page by pressing the Edit icon next to the common question statement on the upper right, but, in ACE 1.6, you must click on the Edit topics and question sets link on the upper left of the question set display page. Furthermore, in ACE 1.6, instructors may not modify the common question statements of database question sets, though they may edit the common question statements of question sets that they themselves have created.

The author writes the question statement as ordinary text, but ACE uses Utils.toDisplay() to format it in a chemically relevant way; for example, C5H5^- becomes C5H5. ACE includes a public access page for authors to see the rules and to enter expressions to see how ACE formats them. ACE uses regular expressions to format the text; starting in ACE 1.7, ACE reads the expressions from WEB-INF/displayRules.txt. ACE uses these rules to format not only the question statement, but also feedback, question data text, text above and below the arrow in a reaction figure, and assignment names. An author may also use standard HTML commands and character entity references such as <i> and &middot; to format the question statement.

The statement of a fill-in-the-blank question includes one or more pull-down menus. The author denotes a pulldown menu in the question statement with the notation [[1, 4, 5]], in which the menu options consist of question data 1, 4, and 5.

The statement of a numeric question may contain one or more variables in the format [[x1]], etc. ACE replaces these variables with words or arithmetical values when it displays the question statement to the user.

Figures

A question may have one or more figures, each of which may be one of several types. The figure types are:

ACE uses JChem methods to convert all figure types (except Jmol figures and images) into SVG XML that can be embedded directly into the HTML.

ACE stores most of the information about a figure in figures_v5 or user_figures_v5.

[an error occurred while processing this directive]

ACE stores the filenames of images in their own table, images_v2 or user_images_v2. It stores the images themselves in their own directories on the disk: figures and user_figures, respectively.

[an error occurred while processing this directive]

Depending on the figure type and question type, an author may be able to instruct ACE to load one of the question figures into the response collector. In the case of clickable image and draw-vector questions, ACE always displays Figure 1 as the image on which the user should click; in the case of other questions, the author can choose to load any of Figures 1–4 into the response collector.

Question data

Question data consist of miscellaneous items that ACE requires for some question types. An author can edit, reorder, or delete question data with the tools on the question-editing page. There are several types of question data:

The question-editing page will show a section for question data only if the question type requires it.

Multiple-choice and fill-in-the-blank questions require two or more options from which students will choose a response, and ordering/ranking questions require two or more items for students to sequence. The question author enters these options or items as question data, which may be of the Marvin or text types. The author also enters a name for question data of the Marvin type.

[an error occurred while processing this directive]

Questions that use R groups require one or more question data of the R-group type. In an R-group question, Figure 1 contains one or more R1, R2, etc., and each student will see a different group substituted for each Rn. Each question datum n defines the groups that ACE may substitute for Rn in the figure. When an author adds or edits an R-group question datum, the page that appears, authortool/qData/loadQData.jsp, lists a set of R-group collections, each defined by a comma-separated list of shortcut group abbreviations, such as Me, Ph, etc., that themselves are defined in a shortcut group definition file, ../../marvin-extra/ACE.abbrevgroups. For example, one R-group collection consists of alkyl groups with one to four C atoms, one contains aryl groups, etc. The author may select one or more of these R-group collections for each R group in the question figure. A master author can also add or edit R-group collections from this page.

[an error occurred while processing this directive]

Numeric questions may contain variables in the question statement in the format [[x1]], [[x2]], etc. These questions require as many question data as there are variables. Each question datum contains a list of arithmetical values, or pairs of words and arithmetical values, that may substitute for each variable. Each student will see a different word or arithmetical value substituted for each xn in the question statement, and the author may use the corresponding arithmetical value in the evaluator that assesses the accuracy of a student's numerical response.

Complete-the-table questions require the author to specify in two items the number of rows and columns that the table should contain. The author may also specify row and column captions in these two items and, in a third item, prefill values for the table. These items are all of the text type.

Orbital energy diagram questions require the author to specify in one item the number of rows that the diagram should contain. The author may also specify captions for two of the three columns. This item is of the text type.

Reaction coordinate diagram questions require the author to specify in one item the number of rows and columns that the diagram should contain. The author may also specify labels for the maxima and minima. This item is of the text type.

Multistep synthesis questions require that the author add at least one rule describing the permissible starting materials for each question. An author may require permissible starting materials to be particular compounds, to have one or more particular functional groups, to have a certain number of contiguous or total C atoms, to have a certain formula, to have a certain number of rings, or to be uncharged and metal-free. Authors may combine rules in any logical combination. (By default, ACE combines them with OR conjunctions.) The evaluators SynthScheme and SynthEfficiency require the permissible starting materials to evaluate a response.

Evaluators

Evaluators are at the heart of ACE. Evaluators examine a student's response for various properties, provide appropriate feedback, and decide how many points the response is worth. They act as a hierarchical sieve; that is, ACE tests the response against each evaluator in order, and the first evaluator that the response satisfies determines the student's grade and the feedback that ACE provides. An author may add, edit, reorder, delete, or combine evaluators with the tools on the question-editing page.

An Evaluator in ACE contains a list of one or more Subevaluators, plus a grade and feedback that ACE will assign to the student if the student's response satisfies this evaluator. If an Evaluator's list of Subevaluators has more than one member, the Evaluator also contains an expression that describes how to combine the Subevaluators logically. Each Subevaluator contains the information that ACE needs to instantiate one of the approximately 75 evaluator implementations, which exercise the actual calculations on the students' responses.

When an author creates an evaluator, the evaluator is, by default, a simple one, consisting of an Evaluator that contains just one Subevaluator. The author may combine any number of simple evaluators into a complex evaluator; in this case, ACE subsumes the Subevaluators of the second and subsequent simple evaluators into the list of Subevaluators inside the first Evaluator. Conversely, an author may split a joined complex evaluator into its constituent simple evaluators; here, ACE removes each Subevaluator but one from the joined Evaluator and places each removed Subevaluator into its own new Evaluator.

[an error occurred while processing this directive]

ACE currently has over 75 different types of evaluator implementations, all of which reside in evals/impl/. We have divided our evaluators into three groups: evaluators for chemistry, generic, and math & physics questions. Some evaluators are appropriate for several different question types within each class (e.g., ACE can use Is to evaluate skeletal, conformation, atom mapping, mechanism, and synthesis questions, and it can use MultipleCheck for both multiple-choice and fill-in-the-blank questions), whereas others apply to only a single question type (e.g., ACE can use RankOrderCheck only to evaluate ordering/ranking questions). ACE makes available to authors only the evaluators appropriate to the question's type.

Evaluators of responses containing chemical structures

Evaluator type What it evaluates Coded data Additional information
Atoms If the atoms of a particular element in the response (or response formula) n ...
OR if the number of compounds in the response whose atoms of a particular element n, p ...
atomsOper ("Y=", "N<", etc.)
numAtoms
element
contiguous ("Y" or "N")
countEach ("Y" or "N")
molsOper ("Y=", "N<", etc.)
numMols
BondAngle If the bond angle about an atom in the response n ... oper ("Y=", "N<", etc.)
authAngle
tolerance
Charge If the total charge of the response is n ...
OR if the number of compounds whose total charge is n, is p ...
chgOper ("Y=", "N<", etc.)
chargeValue
countEach ("Y" or "N")
molsOper ("Y=", "N<", etc.)
numMols
Chiral If of the compounds in the response are ... proportion
kind
Contains If compound in the response contains the substructure or skeleton represented by the author's structure ... howMany (1–6 = "none", "any", "not all", etc.)
method (1–2 = "substructure" or "skeleton")
chgRadIso (1–3 = "exact", "default (specified in author's structure must be present in response)", or "ignore")
uses molStruct
CountMetals If the number of compounds in the response with n metal atoms is p ... metalsOper ("Y=", "N<", etc.)
numMetals
metalKind (0–4 = "all", "dblock", "main", "col1+2", "!dblock", "metal+oid")
countEach (always "Y")
molsOper ("Y=", "N<", etc.)
numMols
available only for defining permissible starting materials for multistep syntheses
FnalGroup If the number of times a functional group appears in the response n ...
OR if the number of compounds with n instances of a functional group, is m ...
groupId
groupOper ("Y=", "N<", etc.)
numGroups
countEach ("Y" or "N")
molsOper ("Y=", "N<", etc.)
numMols
HasFormula If the number of compounds that the given formula in the response n ... , OR if the response a given formula ... authFormula (* means any number including 0)
countEach ("Y" or "N")
withFormula ("Y" or "N")
molsOper ("Y=", "N<", etc.)
numMols
Is If compound in the response is the author's structure or its enantiomer or a resonance structure thereof, or has the same σ-bond network ... howMany (1–6)
flags (bits 0–4 = "either enantiomer", "no normalization", "resonance-permissive", "σ-bond network", "isotope-lenient")
uses molStruct
Is2DChair If compound in the response is a 2D chair representation of the author's structure ... howMany (1–6)
flags (bit 0 = "either enantiomer")
uses molStruct, automatic feedback
NumMols If the in the response n ... oper ("Y=", "N<", etc.)
authNumMols
distinct ("Y" or "N")
flags (bits 0–3 = "either enantiomer", "no normalization", "resonance-permissive", "σ-bond network")
Rings If the total number of rings in the response n ...
OR if the number of compounds with n rings is m ...
ringsOper ("Y=", "N<", etc.)
numRings
countEach ("Y" or "N")
molsOper ("Y=", "N<", etc.)
numMols
Weight If the number of compounds with an that is x ± y, is n ... authWtStr
toleranceStr
wtOper ("Y=", "N<", etc.)
wtType (0–1 = exact or average)
molsOper ("Y=", "N<", etc.)
numMols

ConformChair If the number of times a group is in a chair-shaped six-membered ring (2D representation or 3D) is n ... bondAngle (0–1 = "axial" or "equatorial")
formula (shortcut name or SMILES)
oper ("Y=", "N<", etc.)
number
automatic feedback if poorly drawn
ConformBond If two groups attached to adjacent atoms in a 3D structure ... formula (shortcut name or SMILES)
formula2 (shortcut name or SMILES)
groupRelationship (1–8 = "anti", "not gauche", etc.)

LewisElecDeficientNumber If the number of electron-deficient atoms of a particular element (or any element) in a Lewis structure response is n ... oper ("Y=", "N<", etc.)
number
element
LewisFormalCharge If, in a Lewis structure response, formal charge ... "Y" or "N"
LewisIsomorph If the structure of a Lewis structure response identical to the author's Lewis structure ... "Y" or "N" uses molStruct
LewisOuterNumber If the number of electrons in the outer shell of the maximum ...
OR if the number of electrons in the outer shell of each atom of a particular element (or any element) is n ...
oper ("Y=", "N<", etc.)
number
element (may be X)
anyEvery ("A", "E" = any atom or every atom)
condNumber (1–3 = "every atom ≤ its maximum", "any atom > its maximum", or "[anyEvery] [element] [oper] [number]")
LewisValenceTotal If the total number of valence electrons in a Lewis structure response the number calculated from the structure and formal charges ... "Y" or "N"

MapProperty If of the atoms in a response are as shown in the author's structure aromatization ... isPositive ("Y" or "N")
oper (1–2)
patternOnly ("Y" or "N")
checkEnant ("Y" or "N")
aromatize ("Y" or "N")
uses molStruct
MapSelectionsCounter If the selections of the response aromatization match or mismatch the author's selections, add x or subtract y points per response selection, respectively ... checkEnant ("Y" or "N")
aromatize ("Y" or "N")
matchPtsStr
mismatchPtsStr
uses molStruct,
always calculates grade,
automatic feedback

MechCounter If the number of in a mechanism response n ... component (1–3)
oper ("Y=", "N<", etc.)
number
may calculate grade
MechEquals If the response mechanism exactly the following mechanism ... isPositive ("Y" or "N") uses molStruct
MechFlowsValid If, given permissible starting materials, the electron-flow arrows in each step of a mechanism response to the compounds shown in the subsequent step ... isPositive ("Y" or "N")
flags (bits 0–1 = "accept resonance structures of starting materials", "ignore stereochemistry")
uses molStruct, automatic feedback
MechInitiation If a free radical mechanism a correctly drawn initiation part ... isPositive ("Y" or "N")
flags (bits 0–1 = "accept resonance structures of starting materials", "ignore stereochemistry")
uses molStruct, automatic feedback
MechProdStartIs If, given the compounds below, ... combination (0–7)
productOrStart (1–2)
flags (bits 0–1 = "accept resonance structures of starting materials", "ignore stereochemistry")
uses molStruct
MechProdStartProps If in the response mechanism is consistent with the following rule ... howMany (1–6 = "none", "any", "not all", etc.)
cpdsType (1–3 = response product, response starting material, response intermediate)
uses molStruct
MechRule If the mechanism response the selected rule ... isPositive ("Y" or "N")
rule number
pKvalue (also represents flags if flags is absent)
flags (may be absent)
automatic feedback, depending
MechSubstructure If the mechanism response an author's substructure and electron-flow arrows ... isPositive ("Y" or "N")
flags (bits 0–2 = "ignore charge", "ignore radical state", "ignore isotopes")
uses molStruct
MechTopology If the topology of a mechanism response ... isPositive ("Y" or "N")
topology (0–3 = "invalid", "linear", "cyclic", "linear or cyclic")

SynthEquals If the response synthesis exactly the following synthesis, reaction conditions ... isPositive ("Y" or "N")
considerRxnCondns ("Y" or "N")
uses molStruct
SynthTarget If the target of a synthesis response the desired target ... isPositive ("Y" or "N")
checkEnantiomer ("Y" or "N")
uses molStruct
SynthScheme If, given the rules about starting materials, each step in a synthesis response to the compounds shown in the subsequent step ... isPositive ("Y" or "N")
partCreditsStr (e.g., "6:50;8:75"; optional)
automatic feedback, may calculate grade
SynthSelective If, given the rules about starting materials, a synthesis response .... (The author may exclude a specific reaction from consideration.) kind (1–3)
isPositive ("Y" or "N")
partCreditsStr (e.g., "6:50;8:75"; optional)
may use molStruct, automatic feedback, may calculate grade
SynthEfficiency If, given the rules about starting materials, compound that is produced by a reaction of one of the preceding step is a permissible starting material ... isPositive ("Y" or "N")
SynthOneRxn If the given synthetic step a synthetic step of the response ... isPositive ("Y" or "N")
type (0–1)
uses molStruct
SynthStart If, given the compounds below, ... combination (0–7) uses molStruct
SynthSteps If the number of steps in a synthesis response n ... kind (1–2)
oper ("Y=", "N<", etc.)
number
may calculate grade

Evaluators of nonstructural responses to chemistry-specific questions

Evaluator type What it evaluates Coded data Additional information
FormulaFormat If the response formula the rule: rule number
isPositive ("Y" or "N")
automatic feedback
FormulaWeight If the response formula has an that is x ± y ... authWtStr
toleranceStr
wtOper ("Y=", "N<", etc.)
wtType (0–1 = exact or average)
HasFormula If the response formula a given formula ... authFormula (* means any number including 0)
withFormula (always "Y")
countEach (always "N")
molsOper ("Y>" or "Y=")
numMols (always 0)
UnsaturIndex If the unsaturation index of the response formula n, or is negative or fractional ... oper ("Y=", "N<", etc., "bad", "negative", "fractional")
authUI
automatic feedback for negative or fractional unsaturation index

OEDDiff If the in the response orbital energy diagram those in the author's diagram, where "match" means that ... isPositive ("Y" or "N")
oper (1–2)
compareExtent (0–4)
energies (0–3)
tolerance
uses molStruct, automatic feedback
OEDElecCt If the number of electrons in orbitals in of the orbital energy diagram n or the number of electrons in column ... column (0 = "columns 1 and 3", 1–3)
orbType (–5 to 9)
oper ("Y=", "N<", etc.)
number (–1 to –3 for electron count of another column, 0 or more otherwise)
OEDOrbType If the number of orbitals in of the orbital energy diagram n ... column (1–3)
orbType (–5 to 9)
oper ("Y=", "N<", etc.)
number

RCDDiff If the in the response reaction coordinate diagram those in the author's diagram, where "match" means that ... isPositive ("Y" or "N")
oper (1–2)
compareExtent (0–2)
energies (0–3)
tolerance
uses molStruct, automatic feedback
RCDStateCt If the number of with or without a particular label in of the selected columns of the reaction coordinate diagram n ... which (0–2)
label (1-based label number, 0 for any)
mode (0–3)
columnsStr (colon-separated 1-based column numbers)
oper ("Y=", "N<", etc.)
number

Evaluators of responses to generic types of questions

Evaluator type What it evaluates Coded data Additional information
ClickHere If mark is in one of the indicated regions of the image ... howMany (1–6 = "none", "any", "not all", etc.) regions stored in molStruct
ClickNumber If mark in one of the indicated regions of the image m ± n ... howMany (1–6 = "none", "any", "not all", etc.)
oper ("Y=", "N<", etc.)
authNum
tolerance
regions stored in molStruct
ClickText If mark in one of the indicated regions of the image
( case) the following value ...
howMany (1–6 = "none", "any", "not all", etc.)
isPositive ("Y" or "N")
where (0–6)
ignoreCase ("Y" or "N")
regions and string stored in molStruct
ClickLabelsCompare If mark in one of the indicated regions of the image has text that is that of any other marks in the indicated region(s) starting at character n
( case) ...
howMany ("none" or "any")
isPositive ("Y" or "N")
startChar
ignoreCase ("Y" or "N")
regions stored in molStruct
ClickCount If the total number of marks in the response is n ... oper ("Y=", "N<", etc.)
authNum

MultipleCheck If the student chosen the following checked options ... isPositive ("Y" or "N")
oper (1–4 = "exactly", "at least", "subset", "partly overlap")
list (colon-separated list of question datum numbers)
MultipleNumChosen If the student chosen n of the following checked options ... isPositive ("Y" or "N")
oper (1–6 or "Y=", "N<", etc.)
numChosen
options (colon-separated list of question datum numbers)

NumberIs If the numerical response (m ± n) × 10p, either unitless or in a particular unit or the equivalent in another unit ... oper ("Y=", "N<", etc.)
authNum
tolerance
authExponent
authUnit
authNum may be an expression containing variables, which ACE substitutes with the values assigned to the student
NumberSigFigs If the number of significant figures n ... oper ("Y=", "N<", etc.)
authNum
NumberUnit If the student chosen one of the following checked units ... isPositive ("Y" or "N")
unitNums (colon-separated list of question datum numbers)

RankOrderCheck If the student's response the selected options in the following relative order ... isPositive ("Y" or "N")
contiguous ("Y" or "N")
increasing ("Y" or "N")
list (colon-separated list of question datum numbers; numbers preceded by ~ must be unordered)
RankPositionCheck If the student's response item m as n or unnumbered ... isPositive ("Y" or "N")
selection ("m:n" where m is a question datum number and n is its rank)

TableDiff If ( case) the corresponding cell in the author's table ... isPositive ("Y" or "N")
where (0–6)
ignoreCase ("Y" or "N")
calcGrade ("Y" or "N")
highlightWrong ("Y" or "N")
author's table stored in molStruct, may calculate grade, may highlight errors
TableNumVal If the numerical value of the cell in and m ± n ... oper ("Y=", "N<", etc.)
row (–1 to –3 = "any", "every", "no", otherwise row number)
column (–1 to –3 = "any", "every", "no", otherwise column number)
emptyCell (0–2 = "ignore", "zero", "disallow")
nonnumeric (0–2 = "ignore", "zero", "disallow")
authNum
tolerance
may highlight errors
TableCellNumCt If the number of cells in and in which the numerical value m ± n p ... operCells ("Y=", "N<", etc.)
numCells
oper ("Y=", "N<", etc.)
row (–2 = "every" or row number)
column (–2 = "every" or column number)
emptyCell (0–2 = "ignore", "zero", "disallow")
nonnumeric (0–2 = "ignore", "zero", "disallow")
authNum
tolerance
TableTextVal If the text value of the cell in and ( case) the following value ... isPositive ("Y" or "N")
row (–1 to –3 = "any", "every", "no", otherwise row number)
column (–1 to –3 = "any", "every", "no", otherwise column number)
emptyCell (0–2 = "ignore", "zero", "disallow")
where (0–6)
ignoreCase ("Y" or "N")
string stored in molStruct, may highlight errors
TableCellTextCt If the number of cells in and in which the text value ( case) the following value n ... oper ("Y=", "N<", etc.)
numCells
isPositive ("Y" or "N")
row ("every", row number)
column ("every", column number)
emptyCell (0–2 = "ignore", "zero", "disallow")
where (0–6)
ignoreCase ("Y" or "N")
string stored in molStruct
TableTextText If, for row in which the text in column m is the following value, the text in column n ( case) the following value ... rowOper ("any", "every")
columnRef
columnTest
emptyCell (0–2 = "ignore", "zero", "disallow")
isPositive ("Y" or "N")
where (0–6)
ignoreCase ("Y" or "N")
strings stored in molStruct, may highlight errors
TableTextNum If, for row in which the text in column m is the following value ( case), the numerical value in column n p ± q ... rowOper ("any", "every")
columnRef
columnTest
emptyCell (0–2 = "ignore", "zero", "disallow")
nonnumeric (0–2 = "ignore", "zero", "disallow")
oper ("Y=", "N<", etc.)
authNum
tolerance
ignoreCase ("Y" or "N")
string stored in molStruct, may highlight errors
TableNumText If, for row in which the numerical value in column m p ± q, the text in column n the following value ( case) ... rowOper ("any", "every")
columnRef
columnTest
emptyCell (0–2 = "ignore", "zero", "disallow")
nonnumeric (0–2 = "ignore", "zero", "disallow")
oper ("Y=", "N<", etc.)
authNum
tolerance
isPositive ("Y" or "N")
where (0–6)
ignoreCase ("Y" or "N")
string stored in molStruct, may highlight errors
TableNumNum If, for row in which the numerical value in column m p ± q, the numerical value in column n r ± s ... rowOper ("any", "every")
columnRef
columnTest
emptyCell (0–2 = "ignore", "zero", "disallow")
nonnumeric (0–2 = "ignore", "zero", "disallow")
operRef ("Y=", "N<", etc.)
authNumRef
toleranceRef
oper ("Y=", "N<", etc.)
authNum
tolerance
may highlight errors

LogicStmtsCt If the number of statements in the response n ... oper ("Y=", "N<", etc.)
authNum
TextContains If the student's text ( case) the following value ... isPositive ("Y" or "N")
where (0–6)
ignoreCase ("Y" or "N")
string stored in molStruct
TextWordCount If the number of words in the text response n ... oper ("Y=", "N<", etc.)
authNum

HumanReqd If the response requires human evaluation ... automatic feedback

Math & physics evaluators

Evaluator type What it evaluates Coded data Additional information
EqnSolved If every equation in the last entry of the response solved for the variable x... isPositive ("Y" or "N")
mustBeReduced (refers to numerical solution; "Y" or "N")
variable
EqnIs If the equations or expressions in the entry of the response equivalent to the author's equation or expression, and if the response equations or expressions constitute of the author's solutions... which ("first" or "last")
isPositive ("Y" or "N")
howManySolutions ("one" or "all")
author's equation stored in molStruct
EqnsFollow If each equation or expression in the response equivalent to the next equation or expression ... isPositive ("Y" or "N") automatic feedback
EqnsCt If the number of entries in the response n ... oper ("Y=", "N<", etc.)
authNum
EqnVariables If the number of variables in the entry in the response n ... oper ("Y=", "N<", etc.)
authNum
which ("first" or "last")

VectorsAxes If vector in the response lays along the axis ... howMany (1–6 = "none", "any", "not all", etc.)
direction
tolerance
VectorsCt If the number of vectors in the response n ... oper ("Y=", "N<", etc.)
authNum
VectorsCompare If the of of the vectors in the response is/are the same in the author's vector noAnySum("no_vec", "any_vec", "vec_sum")
vectorQuant("whole", "length", "direction")
oper ("Y=", "N<", etc.)
lengthTolerance
lengthToleranceUnit("percent", "pixels")
angleTolerance
author's vector stored in molStruct

Many of the evaluator classes share common superclasses, which may or may not themselves be evaluator classes. In the list below, we have marked in blue those superclasses that are not themselves evaluators.

The purpose of organizing the classes in this way is to reduce redundancy of fields, constants, and methods among the many similar classes. The remaining evaluators are:

Any response will satisfy the HumanReqd evaluator. When ACE encounters this evaluator, it marks the response as needing an instructor to assign a grade. The instructor can see in the gradebook which responses he or she needs to grade. The instructor clicks on the student's name and uses alter to assign a grade.

The MechRule evaluator evaluates an entire mechanism for violations of a heuristic mechanisms rule chosen by the author of the question. ACE can search responses for violations of the rules listed in the next table.

Mechanism rule Parameter Automatic feedback?
General chemical rules
No SN2 at sp- or sp2-hybridized atom. no
No ionization of sp- or sp2-hybridized atom. no
No 1° carbocations. no
Violation of pKa rule [(best base's conjugate acid pKa – best acid pKa) ≤ 8]. flags bits 0–1 = "do not consider first step", "do not consider last step" no
No even-electron pericyclic reactions. no
No four-atom pericyclic reactions. no
Cationic shifts must be 1,2-shifts. no
No zwitterions. flags bit 2 = "consider only positive atoms bearing H" no
No multiply charged atoms. no
No multiply charged molecules. no
No charged molecules of same sign reacting with one another. flags bit 3 = "allow proton transfers" no
No X–H bond acts as a nucleophile. no
No four-membered transition states for H+ transfer. no
No termolecular steps. no
No dyotropic rearrangements (A–B–C–D → D–B–C–A). no
No σ-bond metatheses or dyotropic rearrangements. no
Reaction-condition-specific rules
No radicals under polar conditions. no
No acids under these basic conditions should have pKa < n. (The response may show the acids explicitly or may produce them in a mechanistic step but omit them from the drawing.) pKvalue yes
No bases under these acidic conditions should have pKb > n (conjugate acids whose pKa > n). (The response may show the bases explicitly or may produce them in a mechanistic step but omit them from the drawing.) pKvalue yes
No SN2 under acidic conditions. no
No carbocations under basic conditions. no
Mechanism-drawing conventions
No atom should receive and supply electrons simultaneously. no
No resonance arrow where there should be one. flags bit 0 = "do not consider first step" no
Resonance arrow where there shouldn't be one. flags bit 0 = "do not consider first step" no

The code identifies each evaluator with a short String, called a "match code"; ACE stores the match codes in a single list in EvalManager. Every evaluator shares certain fields and methods, which ACE enumerates in EvaluatorInterface. The most important fields are the coded data and the molecule. Coded data consists of a String of slash-separated data whose meanings are specific to the evaluator type. For example, the coded data for the Is evaluator consists of two integers; the first represents how many times a structure should or should not appear in the response, and the second holds flags that describe whether the evaluator should consider enantiomers, resonance structures, or other variants of the given structure. Many evaluators also require an author's molecule for evaluations.

When an author adds or edits a simple evaluator, the page that appears, authortool/evaluators/loadEvaluatorChem.jsp, loadEvaluatorGeneric.jsp, or loadEvaluatorPhysics.jsp, consists of three parts. The upper part, derived from selectorFooter.jsp.h, allows the author to select an evaluator type appropriate for the question type and the points associated with a response that satisfies the evaluator. The lower part, also derived from selectorFooter.jsp.h, allows the author to enter the feedback associated with this evaluator. ACE will suggest feedback for some evaluator types. ACE will also generate automatic feedback for some evaluator types, as shown in the table; ACE stores these types in a List in EvalManager. The middle part is evaluator-specific and may contain LewisJS or MarvinJS, checkboxes and pulldown menus, etc. If a subevaluator of a complex evaluator generates automatic feedback, then the complex evaluator will return that automatic feedback if the subevaluator is the last individual expression of an OR expression or the first individual expression of an AND expression.

For most question types, it is possible for an author to write an evaluator that examines whether a response is correct. However, no single evaluator exists that can determine whether a mechanism or synthesis is correct. Instead, ACE must evaluate responses to these questions by seeing whether the response contains any mistakes. For example, the response to a mechanism question must be wrong if it does not arrive at the target compound, if it uses starting materials that the question description did not provide, if it includes or omits certain key intermediates, if the electron-flow arrows in any step do not lead to the compounds in the subsequent step, and so on. On the other hand, if a response fails to satisfy any of these evaluators, then the response contains no errors, so it must be correct. We use the evaluator, "If the number of C atoms is more than 0," to catch any response that has failed to satisfy any of the other evaluators, and we associate this evaluator with a grade of 1.0 and the feedback, "Good! Your mechanism appears to be correct."

Additional information that evaluators use

Below the evaluators, a master author may see buttons that allow him or her to add or modify (but not delete) definitions of functional groups, reaction conditions, impossible starting materials in synthesis questions, compounds that must be pulled from the reagents menu in synthesis questions, and unit conversion factors. A button to edit a table appears only if the author is editing a question of a type that uses evaluators that use the information in that particular table.

[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

A word about reaction condition definitions. We use ChemAxon's Reactor to calculate reaction products from starting materials that the user provides and reaction definitions that we provide. Because each reaction definition defines one reaction, but ACE asks students to subject starting materials and intermediates to reaction conditions under which many different reactions may occur, we combine and modify definitions using our own terms as well.

Preview

When authors make changes to a question, they can examine the way that the change affects ACE's evaluation of various responses by pressing the Preview button. ACE directs the author to authortool/startPreview.jsp, then to homework/jumpGo.jsp, and thence to the question-answering page, homework/answerframe.jsp.

View Responses

An author can see all of the responses that students have made to a particular question by pressing the View Responses button. The page that appears, authortool/FIHistory.jsp, shows which evaluators the 20 most frequent responses satisfied. An author may choose to add or edit an evaluator based on this information. ACE will collate the responses of all students, not just that author's students, who have responded to this question. (Locally authored questions, of course, are accessible only to the students of the author who created those questions.) The View Responses function does not work for mechanism or synthesis questions because ACE has no algorithm for deciding whether two responses are identical.