MFA home Neals Homepage

For completeness this page documents the nature of changes made to the MFA tool.

Version change history

Version 0.98

A relatively small update to add a column to the marks input spreadsheet output that include the marks with the effect of marks flags taken into account.

Functional changes and fixes:

Specifically F, P, S, T indicators cap marks to the "pass mark" for the module (normally 40%). U and A indicators set the mark to 0. All other flags do not change the mark. The mark is calculated using a spreadsheet formula so by changing the flag on the spreadsheet will cause the mark to be changed appropriately. The checksum column now uses the capped marks to generate it checksum values (so these may change if a flag is changed)

A few minor changes to the code for JOrtho (spell checking) were made due to deprecation (and API removal) of some functions that now have new versions that now require Rectangle2D objects to replace Rectangle objects for mouse pointer processing. This should not have any effect on existing functionality.

Version 0.98b (24012024)

I have figured out how to force all spreadsheets to recalculate all formulas upon loading. This should resolve issues with graphs not displaying correctly and columns of 0's instead of results. Note that this may mean it takes a second or two for the graphs and data to appear (especially on slower machines).

The marks histograms have been updated so that hopefully those using Libre Office will see "Assignment 1" etc. as the graph title instead of a random number. In addition everyone should see "#REF" and empty graphs if there is no data propagated through (instead of incorrect graphs).

I have fixed the stats on the MARKS ENTRY sheet that was showing #refs instead of the failure rate because the introduction of the capped marks column caused the calculations to summarise the wrong column.

Version 0.98c (09022024)

Fixes fragility discovered in the marks entry sheet when columns are added to the summary sheet prior to generating the Marks Entry sheet. This caused an incorrect formula to be generated for the the capped mark. All 'column relative' assumptions have been removed from the code and column headers are now used to find the position of columns (specifically, the imported STR00009 column that has the resit indicator and for the Returned Mark column in the Summary sheet) This means that is the summary sheet has additional columns added anywhere they will be included in the marks entry sheet and the capped mark etc. will remain correct. Any additional columns to the left of the 'Returned mark' column and the capped mark column will also now get the statistics added. I have also added a 'force recalculation on load' for the Marks Entry sheet to avoid a sheet full zeros for spreadsheet tools that don't autodetect that formulae need recalculating.

Version 0.97

The tool has been modularised and now compiles with Java 9 upwards. MFA has moved to OpenJdk 14 at compatibility level for Java 11, the current long support term release. This has meant major updates to virtually all of the libraries used, some of which have now been removed from the core java distribution into become independently (Eclipse) supported projects (Jakarta Mail, jaxb) plus the knock on effects on Apache POI, JOrtho, JavaFX etc. These are big changes and there may be the odd gremlin especially on platforms (Windows/Linux) I do not mostly develop on- please report to me!

Functional changes and fixes:

Gradecenter columns can now be imported as a task within an existing assignment/exam. The Import component selection list on the Blackboard tab allows a column from the BB export to be selected for import and the as a Task for Assignment/Exam selection list allows selection of the item into which the column will be inserted as a new MFA Task. The default option "CREATE A NEW ASSIGNMENT FOR IMPORTED COMPONENT" will create a new Assessmnent with a new Task called "Imported" (as in previous versions). There are no weightings included in the GC export so it is important to set the required maximum mark and weightings on the Assessment tab after import. Imported items will not overwrite existing Tasks so to update a set of task marks a new task is created and the original needs to deleted from the assessments tab. The non-submission flag is set when appropriate when importing a column as an assessment, however the non-submission flag is not set when tasks are imported, since a student may submit for some tasks only.

A new results sheet "ResultsPercent" has been added to the exported workbook. Each Assessment mark is shown as a rounded percentage mark for that assessment. This matches the uploaded component marks to that go to Astra. The overall module marks are calculated from these marks =, weighted by component and then rounded. This should be the mark recorded by Astra should also match the existing final marks on the existing Results sheet. That is calculated from the % contribution of the rounded percentage marks for each assessment to the module which when summed and rounded should give exactly the same result. The results view thus shows how much of the overall module each student obtained from each assessment and the sum of these provides the model result. The ResultsPercent sheet shows how well each student did for each assessment, but the overall result requires the component weightings.

The Freeze panes are not longer set up to fix the column heading in the exported spreadsheet. This it due to a problem in the modularised version of Apache POI that causes MS Excel to have to "repair" and .xlsx file generated from POI that includes freese panes. Once the xssfSheet.createFreezePane(...) API function has been fixed and no longer creates faulty files it will be reinstated. I suspect that MS have somehow changed the freexepanes due to problems reported with freesepanes when uses are simultaneously editing sheets online in Office 365. Hopefully POI will figure out a a fix.

