- AV Catalog
- Field Reports
- For Developers
- OpenDSA Project
- Getting Started
- Newsletter #1
Server for tracking student progress
10 May 2012 - 6:12pm
A major feature in the OpenDSA eTextbook vision is assessment exercises as an integral part of the student experience with the eTextbook. Thus, a major component of the eTextbook infrastructure must be some sort of mechanism for tracking student performance. Ideally, an instructor can monitor how students are progressing with assigned modules and exercises within the modules.
Khan Academy has wondeful infrastructure for this purpose. You can get a good idea for how this works by watching the video at: http://www.youtube.com/watch?feature=player_embedded&v=DLt6mMQH1OY
Or better, just go to http://www.khanacademy.org/, register, play with some exercises under "Practice", and then click on your login name at the top to look at your own progress information.
It would be natural for us to adopt the KA infrastructure for our own use. In fact, we have started experimenting with doing this, thanks to another student project done for my class this semster. You can see our demonstration server at: http://algoviz-beta.cc.vt.edu:8090/. You will see that we have modiﬁed the KA "skin" to reﬂect the OpenDSA project. And the exercises, while mostly the KA exercises, includes a couple of our own DSA exercises. You can log yourself in, try them out, and check your progress.
Unfortunately, there appear to be some serious problem with this. Since this server is implemented using Google App Engine, it looks like we need to upload our instance to the Google Cloud. One can test the server software locally on a python-based test harness (which is what we are doing at the URL above). But that is slow and unstable. It was not meant to be run that way. On any sort of production scale, running this server in the Google Cloud will require payment to run this. Second, since the data won’t be on our campus server, we will have to resolve student data privacy issues.
We are looking for some alternatives. We do not want to invest a lot in creating infrastructure of this nature if we can avoid it. One option that we have started looking into is to run the server using an alternative to GAE. In particular, the AppSpace project seeks to provide an alternate implementation that supports the GAE APIs. See:
Any ideas on this matter would be appreciated!
11 May 2012 - 6:11am#1
Re: Server for tracking student progress
I hadn’t realized KA has so much tracking and reporting functionality. Re-implementing all that in our own infrastructure does not sound like a sensible plan. Porting the KA backend to AppScale option does sound better than using the AppEngine version. However, installing and deploying one’s own instance of AppScale does look rather laborious.
As another option, we do have one Master’s thesis project where a platform for managing assignments and tracking student achievements is implemented. The main point in it is to be service oriented where different types of assignments (AVs, programming assignments) can be fetched from and graded by different service. Also, it has an API for accessing the data, so features like monitoring student progress can be implemented as separate web applications without modifying the platform itself. The thesis will be ﬁnalized by the end of this month and I can share more details then, if people are interested. In my opinion, it could be a potential backend for OpenDSA as well, although it is still lacking a lot of the functionality in KA.
Whichever backend is used, my main concern is to keep the actual content (AVs, KA questions, etc) independent of the backend. That is, it should be possible to change some simple conﬁguration to get the content submit student results to other backends that understand the same "protocol" for point submissions.
11 May 2012 - 9:00am#2
Re: Server for tracking student progress
I agree, and I think that is the spirit of how the KA exercises work now. As you do exercises, they report to the server through an API. One can just not have that on if one wants (as with our exercises currently). I think there is no reason why the destination service can’t be altered. Agreeing on an API might be difﬁcult, though! Unless all of the service providers are communicating, which seems unlikely unless they were all part of our group. In which case, why would we implement multiple services?
I think that we are going to explore the AppScale approach ﬁrst. Will report back when we get more information.