Let me begin by confessing that I wrote this in part as an exercise in programming the TI-92. It's based on a similar program that I wrote for the TI-85 which in turn was written out of a need to have some way to analyze final exam scores for large classes (e.g. 500+ students) when there was no computer available at the grading site (when is there ever one??). When I finished with this program I decided that it was worth sharing with others. There are three items contained in the group file grdanlze.92g which when transferred to the TI-92 will all be in the main folder (see note 3 below if you wish to either use them from or move them to another folder ). The first item is the primary program, ganalyze(). This is the program you will run to do all the work for you -- drawing histograms, finding the stats, grouping different classes scores together, removing outlying scores, and so on. The second is an ancillary program, condense(), which is used by ganalyze() and is also of a slight amount of use in its own right: it takes a list of repeated scores and rewrites them as an equivalent data variable. The third is a function, concat(), which is used by ganalyze() and is also very useful by itself: it takes two given lists and concatenates them. RUNNING ganalyze(): The program is straightforward: choices are made via the toolbar and menus, and input is given thru dialog boxes. The main thing to be aware of is that the scores you wish to work with should already be saved as lists BEFORE you begin to run the program (e.g., {20, 34, 42, 48} -> exam2). You will not be given the opportunity to enter any actual scores while you are running ganalyze(), however, you WILL be able to combine different sets of scores, as well as to eliminate outlying scores that you think should not be included in any statistical analysis. Once you have started the program you will need to enter the name of the list of scores that you will be initially working with (e.g., exam2 from the above note). If you make a mistake you can enter the name again (error checking to look for accidental and/or careless mistakes is present throughout the program). After the name has been entered you will be presented with the main toolbar which has five selections, two of which have menu items beneath. From left to right, here is what each does: Stat: Does a one variable statistical analysis of the scores. Use the up/down arrow to see all the data. Plot: Displays a menu of five items, all related to graphical plots of the data: Histogram: Graphs a histogram of the scores. You will be asked to give a bucket/bar width, with the default being the minimal possible for a graph to be constructed Box: Draws a box plot of the current scores. Trace: Allows you to trace the last drawn plot using the left/right arrow keys. Use ESC when done. Alter window height: The algorithm I use for the window height (ymax) can often give a display which is inadequate (i.e. not tall enough). This item will present you with a dialog box to change the height, with the default being the current value for ymax. Save as pic: Allows you to give a name to save the current plot under so that you can recall it later. The picture is saved in whatever folder you were in when you started ganalyze(). Modify: This allows you to specify two values, a lower bound and an upper bound, and then the program proceeds to toss out all scores that don't lie in the range [lower bound, upper bound]. The original set of scores is NOT affected by this --- just the internal set the program is using. New Grades: Has a menu with two choices beneath it: Single Set: Lets you choose a new set of grades to work with. Multiple Sets: Lets you specify several lists of grades (no limit on how many) that are to be combined into a new set to work with. This new list will be available to you when ganalyze() finishes (it's a global variable) so that you can continue to work with it in the future. Because of this it is important to think about what name you give this new list --- you don't want to replace a list that already exists. Quit: This should be self-explanatory. NOTES for ganalyze(): 1. There is no upper limit (other than memory) on how large a list you can use in ganalyze(). However, the larger the list the longer you have to wait for some operations. I have tried to speed things up by using a data variable (see condense() below) but that can take time to set up. For example, a list of 650 items takes one minute to process. The positive side is that histograms etc. go much faster (without processing, each histogram for the 650 item list would take over a minute). 2. There is no limit on what values the grades can take. You can use ganalyze() for 100 pt exams or 500 point exams --- it makes no difference. 3. If you are going to use ganalyze() from a different folder than the one it is stored in, you will need to modify the code (where it calls condense and concat) to include the proper path name. All this really amounts to is placing in front of each call of condense and concat RUNNING condense(origlist,datastr): Origlist is a list of numeric values, datastr the name to give to the data variable to place the result in. The list of values is sorted and repeats removed with the result being placed in the first column of the data variable. A count of how often each value occurs is kept and placed in the second column of the data variable, so that when both the columns are read as (value, freq) they end up describing the original list. RUNNING concat(list1, list2) list1 and list2 are lists (no limits on types of entries). They are concatenated (list1 first) and the resulting list is returned. QUESTIONS? My e-mail address is rlittle@math.utk.edu; I also subscribe to the graph-ti mailing list.