Improved search - the search box now turns from pink to green when a match is found. There is then a slight delay until the cursor is placed in the relevant mark box for the located student. This is to avoid excess search characters from being entered into the the marking area by giving the user time to stop typing once a match is found (otherwise potentially overwriting any existing mark).

Fixed problem in import from Gradecenter tab that caused very slow loading (minutes for big classes) of the marks (actually far too much output being generated in the message area, running the GUI out of memory)

removed the code inserted in (version 0.93f) that makes the tool run itself again with the "-XX:CompileCommand=exclude,javax/swing/text/GlyphView,getBreakSpot" option, since the JIT compiler bug that caused the glyph generator to fail (causing the cursor to become misplaced from the input typing position) has been fixed in Java 11.

Version 0.93b (24082020)

Fixes a glitch with importing grades from Gradecenter when the list of students in CG includes students that are not in the MFA list of active students, but have a grade in the column being imported. This can happen in resit situation for example when A students submits an assessment but is not registered on the module list. The issue caused marks not to be imported following the problematic entry.

Version 0.96 (06072020)

All component (ie. mfa assessment) marks are now rounded to integer values (ie. x.4999 -> x, x.5 -> x+1). The reason for the change is that Blackboard uses integer marks for module components and we want the result produced by Blackboard (Astra) for the module to be the same as the MFA spreadsheets and student feedback. The students will now also receive rounded integer marks for Assignments (rather than the previous 1 decimal place percentage)

Details: The integer marks for each assessment are now weighted and combined (as double values) and then rounded to produce module marks. The Blackboard tab of the mfa will now also feed the component marks to BB as integers (so BB cannot not truncate decimals). The results and summary spreadsheets now also show the integer marks, as does the 'Module contribution' (final) column of each assignment/exam/set of worksheets etc. Within each assessment full double precision is still used to calculate the assessment mark from its weighted tasks.

Improved the error reporting associated with loading Blackboard csv exports to provide more information for failures (for example the java file chooser tool in the latest version of MacOS broke itself - now fixed). Sometimes Blackboard exports a blank column resulting in a final comma on each line of the csv with no subsequent data after, this is now reported in the mfa as the file is loaded as a warning that can usually be ignored (unless something else is wrong) - worth sanity checking the check the upload csv in that case.

Version 0.95

There is an additional tab to allow Component marks transfer (Assignemnts/exams etc.) to Blackboard (hence Astra) Download of marks into MFA also is now supported (to collect marks into the spreadsheet from other places if required). The cohort information can now also be obtained from BB, avoiding the need to access Astra reports.

Version 0.95b (14012016)

Resolves an issue of spreadsheet generation failing in the Easter 'Blackboard' enabled version (0.95a). Resolves an issue importing the cohort list from BB.

DETAILS: For various reasons (jaxb update) I updated the POI version (spreadsheet tools) to version 3.7 in the last release. Unfortunately the POI has been reorganised and moved "dom4j-1.6.1.jar", "geronimo-stax-api_1.0_spec-1.0.jar" and "xmlbeans-2.3.0.jar" into a separate "lib" folder. I didn't spot this and didn't export those libraries between the two projects that make up the MFA (it is done this way to avoid Eclipse including multiple copies of the jar files in the mfa.jar application bundle). The net result was that the marking.jar file didn't contain those library files on the expected path. This caused a few classes (sometimes) required for spreadsheet generation to be inaccessible at run time - including a set of exception classes that report to the MFA code that something has gone wrong. This results in the MFA waiting for a thread to complete or throw one of the range of defined exceptions. Sadly neither of these happens if a class loader exception occurs inside the POI thread trying to load an exception class! The result is a hang when generating spreadsheets... Unfortunately for me the problem doesn't happen when running inside the Eclipse IDE because it manages to find the "missing" class files because they not inside a jar, but in my libraries folder external to the project so most of my testing would not have seen the problem since it only happens when running the exported jar.

The second issue solved concerns a special type of user that can be created in BB called 'previewuser'. Every single item in a BB csv file export is surrounded by double quotes except it seems the student ID for the special preview user which appears as an empty item (i.e. two commas in sequence). All other empty items in any column appear as ,"", . My tokeniser failed to update a critical row counter for the unquoted empty student ID preview user situation. This only affected importing of marks from BB to the MFA and is now fixed for any item in the BB export that might not be quoted.

Version 0.94

