Home  |  Requirements  |  Data  |  Interface  |  Lessons  |  History

Vincent 4.0: A Brief History of Vincent

The Department of Computer Science at Indiana University offers a number of courses for non-majors, the largest of which is entitled ``A110: Introduction to Computing.'' This applications course enrolls approximately 2000 students per annum, and employs forty to fifty teaching assistants during the same period of time.

A110 was managed using a product called FirstClass. This provided communication and collaboration features for students. The university phased this software out in light of other options (OnCourse, the in-house ASP-based course management tool) which did not provide the same functionality. Previous A110 administrators (as well as the current administrator at the time) had failed to either present a case against the transition in a professional way or prepare for the transition. Faced with the prospect of having 120 students submitting assignments via floppy, I wrote the first version of Vincent in three weeks before the start of the Fall 1999 term. At this point, I had two things working against me:

  • I had never written a web-based application before, and
  • I had never written anything in Perl.

The first version of Vincent was not called ``Vincent;'' it was called ``The A110 Script.'' I spent countless hours modifying and updating this script, which grew to a few thousand lines of code before the end of the semester. It was fraught with problems, most of which stemmed from the fact that all metadata about every file was stored in the filename. Inexcusable as this may seem, please recall I was a physicist in a former life, not a computer scientist. Although I knew about data structures, there is a difference between knowing things and doing things. Interestingly, this distinction is now the ultimate distillation of my doctoral thesis.

The first version of this software was thrown out, and the core of a new version was written over the winter break between Fall 1999 and Spring 2000. This version was ``good'' because it used a common format for all data on-disk: hash tables. In terms of data structures, there was a structure representing students, a structure representing the course, and a structure representing assignments. Data was replicated everywhere, and things like permissions were handled in a hackish manner at best. The system was more robust, but this is like saying that heroin is more addictive than cocaine; before the semester came to an end, I had begun ``designing'' the third version of Vincent.

I wrote about the kinds of data I'd need to represent, the kinds of processes I expected users to go through, and did my best to plan out as much of the software as possible in advance. This was not what you would call a ``design document'' in the strictest sense, but it was a start. I also developed feature-lists and other documents that I circulated to the major users of Vincent (the course administrators for A110, C211, C212, and the systems staff). Late in the spring semester of 2000, I presented screen mock-ups to the involved parties illustrating likely interfaces, and made changes based on their feedback. Their input also helped shape some of the design of the underlying system as I realized how they wanted to be able to use Vincent in their own courses.

Vincent ``three'' was written during the summer of 2000. This was the summer I attended a summer workshop on the TeachScheme! methodology at Rice University, and when I first learned to program in Scheme. Using their design-by-contract methodology, I rewrote any code I had written previously with a standard template for all functions, including a religiously adhered-to commenting style. While this was not PerlDoc, I was able to write programs to build dependency graphs of my code based entirely on the comments, so I could see the tower of functions that any one function depended on. This was very useful in debugging Vincent early on.

Despite the stress and excitement of being married during Summer 2000, Vincent was completed on time and used during the Fall 2000 semester. This was also the same time as a very sudden transition between A110 course administrators. Vincent performed admirably, despite the fact that some new features were brought online that had not been thoroughly tested.*

*``Performed admirably'' is adminispeak for ``we were scared as poop over a number of things, and an emergency all-nigher was necessary at one point.''


Content by Matt Jadud, mjadud at cs dot indiana dot edu