Annotation of capa/capa51/pProj/Changes, revision 1.3

1.1       albertel    1: 
1.3     ! albertel    2: 
        !             3: New functions
        !             4: 
        !             5: 
        !             6: array_min(array_name)
        !             7: array_max(array_name)
        !             8: 
        !             9: will calculate the min or max value from the 
        !            10: array given by array_name. All elements in 
        !            11: array array_name should be of numerical type, 
        !            12: if there is one element assigned a string value, 
        !            13: then array_min() and array_max() will give an
        !            14: error, indicating that it could not calculate 
        !            15: the min or max value for strings.
        !            16: 
        !            17: /LET arr[123]=123
        !            18: /LET arr[456]=456
        !            19: /LET arr[1]=1
        !            20: /LET arr[34]=34
        !            21: /LET arr[56]=56
        !            22: /LET arr[78]=78
        !            23: /LET arr[12]=12
        !            24: /LET arr[4]=4
        !            25: /LET arr["124"]=124
        !            26: /LET arr[1.2]=1.01234567
        !            27: /LET max = array_max(arr)
        !            28: /LET min = array_min(arr)
        !            29: 
        !            30: The results of max will be 456 and min will be 1.
        !            31: 
        !            32: 
        !            33: array_moments(result_array, input_array)
        !            34: 
        !            35: 
        !            36: /LET elements = array_moments(result_array, data_array)
        !            37: 
        !            38: The input array is data_array and the calculated results will be placed in a newly
        !            39: created array named result_array. This resulting array contains exactly five elements, 
        !            40: result_array[0]  = number of elements in input array
        !            41: result_array[1]  = mean value of elements in input array
        !            42: result_array[2]  = variance of elements in input array
        !            43: result_array[3]  = skewness of elements in input array
        !            44: result_array[4]  = Kurtosis value of elements in input array
        !            45: 
        !            46: Suppose all values in array data_array is denoted by $X$, 
        !            47: the $i$-th element in the array is denoted by $x_i$, and 
        !            48: the number of elements in the array is denoted by $n$.
        !            49: The formula of mean value is given by $\Sigma_{i=0}^{n-1} x_i / n$.
        !            50: Let $\mu$ represents the mean value of the array. 
        !            51: The variance is defined as  $\frac{\Sigma_{i=0}^{n-1}(x_i - \mu)^2}{n-1}$. 
        !            52: The standard deviation of the array can be calculated by taking the square root
        !            53: of variance. Let $\sigma$ denotes the standard deviation of the array. 
        !            54: Skewness is calculated from $\frac{\Sigma_{x=0}^{n-1}((x_i - \mu)/\sigma)^3}{n}$
        !            55: The Kurtosis value is from the formula 
        !            56: \frac{\Sigma_{i=0}^{n-1}(x_i - \mu)/\sigma)^4}{n} - 3$
        !            57: The constant $3$ is used to make the normal distribution appear to have a zero Kurtosis.
        !            58: 
        !            59: 
        !            60: Formula answer
        !            61: 
        !            62: As of CAPA 5.1, a new type of answer can be used by the instructor. 
        !            63: A formula as an answer to a problem. That is, the instructor defines a string of 
        !            64: formula and ask the students to enter the formula, as long as the entered formula
        !            65: is equivalent to the answer formula, the CAPA system will check and 
        !            66: issue correctness or incorrectness based on their equivalence. 
        !            67: The underlying mechanism behind this type of answer is that besides the formula string, 
        !            68: two additional pieces of informations have to be provided 
        !            69: by the instructor, (1) the list of variables used in the answer string and 
        !            70: (2) the values of these variables to be used in evaluating formula equivalence.
        !            71: Those two pieces of information are given within a pair of angle brackets appearing
        !            72: as the right hand side of the keywork "eval =". 
        !            73: 
        !            74: The list of variables is entered as a string or a variable containing a 
        !            75: string value. Within that string, each variable is separated by a comma. 
        !            76: The symbol '@' then follows. 
        !            77: Two forms of variable values can be used. A string with comma separated numerical values
        !            78: or two comma separated numerical values divided by a ':' symbol and followed by
        !            79: a '#' symbol and an integer indicating the number of values to be 
        !            80: interpolated within the two values given previously. Both form can be replaced by
        !            81: a variable containing the proper string value. 
        !            82: 
        !            83: Tolerence can be given to allow the instructor fine tune the results
        !            84: of acceptable values when checking the equivalence of two formulae. 
        !            85: 
        !            86: 
        !            87: /LET f="x^2+y*y^(2)"
        !            88: /LET vlist = "x,y"
        !            89: /LET pts = "1,4:4,5#5"
        !            90: 
        !            91: /ANS(f,str=FML ,eval = <"x,y" @ "-1.0,-1.0":"1,1"#4, pts, "0.0,0.0"> ,tol=1e-9) 
        !            92: 
        !            93: --
1.2       albertel   94: Fixed rad != 1/s  in capaUnit.c
                     95: add   init_array() function to the user
1.1       albertel   96: 
                     97: 
                     98: 
                     99: 
                    100: 
                    101: --
                    102: changes from 4.6.3 to 5.0.0
                    103: 
                    104: units 
                    105: 
                    106: Use stacks of data structure to implement 
                    107: /WHILE /ENDW loops
                    108: /IF /ELSE /ENDIF
                    109: 
                    110: use EoL token to replace '\n', '\r''\n', and '\r'. 
                    111: 
                    112: 
                    113: 
                    114: FILE FORMAT
                    115:  setX.db header will look like 
                    116:  9999999, 
                    117:  1222111111111111111111111
                    118:  1111111111111111111111
                    119:  abc,y,xy,x
                    120:  abcde,...
                    121: 
                    122: 
                    123: 
                    124: 
                    125: prints a percentage sign in the term summary.
                    126: 
                    127: Added a rule to the <S_VARIABLE> state in the lexer so \\{Space}*\n
                    128: can occur inside a /DIS command
                    129: 
                    130: Fixed the rule matching in the <S_STRING> state so that \\{Space}+\n 
                    131: will actually get matched, (Before the string text matching rule was
                    132: getting matched) (Performance detraction)
                    133: 
                    134: capalogin, and capaweb things ignore the generation of SIGFPE, this is
                    135: because capa_check_answer was generating strange Floating point
                    136: underflow errors
                    137: 
                    138: added possible option capaweb_cgibin_path, specify what directory the 
                    139: capasbin and capahtml are located in, if not specified defaults to
                    140: "capa-bin"
                    141: 
                    142: Fixed bug in inhibiting the display of the Summary Score in capalogin
                    143: (was instead displaying what the option's value was)
                    144: 
                    145: Now accepts numbers of the form .{Number}+[Ee]{+,-}*{Number}+
                    146: (things like .3e-2)
                    147: 
                    148: Changed message to read "Hand-graded Correct"
                    149: 
                    150: was not initializing all the values to the defaults in the first
                    151: problem in a set in capaCommon.c (capa_parse)
                    152: 
                    153: capa_set_entry was returning an error if setting the last entry in the
                    154: file
                    155: 
                    156: Now emits a WARNING in all cases of a numerical answer with zero
                    157: tolerance except when it is an integer answer and the tolerance of
                    158: zero is specified.
                    159: 
                    160: error messages now contain a WARNING or ERROR whether the error can be
                    161: ignored (WARNING) or shouldn't be (ERROR)
                    162: 
                    163: qzparse now correctly genereates answer strings when running with -Tb
                    164: and -Stu
                    165: 
                    166: --
                    167: changes from 4.6.2 to 4.6.3
                    168: 
                    169: Issac made vast changes, the WhatsNew document will give a good
                    170: indication of what is different.
                    171: 
                    172: --
                    173: changes from 4.6.1 to 4.6.2
                    174: 
                    175: capalogin gets a maximum inactivity time from capa.config file, option
                    176: is capalogin_inactivity_delay specified in minutes , default is 60 minutes
                    177: 
                    178: capalogin gets exam_path and quiz_path from capa.config file, option
                    179: is exam_path, quiz_path
                    180: 
                    181: capalogin now gets delay time from capa.config, option is
                    182: capalogin_goodbye_delay, defaults to five if the option is not
                    183: specified or capa.config can't be read.
                    184: 
                    185: allcapaid understands starting set option, specifiying calss directory
                    186: on command line, doesn't create files but prints info to screen with
                    187: -i option, and can have an output directory specified with the -d
                    188: option
                    189: 
                    190: allcapaid creates a capaID directory and sectionX.id files
                    191: 
                    192: allpin.c move to allcapaid.c
                    193: 
                    194: capaCgiUtils.c modified to have friendlier messages on problems that
                    195: have not yet been correctly answered, now says "Not correct yet", and
                    196: no longer says Incorrect on problems that are incorrect with no more
                    197: tries.
                    198: 
                    199: capa.config was modified, comments must be on their own lines and must
                    200: have a # in the first column
                    201: 
                    202: capa_get_header forgot to init nq before using it.
                    203: 
                    204: qzparse was incorrectly handling the TeXfooter with the new directory
                    205: specification code.
                    206: 
                    207: changed the exit button so that at least netscape 3.0 and 4.0 browsers 
                    208: actually close the window.
                    209: 
                    210: changed all 'method="link"' to 'method="get"'
                    211: 
                    212: commented out alot of error condition printfs in capaCommon.c where
                    213: the errcondition was signified already by a returned error
                    214: code. Cleans up some of the web output when silly things are entered.
                    215: 
                    216: if VSET is an empty string, set g_vset to 1. (sscanf would assign 0 by
                    217: default.)
                    218:  
                    219: Added Reload Button to top of the capa pages, it resends the same data
                    220: as the "Try current set" or View Previous set button did.
                    221: 
                    222: Explanations are now printed on the web when viewing previous sets.
                    223: 
                    224: --
                    225: changes from 4.6 to 4.6.1 (capasbin, capahtml distributed to colorado)
                    226: 
                    227: added result code of UNIT_NOTNEEDED for when student specifies a unit
                    228: but the answer to a question does not need units. Modified capalogin.c
                    229: and capaCgiUtils.c to make use of this new situation along with
                    230: changing capaCommon.c:capa_check_answer to return this result
                    231: 
                    232: fixed a problem where if a student put a space at the end of his answer  
                    233: that included units, the space would be thought of as a multiply sign.
                    234: 
                    235: capa_get_student forgot to copy the student number into the returned
                    236: student structure
                    237: 
                    238: changed the logging of submissions to now only log non blank answers
                    239: from students and to use a smaller date string, hopefully this will
                    240: minimize the amount of data created.
                    241: 
                    242: changed the login screen help link to look a button, and added a
                    243: similar button go right beside the Exit button on assignment pages.
                    244: 
                    245: gave qzparse the -d option to specify a different directory for the
                    246: output files.
                    247: 
                    248: changed the "Incorrect, no more tries" messages to correctly display
                    249: the last answer and imbedded the last answer back into the web page.
                    250: 
                    251: created w_log_submissions and modified w_get_input to log the
                    252: submissions received from the web page
                    253: 
                    254: in capaHTML.c error code is printed out when an error is returned from 
                    255: w_get_input.
                    256: 
                    257: modified print_quizz to check w_log_attempt's return value and emit an
                    258: error message if it was incabable of doing so.
                    259: 
                    260: changed w_log_attempt to no longer need a section number argument
                    261: 
                    262: added more info to the error message about not able to access class
                    263: directory.
                    264: 
                    265: modified capaCgiUtils.h to check the result from getenv for a NULL pointer
                    266: (In case the env variable is not set) in all uses of getenv
                    267: 
                    268: when printing out answers to questions when in VIEW_PREVIOUS_MODE the
                    269: format string was missing a %s to print the units out and a <br> to
                    270: keep the next problem from starting on the same line.
                    271: 
                    272: changed all occurances of &times to &#215 as per HTML 4.0 specs
                    273: (Macintoshes now correctly display multiplication sign.)
                    274: 
                    275: changed all occurances of /class.html to /CAPA/class.html
                    276: 
                    277: modified the qzparse.c and allpin.c to use the new versioning method
                    278: 
                    279: capasbin and capahtml now emit a comment that has the CAPA_VER and
                    280: COMPILE_DATE info
                    281: 
                    282: in capaCgiUtils.c I moved the hidden input fields to be listed infront
                    283: of the questions, this way early button mashers don't forget to send
                    284: this info back to the server
                    285: 
                    286: using the define CAPA_VER and COMIPLE_DATE for the version number and
                    287: date of compiling of the code, set in the Makefile
                    288: 
                    289: --
                    290: changes from 4.5 to 4.6
                    291: 
                    292: changed u_parse_unit to be a series of nested elseifs to handle
                    293: conditions where invalid characters appear in the unit spec
                    294: 
                    295: added global variable gUnitError to be set to one if an error occurs
                    296: while parsing a unit spec.
                    297: 
                    298: 
                    299: --
                    300: Old updates:
                    301: 
                    302: 
                    303: After July distribution:
                    304: 
                    305: FIXES: char *c_getpath() has the while loop that looked like:
                    306: 
                    307:  **** while (isalnum(c) || c == '{' || c == '}' || c == '-' || c == '\' ||
                    308:              c == '^'   || c == '_' || c == '/' || c == '.' || c == ':' ||
                    309:              c == '+'   || c == '*' || c == '#' || c == '!' || c == '=' || 
                    310:              c == ';'   || c == '$' || c == '(' || c == ')' || c == '[' ||
                    311:              c == ']'   || c == '?' || c == '>' || c == '<' || c == ',');
                    312: 
                    313: Update to manual:
                    314: 
                    315: 1. web_access.log permission should read:
                    316:    -rw-rw-r-- instead of -rw-r--r--
                    317: 
                    318: 2. weight = 0 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>