Links to HEAD: | (view) (download) (as text) (annotate) |

Sticky Revision: |

Revision

Modified

File length: 47220 byte(s)

Diff to previous 3633

Added ability to have answers that are empty strings. String("") now will produce a valid string object regardless of the Context's defined string values. (You can prevent this using Context()->flags->set(allowEmptyStrings=>0); if you wish). String("")->cmp will produce an answer checker for an empty string (it removes the blank checker that WW installs).

Revision

Modified

File length: 46763 byte(s)

Diff to previous 3631

Don't allow wrapping in label for ans_array errors.

Revision

Modified

File length: 46756 byte(s)

Diff to previous 3630

The Parser answer checkers used to give the student answer as the parsed but unevaluated answer. This has been changed so that the student answer is now the computed result, no the parsed answer. The answer preview still shows the parsed equation. This is more consistent with the traditional answer checkers, and probably is more valuable to the students.

Revision

Modified

File length: 46651 byte(s)

Diff to previous 3629

Better error messages for unreduced unions.

Revision

Modified

File length: 46653 byte(s)

Diff to previous 3589

Improved error message layout and labeling for when ans_array is used.

Revision

Modified

File length: 46284 byte(s)

Diff to previous 3516

Added the ability to put class-specific answer-checker defaults into the Context object. For example, Context("Vector")->{cmpDefaults}{Vector}{promotePoints} = 1; would make all Vector answer checkers include promotePoints=>1 automatically. (Note however that if a subclass of Vector is used, it will not get this defaults, since its class name would be different. Perhaps something more sophisticated will be needed in the future.)

Revision

Modified

File length: 46079 byte(s)

Diff to previous 3511

Added isSetOfReals and canBeInUnion methods to the Value objects, and replaced the ad hoc tests for these conditions to call these routines. Cleaned up the make() methods for Intervals, Sets and Unions, and improved the new() methods to handle more cases better. Fixed Value::makeValue() to handle an array reference correctly. I don't THINK any of this will break anything. :-)

Revision

Modified

File length: 46533 byte(s)

Diff to previous 3507

Fixed reduction warnings for individual sets, intervals and unions (in making it work for lists, I broke it for the single items).

Revision

Modified

File length: 46364 byte(s)

Diff to previous 3505

