Prince99:
I've been working on an online testing system for several years for use with distance education courses at the University of North Texas. I am in the process of rewriting the system to become a full fledged academic content management system. The system is part of a research project looking at ways to do distance education more effectively. I can't post any code publicly or distribute my application until our initial research has been published, however I can give you a few points of advice and a shopping list of modules to get you started.
Initial Considerations
- The first bit of advice I can give you is that this project is much bigger than it seems on the surface. You might want to consider some of the academic content management systems currently on the market such as WebCT, Mallard from the University of Illinois, or QuestionMark. We use WebCT extensively at the University of North Texas and its worked quite well for us. The cost of a license for one of these projects may end up being much less than the cost of developing and maintaining your own home rolled solution.
- The stateless nature of the http protocol and the lack of control you (as the developer) has over the users environment makes the web fairly inappropriate for doing this kind of work. Consider using something like Macromedia Authorware or Director for the project. For one course we've done, we wrote the instructional portion of the course in Authorware, stored the student's data in a MySQL database, connected to the database via ODBC, and wrote a perl/cgi application for the instructors to view and analyze the students' data. Another approach we've used in a research setting, but haven't tried in a live couse yet is to wrap Internet Explorer into a Visual Basic application and use VB to keep track of state and to control the flow of the program. I'm sure this approach could work with Mozilla or Konquerer if you don't like dealing with MS products or need a platform other than Win32.
- Read and consider the last two points again.
- If you are still compelled to write your own, keep your content, logic, and presentation as separate as possible. The prototype of my testing system was writen in ASP, VBScript, IIS, and MS Access. I rewrote the application using PHP, MySQL, Apache, and Linux due to some stability issues with NT, scalability issues with MS Access and some very strange cookie bugs (remember the state issue?) at some level of the application that we were never able to resolve. Moving to PHP took care of quite a few of our problems, but left us with one fatal problem. PHP (and ASP) encourage you to mix your code with HTML. This makes it very difficult to add new features to the system, makes it nearly impossible to add new developers to the project, and will make your eyes hurt if I have to look at the code for more than a few minutes. The moral here is to keep your content, code, and presentation separated.
- Consider using XML for the test questions. You are planning on several different question types. If you use XML you don't need to come up with a database schema for each type of question in the question bank.
Coyote's shopping list for a web based testing system
Good luck on your project.
Update:Fixed some typos and awkward language.
----
Coyote