Added the capability to produce marks distribution histograms on the spreadsheets for each assessment and also the module results. These appear on the first sheet 'GraphTemplate' in the WorkBook.
If the histograms show all bars of height 1 you have an older version of Excel that has a bug in the recalculation of named ranges between sheets. This issue affects MS office 2011 on the Mac, but there is a simple solution.

  • 1. Select everything on the histogram sheet (option-A, or click on the top left row/column corner)
  • 2. CTRL-H to open the search/replace dialog
  • 3. type = (equals character) into both the 'Find' and 'Replace' text boxes
  • 4. hit the 'Replace All' button.
The act of replacing one character in each formula with the same character is enough to convince the spreadsheet to recalculate the named ranges. Note that the normal `recalculate formula' button is subject to the bug and doesn't do the very thing it should do. Alternatively open the file on a recent Windows version of office, and resave.

Histograms will be generated for a maximum of 8 assessments. If you have more than that then let me know.

Version 0.94b (14012016)
Fixed the histograms to include results greater than 99%, that were being omitted from the >89% bin.

Version 0.93

Added the capcbility to merge several .mfax files together. Added the capability to automatically attach (marked up) PDF files to the feedback email. If pdf files exist in the same folder as the .mfax file for a module, and those files have a filename starting with the student reference number the emailing tool will attach the relevant file to the results email. This allows an external tool to be used to annotate pdf files, which should then be saved using the name copy/pasted from the student list in the MFA tool into the same folder as the .mfax file.

Added summary statistics to the individual Assignment spreadsheets.

This version requires Java 8 - this was done to solve the font problems and incorrect cursor positioning on Mac Retina displays that existed with in 1.7 since Oracle took over Java for MacOS.

Version 0.93a (05052014)
Minor usability fix: fixed a glitch with the default spread filenames being sometimes incorrect when new marking schemes are opened.

Version 0.93b (??date)
Minor functional fix: Display student id rather than name in info area warnings when in annonymous marking mode.
Minor GUI fix: Maintain cursor position in text areas when changing focus from other windows

Version 0.93c (07012015)
Merging mfax files. When merging files the tool now marks the non submission box for any assignment that a student did not have any marks assigned for. A suitable comment is inserted for the overall feedback (ASSIGNMENT OPTION - YOU SELECTED NOT TO DO THIS ELEMENT SO DO NOT WORRY). This message is then used to prevent the feedback being sent for that assignment during return of class results (and is there just in case it should ever be sent individually avoid confusing students with a message about zero marks for an alternative that they did not select). In the spreadsheet such 'alternative' assignments will be noted as non submission, but provided the alternatives all provide the same contribution to the module the totals are correct.

Version 0.93d (07042015)
Added the ability to use task based feedback comments (i.e. the burgundy ones) for numerical mark based tasks. Note: the green `grade based' commments are associated with grades only and therefore cannot be used with numerical marks

Fixed a bug that caused to a fault in the tutors email summary of all student feedback, whereby some mail tools would mess up the formatting of the message after about 40 students. (bad paragraph tag that corrupted the html element hierarchy, causeing some parsers to get confused)

Version 0.93e (07052015) Unreleased testing version.

Version 0.93f (31052015)
Added a workaround for an issue that caused the GUI not to display sometimes in Java 7 and up to Java 8u60 (where the Java JIT compiler should be fixed). The problem is caused by a JIT compiler optimisation bug. Finding this problem was a real challenge so I have documented the full details of my investigation and workaround.

Fixed an issue that resulted in merging of marking schemes that contained assessments with numerical only marks to have the "non submission" flag set in the merged file.

Version 0.93g (11012016)
Fixed an issue in the merging of marking schemes that caused the NON SUMBMISSION flag and message indicating an optional element not to appear in merges, resulting in N/A entries in the exported spreadsheet for optional coursework. Bug introduced during the 0.93f fix for numerical only marks that in turn caused an exception when printing assessments that do not contain grades.

Version 0.92

Addded capability to allow selection of task feedback (in the optional feedback window) to fill in the associated grade, if one has not been selected. The usual process is to select grade and then add optional feedback elements, however the reverse can be used as an alternative marking strategy, provided the feedback elements are linked (used for) to a single grade. Note that all 'default' optional feedback items for a grade will be added when the grade is selected, even if it is selected by means of selecting one of the items of optional feedback. i.e select one and the other defaults for the grade are automatically selected. Note that if an item of optional feedback is assigned to more than one grade, the grade must be selected explicitly, or an alternative feedback item used to produce the grade. Added a search capability to the feedback selection window.

As you type spell checking was also added in this version.