Fixed error in testing is a union is reduced (didn't test if sets within a union were reduced properly).

Revision

Modified

File length: 46331 byte(s)

Diff to previous 3504

Added sort methods to Union and Set that return objects with their data sorted.

Revision

Modified

File length: 46353 byte(s)

Diff to previous 3497

Moved the union and set reduction checks from cmp_equal to cmp_compare so that the messages can be produced even in lists of unions. Improved the message facilities for the list comparison so that cmp_compare can make errors that refer to the number of the entry in the student's answer (otherwise an extra "There was a problem with your nth value" message needs to be prepended, which looks bad if it can be avoided). Use the "extra" answer checker to report syntax error messages in unordered lists.

Revision

Modified

File length: 45570 byte(s)

Diff to previous 3493

Added ability for Unions and Sets to simplify themselves (automatically or on demand), and added flags to the Context and answer checkers to control these features. The new Context flags are reduceUnions tells whether unions are automatically reduced when they are created. reduceUnionsForComparison tells whether unions are reduced before comparing them for equality or inequality (etc) if they aren't reduced already. reduceSets tells whether redundent elements are removed from sets as they are created. reduceSetsForComparison tells whether sets are reduced before comparing them. All of these default to true. The Interval, Set, Union, and List answer checkers not have two new flags for controlling these values: studentsMustReduceUnions tells whether unions and sets will be counted as incorrect when they are not reduced to non-overlapping intervals and at most one set with no repeated entries. showUnionReduceWarnings tells whether an error message will be produced for non-reduced unions and sets, or if they will be marked wrong silently. (Not available in Lists.) Both of these are true by default, since most professors probably want their students to write intervals in reduced form. (Is this true?) This corresponds the the current behavior of the interval checkers, which require the student's answer to be the same set of intervals as in the professor's, but with the addition of an error message when the student answer is not reduced.

Revision

Modified

File length: 43299 byte(s)

Diff to previous 3488

Detect preview mode correctly for either WW1 or WW2.

Revision

Modified

File length: 43224 byte(s)

Diff to previous 3487

Avoid problem with undefined value being passed to protectHTML.

Revision

Modified

File length: 43188 byte(s)

Diff to previous 3469

Changed how Intervals implement the requireParenMatch flag for the interval and union answer checker. (Use a Context flag rather than a flag on the interval itself.) Moved the getFlag method from Formula.pm to Value.pm so it can be used by any object class. New feature where classes can add more context flags to set (and reset after the answer checker runs).

Revision

Modified

File length: 43255 byte(s)

Diff to previous 3460

Added changes needed for the new Set object.

Revision

Modified

File length: 42092 byte(s)

Diff to previous 3370

Interval (and Union) checker now accepts requireParenMatch flag for deciding whether the interval type must match. Setting requireParenMatch to 0 will let (1,2) match (1,2] or [1,2], etc.

Revision

Modified

File length: 41737 byte(s)

Diff to previous 3336

A first pass at making parser error messages localizable. The Context()->{error}{msg} hash can be used to specify translations of the standard messages. For example, Context()->{error}{msg}{'Division by zero'} = "Don't divide by zero, dude!"; Context()->{error}{msg}{'Function '%s' has too many inputs'} = "You passed too many arguments to '%s'"; (I didn't translate into another language, here, but you could do that, too.) The msg hash could also be used within answer checkers to make certain answer messages more appropriate for the given type of expected answer.

Revision

Modified

File length: 41737 byte(s)

Diff to previous 3298

Change so as not to use raw HTML in the error messages.

Revision

Modified

File length: 41739 byte(s)

Diff to previous 3273

New flag showAllErrors for when a custom checker is supplied. This will cause all errors generated in the user's code to be reported (normally, messages from the Value and Parser packages are ignored).

Revision

Modified

File length: 41712 byte(s)

Diff to previous 3269

Forgot to check hardcopy mode. Fixed some problems with that. The answer array items have to turn off verbatim mode that is used when answer are included in the hardcopy. This causes paragraph breaks between entries in a singleResult MultiPart that includes ans_arrays, which make the output less pretty, but at least they show up.

Revision

Modified

File length: 41278 byte(s)

Diff to previous 3257

Added ability to have Matrix, Vector and Point objects produce input arrays similar to the ones available in PGmatrixmacros.pg. This provides some substantial new functionality, and it may still have some shaking down to do, but it should not affect the existing functionality of the answer checkers. To create an answer array for a matrix, vector or point, use the new ans_array() or named_ans_array() methods of these objects. For example: Context("Matrix"); $M = Matrix([1,2],[3,4]); BEGIN_TEXT \{$M->TeX\} = \{$M->ans_array\} END_TEXT ANS($M->cmp); This creates a matrix, then prints it ans creates an answer array of the appropriate size for the matrix. The answer checker will automatically know to handle the multiple entry blanks. To used a named answer rule, use: Context("Matrix"); $M = Matrix([1,2],[3,4]); BEGIN_TEXT \{$M->TeX\} = \{$M->named_ans_array('fred')\} END_TEXT NAMED_ANS(fred => $M->cmp); Both methods also take an optional argument that specifies the width of the answer rules. The default is 5. You can get a multi-input point or vector array as well, and you can make column vectors as follows: Context("Vector"); $V = ColumnVector("1+x","3x","1-x"); BEGIN_TEXT \{$V->TeX\} = \{$V->ans_array\} END_TEXT ANS($V->cmp); Note that you can make answer arrays for matrices and vectors of formulas as well as constants, provided the formula is an explicit matrix or vector of formulas, and is not obtained by matrix arithmatic. For concistencey, all objets now have ans_rule and named_ans_rule methods as well. The default width is 20 for these.

Revision

Modified

File length: 26477 byte(s)

Diff to previous 3217

Modified the Formula answer checker to allow checking of points where the functions are undefined (i.e., attempt to check that the domains agree). This can be enabled by setting the checkundefinedPoints flag in the Context(), or in the formula itself. Test points where the function is undefined will be retained and the student's answer will have to be undefined at the same points. If the points are selected at random, the points where the function is undefined are kept in addition to the ones where it is defined, so the required number of test points where the function IS defined will still need to be found. The number of undefined points can be up to the number of defined points. This number can be reduced by setting the max_undefined flag. If you want to guarantee that a specific undefined point be tested, you can provide that point using the test_points field of the formula. For example: Context()->flags->set(checkUndefinedPoints=>1); $f = Formula("(x^2-1)/(x-1)"); $f->{test_points} = [[-1],[0],[1],[2]]; ANS($f->cmp); will guarantee that the singularity at x=1 is tested, so the answer x+1 will not be marked as correct. If an answer matches at all the test points where the functions are both defined, but some of the undefind points differ between the two functions, the answer checker will generate an error message indicating that the domains of the functions don't agree. (This is ONLY generated with the functions match except for that.) This can be controlled by setting the showDomainErrors flag in the formula's cmp() call: ANS($f->cmp(showDomainErrors=>0)); The default is to show these errors.

Revision

Modified

File length: 26159 byte(s)

Diff to previous 3207

Copy parameters like limits, etc, to the newly created formula when 'C0' is added by the "upToConstant=>1" option in formula cmp().

Revision

Modified

File length: 26001 byte(s)

Diff to previous 3206

Handle error messages in the list checker better. In particular, make the error messages generated by custom checkers called on elements in the list look better. Also, in an ordered list, if the student enters extra values, call an answer checker to do a syntax check. (By default, use the first element again, but the user can supply a separate object to use for the checker using the extra=>object option.)

Revision

Modified

File length: 25644 byte(s)

Diff to previous 3205

Compartmentalize the equality check one step further. The cmp_equal method now calls a new cmp_compare method to perform the actual comparison (rather than use == directly). The cmp_compare method either calls a user-supplied checker routine, or defaults to using the == operator. The list checker also uses cmp_compare to check the individual items in the list. The list checker also calls a new cmp_list_checker method to perform the list check. This can be overridden by a user-supplied list-checking routine. To supply an alternate checking routine, use the "checker" option to the cmp() method of the correct answer object. For example: sub check { my ($correct,$student,$ans) = @_; return 0 unless $correct->length == $student->length; my ($x,$y) = $student->value; # break up a point; return $x**2 - $y**2 = 1; # check if it is on a hyperbola } Point(1,0)->cmp(checker=>~~&check); This will check if the student's point lies on the given hyperbola. All the usual error messages will be issued if the student's answer is not a point, or is of the wrong dimension, etc. You can use sub list_check { my ($correct,$student,$ans) = @_; my @correct = @{$correct}; my @student = @{$student}; ... return ($score,@errors); } List(...)->cmp(list_checker=>~~&list_check); to replace the list-checking routine with your own custom one. The $correct and $student values are array references to the elements in the lists provided by the professor and student. (Note that you do NOT get a List() object; this allows you to handle lists of formulas, since a List of formulas becomes a formula returning a list). The checker routine should return the number of correct elements in the student's list ($score), and a list of error messages produced while checking the two lists (@errors). (This is a list of messages, since you might want to include an error for each entry in the list, for example). If your checker or list_checker routine wants to die with an error message, use Value::Error(message). This will put the message in the WeBWorK display area at the top of the page. If you use die(message), or if the code fails due to a runtime error, then "pink screen of death" will be produced indicating the error and asking the student to report the error to the professor.

Revision

Modified

File length: 23319 byte(s)

Diff to previous 3172

Properly handle string values in postprocessing of vectors and other related lists. (It used to report a dimension error for things like 'NONE').

Revision

Modified

File length: 22808 byte(s)

Diff to previous 2916

Updated the answer checkers so that you can more easily specify how the correct answer shoudl be displayed. In the past, you could use something like Real(sqrt(2))->cmp(correct_ans=>"sqrt(2)") to do this, but that is awkward. Now the Compute() function (which parses and then evaluates a string) sets things up so that the original string will be what is used as the correct answer. That means Compute("sqrt(2)")->cmp will have the same result as the example above. You can also set the {correct_ans} properly of any Parser object to have that value used as the correct answer. For example $x = Real(sqrt(2)); $x->{correct_ans} = "sqrt(2)"; ANS($x->cmp) would also produce the same answer checker as the two previous examples. All three methods should work. Use the one that is most convenient for you.

Revision

Modified

File length: 22636 byte(s)

Diff to previous 2900

Clear error messages before doing the answer check (this clears old messages left over inclass this checker is called by another one, e.g. when using UNORDERD_ANS()).

Revision

Modified

File length: 22492 byte(s)

Diff to previous 2799

Don't give coordinate hints during parallel vector checks. Also fixed a typo.

Revision

Modified

File length: 22468 byte(s)

Diff to previous 2791

Added a new flag to the Formula()->cmp answer checker that allows a constant-valued formula to be evaluated and then use the checker for the resulting type. This is useful when you want the correct answer for a numeric check to be shown in a symbolic form (like "pi/4") rather than as a decimal number. To do this, use Formula("pi/4")->cmp(eval=>1); rather than Real(pi/4)->cmp, which would show the correct answer as 0.785398. Note that Formula("pi/4")->cmp would also match against pi/4, but it does it as a function rather than a number, so error messages might be issued indicating that the checker is expecting a formula that returns a number, rather than just a number; this might be confusing to a student. It would also accept answers like "pi/4-x+x" as correct, whereas with eval=>1 this would produce an error message saying that the answer was supposed to be a number not a formula returning a number. Similarly, if you want to show sqrt(2)/2 as the correct answer, use Context()->flags->set(reduceConstants=>0, reduceConstantFunctions=>0); Formula("sqrt(2)/2")->cmp(eval=>1); The first line tells the parser not to automatically reduce expressions that only involve constants, so that the value of the formula in the second line will not be reduced to a decimal before the cmp method is called.

Revision

Modified

File length: 22346 byte(s)

Diff to previous 2790

Don't reduce constants in the display of student answers (so they can tell how the parser interprets their answer). The drawback is that the final number is not displayed. (We may need to add more columns to the results display.)

Revision

Modified

File length: 22063 byte(s)

Diff to previous 2772

Use extra parens in the string version of the student's answer, but not in the professor's (unless the problem sets the showExtraParens flag).

Revision

Modified

File length: 21827 byte(s)

Diff to previous 2757

Make partial credit in list answer checkers be the default (now that WeBWorK can handle this).

Revision

Modified

File length: 21909 byte(s)

Diff to previous 2692

No longer produces the message that there are too many answers if hints are being shown about individual entries in a list. (This gave away the answer about which ones to remove.)

Revision

Modified

File length: 21894 byte(s)

Diff to previous 2688

Use the current context if the answer doesn't have one itself (like with Value objects).

Revision

Modified

File length: 21882 byte(s)

Diff to previous 2687

Added in functMaxConstantOfIntegration support in the adaptive parameter answer checking. Also added a flag to the formula answer checker that allows checking a formula up to a constant (for integration problems). This really just adds a new parameter to the context and adds that to the formula, so there is nothing deep about this. ANS(Formula("2x")->cmp(upToConstant=>1)); Finally, don't look for adaptive parameters if they aren't actually used in the professor's formula (even if they are defined).

Revision

Modified

File length: 21305 byte(s)

Diff to previous 2671

Added ability to have linear adaptive parameters in the function answer checker. It only works for real-valued functions, though. To use a parameter, use Context()->variables->add(a=>'Parameter'); and then use 'a' as a variable within your answer. The student will not be allowed to enter the parameter, but the professor will. Note that the correct answer will show the full professor's answer, including the parameters, even though the student can't type it. Is this the right behaviour?

Revision

Modified

File length: 21142 byte(s)

Diff to previous 2667

Fixed some inconsistencies between handing of matrices within the parser and Value packages. Added a predefined Matrix context.

Revision

Modified

File length: 21097 byte(s)

Diff to previous 2664

Added support for dimension warnings in the answer checker for formulas that return points, vectors or matrices.

Revision

Modified

File length: 20722 byte(s)

Diff to previous 2661

Added a file to perform WeBWorK-specific modifications to the Parser/Value packages. (I've tried to make these independent of WeBWorK, so you can use them in other perl code if you want to.) The parameters for fuzzy reals and some of the other parameters now are taken from the pg->{ansEvalDefaults} values (as defined in global.conf or course.conf). More still needs to be done with this, however.

Revision

Modified

File length: 20653 byte(s)

Diff to previous 2656

A number of fixes to make handing lists work better. In particular, you can now specify checks for whether the right kinds of parentheses (or none at all) are used on the student's answer. Some of the flags for the list checker have been changed to accommodate this.

Revision

Modified

File length: 19561 byte(s)

Diff to previous 2648

We need to protect the HTML in the professor's answer so that if it contains <, for example, it won't disappear.

Revision

Modified

File length: 19548 byte(s)

Diff to previous 2634

The answer checkers now work with subclasses of Formulas that are not part of the Value:: package tree itself (we call Value::isFormula() rather than checking the class directly). I also removed the various cmp_* flags that stored method names as they ended up not needing to be used (they were intended as a means of overriding the default method names, but subclassing turned out to be a better approach). I moved some initialization of the answer checker out of the anonymous subroutine that is installed in the checker and just have that subroutine call the correct answer's main checker (which I renamed). Finally, I changed the student_ans value to be an HTMLized version of the student answer, since the student could include things like < in his answer (e.g., for vectors), in which case his whole answer might disappear. I wonder if this couldn't be handled better at a higher level, as it seems wrong to make the student_ans be HTML rather than the parsed string. I originally thought Problem.pm could do the protecting of HTML special characters, but this won't work without additional changes, since some answer checkers put HTML into student_ans to mark sytanx errors in the student answer, and you DON'T want to protect those HTML characters. The student_ans field is probably being misused in this, and there might want to be another field that gets used by Problem.pm in place of student_ans (which can be HTML protected) when it is non-empty; say student_HTML or something like that. The answer checkers could use that field if it wants to add HTML to the student answer, and student_ans otherwise, with the assurance that it's HTML characters will be protected. That way, if a second answer checker calls the first (like some list checkers do), then the second checker doesn't have to worry about removing HTML from the student ans, and doesn't ahve to wonder whether the student_ans actually contains an error message or syntax markings rather than the actual student answer.

Revision

Modified

File length: 19750 byte(s)

Diff to previous 2632

Changed the string used for the student answer to be taken from the unevaluated formula rather than the fully-evaluated one. This leaves constants unreplaced, for one thing. Currently the parser combines constants automatically during the parse [which should be controllable by a flag], so student answers that produce numbers are fully evaluated at this point already, except for constant substitution. This could be changed so that even for numberic results, the student sees the parsed expression (rather than the numeric result), which might help them identify where they and the parser differ in their interpretation. It is still nice to see the final computed result, however, but there is no place to show the parsed input as well as the final result. One solution would be to add another column (wasting space). Another would be to make the value shown be "parsed-value = computed-value" when they are not the same thing. A bit ugly, but works within the current framework.

Revision

Modified

File length: 19789 byte(s)

Diff to previous 2629

Fixed typo in name of random generator.

Revision

Modified

File length: 19792 byte(s)

Diff to previous 2627

Fixed a number of minor problems with creating perl functions from formulas (this is done automatically as part of the function answer checker, so is showing up now that I have that checker in place). Also improved error messages in the function answer checker, and fixed a bug when students enter a constant list or union when the answer checker expects formulas.

Revision

Modified

File length: 19426 byte(s)

Diff to previous 2626

Removed unwanted side-effects of some type-match checks, and moved the ignoreStrings flag so that it is available for the checkers of ANY type.

Revision

Modified

File length: 19577 byte(s)

Diff to previous 2624

One more fix for handling intervals properly (I think it's really right this time). Also, named constants that end in numbers will produce TeX output with the number as a subscript (this was already true for variable names).

Revision

Modified

File length: 19576 byte(s)

Diff to previous 2622

Added support for unorderd list or formulas with partial credit. Fixed type mismatch reporting in formula answer checker. Fixed an error with Unions producing incorrect perl versions under some circumstances.

Revision

Modified

File length: 18104 byte(s)

Diff to previous 2621

Created the first draft of the Parser's function answer checker. Some work still needs to be done, in particular, type mismatches are not being reported, and lists are being processed only as ordered lists with no partial credit. This doesn't implement everything from fun_cmp. In particular, there is no support for parameter matching at the moment. This will have to be added, but I'm not quite sure how to do it when the function's return value is not a real number (e.g., an interval). On the other hand, this checker is more forgiving about domain errors: if tries a point where the professor's function is not defined, it ignores that one and looks for another (until it decides it can't find one). Once it has these points, it tries them on the student's answer, and if the student's function is undefined, then the student answer is wrong (since it is not defined somewhere that the professor's funciton is). This avoids the "Error evaluating student function at ..." messages, which just confused most students anyway.

Revision

Modified

File length: 17162 byte(s)

Diff to previous 2617

Improved error messages, particularly when the student enters a formula in an answer that should be constant, and also for incorrect answers in lists of answers. There are a few other miscellaneous output improvements as well.

Revision

Modified

File length: 16068 byte(s)

Diff to previous 2612

The Union answer checker now uses the generic List checker, so that it will be able to produce partial credit and hints about which Intervals are correct.

Revision

Modified

File length: 15738 byte(s)

Diff to previous 2611

Fixed some bugs in the handle of the context in ->string and ->TeX methods of Value objects.

Revision

Modified

File length: 15495 byte(s)

Diff to previous 2609

Fixed a typo in one of the parser answer checkers. Added a line that was incorrecctly removed in the parser.

Revision

Modified

File length: 15496 byte(s)

Diff to previous 2606

Added a String type to the Value package. Mostly this is to make it possible to generate an answer checker for it that uses the parser. It also makes it more consistent for handling things like stringify, especially when they are recursively called internally. Added new default strings "NONE" and "DNE", since these get used a lot. Modified how the default parameters are set up for the answer checkers, and how the answer checker reports the expected answer type in type mismatch error messages.

Revision

Modified

File length: 14844 byte(s)

Diff to previous 2605

Can now specify that the objects stringify themselfs in their TeX forms rather than their answer-string forms. This makes it easier to use the objects in the text of a problem (without having to call ->TeX explicitly each reference). Use Context()->texStrings to start outputting TeX strings, and Context()->normalStrings to switch back.

Revision

Modified

File length: 14816 byte(s)

Diff to previous 2604

Incorporated infinities into Parser package better. They have been stored as String objects (with extra data) in the parser, and I've left it that way, but now they convert to/from Vallue::Infinity objects correctly, and these are used for generating the output. Also added the Infinity answer checker, and adjusted the error messages produces by type mismatches in the answer checkers and elsewhere.

Revision

Modified

File length: 14299 byte(s)

Diff to previous 2601

Fixed some output issues with intervals and unions.

Revision

Modified

File length: 13956 byte(s)

Diff to previous 2600

Added ability to report incorrect coordinates in point and vector answers, and incorrect endpoints and endpoint types in intervals. Separated these kinds of checks from the typeMatch check, where they didn't really belong. Added ability to specify intervals and unions as strings in Interval() and Union(), which makes it easier to make constants of these types. There are still problems comparing intervals that contain infinities; I really need to make the infinity object to solve this, so have put off trying to fix that for now.

Revision

Modified

File length: 11987 byte(s)

Diff to previous 2599

Handle list entries that are not Value objects better.

Revision

Modified

File length: 11651 byte(s)

Diff to previous 2597

The List object's answer checker is now considerably improved. It will allow you to specify an unorderd or ordered check, and whether to print various kinds of hints for wrong answers. The checker can return partial credit, but WW doesn't deal well with this at the moment (some small changes to Problem.pm can take care of that). Partial credit should be based on $showPartialCorrectAnswers, but it is disabled for now. The list answer checker probably still needs some work, especially with non-numeric lists.

Revision

Modified

File length: 8048 byte(s)

Diff to previous 2596

Added answer checker for parallel vectors. Added option to number checker to have it not report type mismatches for the known strings (like 'infinity'). (Really need a class for infinities, and a Value.pm class for strings.)

Revision

Modified

File length: 7356 byte(s)

Diff to previous 2594

Have parser handle infinities better.

Revision

Modified

File length: 7060 byte(s)

Diff to previous 2593

Fixes for handling intervals better. In particular, deal better with ambiguous situations, like (1,2) that could be a point. You can use [a,a] to specify the single point a. I'd like to make {a} represent this (and maybe even {a,b,c} to form finite sets), but this would interfere with the use of { and } as alternative parentheses. (Does anyone really use these?) Do we need a cross product for intervals (and sets) as a means of representing regions in R^2 (or higher)?

Revision

Added

File length: 6598 byte(s)

This is a preliminary attempt at adding answer checkers that use the parser. If you have a parser object (like a formula or a vector), you can use the ->cmp method to get an answer checker appropriate for the object. For example: Context('Vector'); $v = Vector(1,2,3); # print text of problem ANS($v->cmp); would produce an answer checker that matched against the vector <1,2,3>. Most of the parameters are set in the Context, but additional ones can be passed to the checker (this still needs work). See the sample problems for more examples. The checkers for Reals, Complexes, Points, Vectors, Matrices and Intervals work pretty well. The ones for List and Union objects need more work, as they only do an ORDERED check at the moment (the student answers must be in the same order). This needs to be fixed. The checker for Formula objects (which corresponds to fun_cmp) still needs to be written.

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

aubreyja at gmail dot com | ViewVC Help |

Powered by ViewVC 1.0.9 |