The Karma Project: Code Less, Teach More

September 3, 2009

How Would You Store a Student’s Entire School History?

Filed under: News — bryanwb @ 2:35 pm

With laptops in the classroom and the prospect of digital interactive content, students will amass a lot of artifacts. Students will want to keep a number of these artifacts for themselves, such as essays, poems, and assorted projects. A lot of information will be useful to teachers and learning specialists. This history of quizzes, tests, and essays could illuminate if a child has never mastered certain basic concepts that inhibit them from normal progression and help specialists more quickly diagnose learning disabilities.

But storing, accessing, and tracking this information across different grades, subjects, and even school systems presents a major challenge. One key aspect of these different artifacts is that we can’t predict what form or schema they will conform to. We can set a file size limit on individual files but we can’t any more constraints. Content creators will come up w/ myriad of ever-evolving data formats.

With complex problems like this it can be tempting to come up with an equally complex solution. I think a workable solution would have a very simple core and push the system’s complexity out to its logical edges. In this case, the logical “edge” is the artifact itself. On first glance, this problem seems to scream for XML. Well, the problem does seem to lend itself to using XML but I am not a huge fan of using XML to describe data. XML is powerful, descriptive, very verbose, and often just too complex for developers to use. If the average developer cannot get his head around the “ideal” technology, well then it is no longer ideal or even realistic. I sometimes fall into the trap of thinking that a particular new technology is the answer to every problem. For better or worse, I think JSON is the easiest data format to use and perhaps JSON-Schema could be used to describe that data. Every digital artifact such as homework assignments, quizzes, and projects could contain a single url referencing the json-schema that describes that data.

It isn’t just the data format that matters but the architecture of the data storage. What I have in mind is essentially a big key:value database. I don’t see a relational database meeting this need. Bear in mind I am no data storage expert. But a repository storing all this stuff would be huge. The dataset would have to be easily partiitioned and distributed. I thinking that a relational database wouldn’t be very useful because the data wouldn’t be very structured. Besides a couple of unique identifiers such as the students ID number, there wouldn’t be any inherent structure to the data. We could assume that every homework assignment, project, document will be different.

Could couchdb or mongodb meet this need? Or a non-relational data store like like Google’s BigTable.

What this data store shouldn’t do is try to impose a lot of mandatory fields and connections to keep order of this data. I have already been involved in one repository project that became so complicated that it became completely unusable. The simplistic way of how assignments could be correlate is with “tagging.” But tagging really boils down using semantic technologies like RDF (oh no XML!) to build connections between elements. RDF is hard but not so hard if rdf connections are added incrementally. I have reading O’Reilly’s “Programming the Semantic Web” so I know enough about RDF triples to be dangerous.

I am not quite sure how these student repositiories will take shape but I do believe that this presents a great business opportunity for companies like google that excel at aggregating, storing data and providing access to it w/ consistent API’s. Putting this data together and managing it will be a job for the cloud. It will be too big a job for individual school districts.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at

%d bloggers like this: