Sunday, March 20, 2011

DPX-Tools Version Released

I typically would not announce a release of a new version of my DPX-Tools software, but this version is somewhat special.  This update really only includes changes to the DPX Answers application.  This application is what I used for my masters thesis.  While I have not quite finished my thesis yet, I'm definitely in the home stretch, I have finished all of the coding.  This latest release of my set of tools that are able to open and interpret files created by DyKnow Vision includes a new ability.  The application can now automatically analyze and cluster student answers.

I will preface this by saying my actual thesis is a method for clustering student answers that is not actually included in this latest release and I have not released the source code for this application.  I developed my thesis closed source and have not yet decided what I will do with the code after this semester has concluded.  To explain how this was accomplished, I'll provide some context.  When you launch DPX Answers, it searches for DLL files that include classes that implement the IClusterAlgorithm interface.  This interface along with other functionality that DPX Answers depends on is implemented in the ClusterLibraryCore.dll and GradeLibrary.dll files that are included with DPX Answers.  These files are closed source as well, but my intention was to release these files under an Apache 2.0 license.  The classes in these files provide the buffer between the open source GPL code that makes up DPX-Tools and the closed source algorithm that I wrote for my thesis.  Since I personally wrote all of the code I do not have anything to worry about with mixing open and close source code, but I still want to make sure this code is not encumbered.  This is my first attempt at a plugin architecture for a desktop application, but things seem to work as advertised.

After the application launches, if it is able to identify a clustering library this it loads into memory.  When a file is opened, after the contents of the Answer Boxes have been interpreted using handwriting recognition, the clustering algorithm will merge together what it thinks are identical or near identical answers.  The goal here is to reduce the overall amount of effort required by the person grading the student responses.

From a technical standpoint I am very proud of the design of DPX Answers.  The application is highly multi-threaded, since processing the the Answer Boxes is a CPU intensive activity.  Worker queues are used to perform handwriting recognition and the Dispatcher is used to maintain the GUI interface.  This application is the most complicated desktop application I have written to date.  While I was having problems with major memory leaks for a time because of some GUI elements, I believe I ended up with a simple, but functional application that focuses on a very specific problem.

Overall I am very pleased with where I landed with my thesis.  I will be spending the next few weeks putting the final touches on my thesis and preparing for my defense.  It is almost impossible for me to calculate how much time I have spent working on the code that makes up DPX-Tools.  The DPXReader library, which is able to open a DyKnow file and render the ink content, took me hundreds of hours to develop along with the various applications that utilize its functionality.  As I finish my degree at UofL, I will no longer be using DyKnow Vision.  I have worked very hard developing this software and hope that someone else will find this code base and the applications useful.

No comments: