About
Home
About

FAQs

General
Admin
Assist
Student

Docs

Admin
Assistant

CGI

Admin
Assistant
Download
Form
Student

Packages

AdminInterface
Assignments
AssistantInterface
Form
Interface
Record
Roster
StudentInterface
SystemVariables
Teams
VincentFile
VincentLog




About

Vincent is a file handling system; it permits students to submit files and complete forms (surveys, journals, etc.) online over the WWW using a browser. For administrators, if provides functions for managing rosters, AIs, grades, and other common tasks.

What follows is a brief history of Vincent. It is a sad tale, with much gnashing of teeth by all involved. Unlike most Shakespearian tragedies, this tale does not end with any witticisms along the lines of "Oh happy dagger!," although there are those that might wish it did...

Birth #1 -> Death #1

During the Summer term of 1998, FirstClass was phased out at Indiana University. More precisely, the second summer session was the last time FirstClass was used at IUB. Software that is used by 2000 students per anum in one course alone would strike me as being mission critical; however, the plug was pulled. No viable alternatives existed at IUB for secure file submission and/or test distribution at the time. AltaVista (now SiteScape) Forums was suggested. This was found to be inadequate for the needs of CSCI A110.

Faced with using floppies during the fall semester, Matt Jadud wrote Vincent1, which was called "The A110 Script" at the time. It sucked, but it handled 40,000 files, and limped through the semester. Matt was entering his second year as a CS major (having just come from Physics), and had not really learned anything up until that point about how to structure code to make it usable and maintainable (Some would argue that he still hasn't--this might be true). This fact, combined with the fact that Perl was learned during the two weeks that Vincent1 was written, everything was chucked at the end of the semester.

Birth #2

Vincent was completely rewritten during the last two weeks of break, and iteratively developed over the course of the semester, as some features were not needed until mid-semester or later. This version was a good deal more robust, more usable from an end-user perspective, and had a "maintainable" codebase. While a great deal of feedback had been collected from AIs regarding usability (and some significant improvements were made), Matt's evolving notions of maintainability were warped at best.

Naming: Jules and Vincent

During the semester, one of the AIs in A110 caught a pair of cheaters; one had submitted the other's work, claiming it for their own. This inspired Matt to go looking for a way to automate this process. After four hours, and the help of a GPLed tool called "AntiWord," he had converted all the Word documents in the DB to ASCII text. The first version of the document comparison engine (which would be called "Jules") ran overnight, and found 25 more pairs of documents which were "suspicious." This was a Wednesday.

By Saturday, with the help of another student in the department (Jordan), the document comparison engine was running 16,000 pairs of documents in under 6 minutes on a dual Sun Ultra 60 w/ 2GB of RAM. Granted, the documents (all ~ 10K or less) were pre-loaded into RAM, and the Perl script doing the comparisons (Jules) was using 500+ MB of physical memory at the time, but hey--if you have the resources, use them. At the end of the weekend, 50+ students were found to have been confused as to what it meant to submit work that was their own.

The naming of the comparison script resulted in renaming "The A110 Script" to "Vincent." These names come from the hitman pair in Quentin Taratino's "Pulp Fiction." Vincent is played by John Travolta, if it matters.

Naming -> Death #2

The second iteration of Vincent was better, but when the department decided they would keep Vincent on as the new tool for handling file submissions for A110 and potentially other classes, several promises needed to be kept up. Most importantly, promises of
  • Maintainability
  • Readability
  • Extensibility

needed to be made good on. It was realized that no amount of refactoring could save the existing design. The second half of the Spring 2000 semester was spent redesigning Vincent; documentation detailing data structures, data flow, and system architecture were written, and committed to (gasp!) paper in this process. AIs were asked for input regarding what was still broken, and the author of the previous handin system was consulted (he politely demanded) that several additional features required by a number of upper level courses be included.

Vincent2 died after the summer two session in 2000. It was coaxed through one last iteration, while Vincent3 was authored during the summer.

Birth #3 -> December 2000

Vincent3 was completed a few days before Matt left to be wed. The summer was stressful, but a fairly well documented codebase resulted from the effort. Vincent3 is, in essence, an API; 85% of the code is central to all installations in the department; one change in this code effects all installations immediately. The remaining 15% are the CGI scripts themselves, which are "pushed" out to the classes using Vincent. No code is unique or custom to any single class.

Vincent3 ran 12+ classes in the CS department, with over 1500 students beating on Vincent on a regular basis.


Last update: 1/6/01; 9:32:29 AM