Version 0.92a (22092013) - In addition to the above functionality improvements. A number of text and tooltip elements have been clarified and improved.

Version 0.92b (23092013) - The task based feedback is now sorted alphabetically in the 'optional feedback' window.

Version 0.92c (24092013) - Adding a task with a zero contribution now results in no % value being produced in the feedback task list. This allows additional feedback without grades or marks being given, for example to provide summary comments for a set of related tasks.

If the maximum grade achievable for a task is zero then no grade or mark is shown in the task feedback for the task - only the feedback (useful with a 0% contribution to add comments from an optional feedbcak list).

On the Feedbcak tab a new 'Include numerical task marks' allows the actual marks for tasks to be hidden, leaving only the grade (e.g 'good' vs 'good 7/10').

On the Feedback tab a new set of radio buttons allows the choice between an overall numerical mark (e.g. 72.5%) or course grained (e.g. A) or fine grained (e.g. A-)

Version 0.92d (03102013) - As you type English spell checking on all free text feedback elements. The Dictionary is derived from Wiktionary and (Unfortunately) includes both American and English Spellings. Adding new words is possible on the right mouse button, and is local to the MFA application. In future I will try and separate the British Spellings. The intention is to detect typos rather than check out spelling. Unfortunately the Wictionary for Welsh currently seems rather low in content, and the tool does not have the pattern rules for basic grammatical modifications. Please email me if you would be interested in spell checking for other languages - there are other improvements I'd rather spend any available free time developing.

I have significantly improved the 'optional feedback' popup windows. The elements now expand as you type (instead of vanishing behind invisible scroll bars). When marking, additional task specific feedback elements are typed directly into the list, but using the '+' button to add a new item.

Version 0.92e (21112013) - Improved behaviour for the 'default individual feedback'. The 'Default feedback' is now used during feedback generation if the 'Individual assignment feedback' is left completely blank (the previous behaviour was to insert the default message only when a student results screen was first accessed). If both the `Individual assignment feedback' and the 'Default feedback' is empty no 'Overall Comments' message is produced in the feedback.
This version of MFA also requires Java 1.7 (due to security and other updates in underlying toolkits, as well as the need to use Apples 1.7 JRE to support Retina Macos displays, blah, blah).

Version 0.92f (22112013) - Fixed a GUI glitch (probably introduced when the grade based selector buttons were added in 0.92c) that caused the mailing confirmation and problem messages not to appear in the messages area. Regression testing failure there then ;)

Version 0.92g (29112013) - Fixed a GUI glitch (also to do with the grade based selector buttons added in 0.92c) that caused the 'show all students' button in the 'Feedback' tab not to work.

Version 0.92h (10022014) - Improved tooltip on results page to clarify how to remove marks. Added a worning message if a .msg file is loaded that will be saved with a different name (the user has manually changed the filename). The tool will attempt to create a filename based on the new filename, however since the year is normally used as part of the filename the new name used during save may still be different to the loaded file if the year is the final part of the new filename. Updated tooltip on results input area to explain how to remove marks.

Version 0.92j (25042014) - fixed a glitch which caused files saved as templates not to load (introduced by the 'changed filename warning' enhancement :).

Version 0.917

The duplicate items in optional the optional feedback window (due to same feedback text for different grades) is now not displayed. Notice that each item of feedback is still attached to a grade, so editing the test will only affect that grade.  This is because normally the text would be hedged for each grade using "very", "substantial", "minor" etc.
The current Student, Assignment, Task, and Grade are preserved when changing between tab panes.

Prevent invalid XML characters being pasted into text areas and fixed a few other minor irritations. Invalid XML characters are stripped from text fields if the user cut 'n' pastes, this avoids creating an unreadable xml file.

Better navigation through tables (enter /arrow keys supported).

Some additional configurable properties available in the properties file, including the ability to force the popup windows for detailed grading to the front (useful if demoing on a low resolution projector). i.e.
_ADDITIONAL_FEEDBACK_ALWAYS_ON_TOP=yes
_ADDITIONAL_FEEDBACK_RESULTS_ALWAYS_ON_TOP=yes

Version 0.917f - fixed problem with results entry page where by information area displayed "no results for student" until an individual comment had been added.

Version 0.917g (13052013) - fixed an issue where 'No result' message produced if no individual feedback entered for a student. Shouldn't be a problem because normally there should really be at least a word or two of individual feedback for most assignments... However people are starting to use it for small course grained tasks where onlly task comments are needed.

Version 0.917h - fixed issue with search whereby students selected (etc) and cursor focus moved to results table as soon as a partial match found. Now this only happens when a unique(partial) match found, so once the student is displayed it is the one required.

Version 0.917j (27072013) - fixed an issue whereby student results were not completely removed when saving as a template for a new cohort (if the same student ID exists in the new cohort, the previous results became available)

Version 0.916

This version implements a new 'groups' pane acessed from the results tab.  It shows all students that have identical feedback and marks as the selected one, and allows other students to be added by selecting them.  This causes the feedback to be duplicated for the selected student.  Note that groups do not currently attempt to maintain the copying if changes are made to a member of a group (future feature?). The groups pane provides an easy way to find all students that have the same feedback, or a list of the differences between any pair of students if required.

Version 0.916b - fixed the style of the button border (when using under Windows) for the recently added groups button on the results tab. Puerly cosmetic change.

Version 0.916c - fixed a glitch whereby invalid characters in assignment names ('-') were not being changed to '_'. This results in invalid spreadsheet labels, since Excel can't have these characters in sheet names...
The summary worksheet now includes the failure rate (number of students below the fail mark as a percentage of the number with a valid mark -i.e the value in 'n')

Version 0.915

Default setting is now for the summary spreadsheet to show entered marks for exam questions rather than the percentage contribution of the question to the exam. (property Spreadsheet.SummarySheetQuestionMarksOrPercent=no in the properties file to change this)

The 'absent' tick box in the results page now places 'ABSENT' in the assessment 'Marks sheet' total percentage score columns on the spreadsheet for exams, which is propagated to summary sheets. (property Spreadsheet.AbsentText=ABSENT to change the string used)

A negative mark, is treated as a mark that should be recorded but not used. It appears on the spreadsheet sheets but not in the calculations and has a "!" prefix.

A different backup file is now created for each execution of the software and is updated after data creating operations allowing recovery of data following a system or power failure. The help page contains details.

Non answered questions now have a "" cell value propagated through the spreadsheets rather than 0.0 which greatly improved the appearance of the summary sheets.

Fixed glitch with no submission checkbox failing to enable when new cohorts are loaded.

Fixed formatting of information messages reporting percentages.  Changed 15 decimal places to a more reasonable 2 decimal places.

Version 0.915a includes restrictions and messages on some spreadsheet cells to prevent breaking of the dataflow through the sheets and advise the appropriate sheet to make changes.

Version 0.915b ensures bespoke task feedback is shown even when no grade is selected.

Version 0.915c fixes an issue with all the feedback emails failing to send if one or more students have no marks at all assigned and have not been marked as a 'non submission'.  Any such students revieve a 'contact tutor' feedback message.

Version 0.915d corrects a missing </b> tag in the html feedback that causes text following a 'non submission' to be in bold.

Version 0.915e Improves robustness of the 'marks entry' sheet generation.  The row of the first student is now determined by looking at the data. Student reference column is now determined by looking for the appropriate heading text (specified in MSGProperties file).  Number of additional columns to copy to the generated 'marks input' sheet (after the checksum column) from the marks entry report is also specified in the properties file.  Checksum formula corrected since the final checksum value was incorrectly calculated, and others may have been incorrect - dependent on the previous issues. 

Additional file chooser buttons added to make it easier to use the tool to generate the marks entry sheet from a completed module workbook without having to load the marking scheme first.

The import of students is improved so that a warning is given if there appears to be students on rows before the specified row.  This is to avoid omitting any students if the format of the student input file changes (e.g. more header lines or newline characters).  Since a heuristic is used to recognise student reference numbers this is only a warning which can be ignored.

The spreadsheets now deal properly with blank cells (e.g. when mark removed in picking sheet), and textual cells ("!n" for discounted mark, "ABS" in summary results for absence in assignment/exam) in normally numerical cells.  Blank cells now do not result in 0.0 being generated in dependent cells.

Version 0.915g Fixed a glitch that was preventing the Marks Input Sheet from adding columns following the "extras" column (attempted to copy the formatting for the extras column that is unformatted)

Version 0.915h (28.2.2012) - All of the 'canned' text elements of the feedback are now obtained from the MSGProperties file and thus may be edited.  These properties are prefixed FeedbackText. To update an existing properties file with the defaults run the new MSG view any feedback and exit the program. The new properties may now be edited and will be used subsequently by the program. The feedback references to 'tutor' now default to 'module coordinator'.  Individuals may wish to modify this to their name or user id for example.

Version 0.195i (8.3.2012) - Now allows incomplete marking schemes to be saved (e.g. assessments with no tasks).  Warnings are issued upon saving and loading to inform the user that the marking scheme is incomplete.