"There are only 10 types of people in the world; those who understand binary, and those who don't."

Question Base

One of the first major programming projects I ever undertook was a little revision tool called Question Base. This began development (using Visual Basic 6) around the time of my GCSE exams, and as I quite enjoyed it, I continued developing it through my time in the sixth-form. Although I haven't done anything more to it in the last few years, the resulting application is pretty good at what it does.

Let me tell you a little about what Question Base does. As you've probably gathered, it's a questions editor and tester. That is to say, you can design your own tests using the in-built editor, and then test yourself or other people with them. It has support for introducing variables into a question, so that numeric questions are able to change every time you ask them. The answers to such questions can contain expressions that are evaluated on the basis of the variables in the question.

A heart-rending tale...

Now, before you read any further, I have a little story to tell you. Once upon a time, there was a programmer who backed up all his data files regularly. One day, this happy little programmer decided that one module in his program was a bit big, so he would move some of the code into a new module. And so he did, and he continued to program. Now, a number of months later, he decided to spring clean his operating system drive, and reinstall it. But then disaster struck! When he tried to access his program again, he found that the new module that he'd created several months ago wasn't there. He had saved it on his operating system drive by mistake! Stricken with grief, this poor programmer searched through his backups, but to no avail. The most recent version he had was from before the module was partitioned - several months ago.

This (true) story does in fact lead somewhere. Firstly, of course, there is the moral that you should always back up absolutely everything, just in case. The most annoying issue, however, is that I only found out after this event that there was a bug in Question Base under Windows NT. This relates to the fact that Win9x and WinNT store strings in the registry differently - one uses null terminated strings and one doesn't. Although this bug is easy to fix, I'm missing a lot of the other code (which I don't have time to re-write), so I can't recompile the program. So the situation, sadly, is that it runs under Windows 9x, but not NT (that includes Windows 2000 and Windows XP). One day, I may get round to rewriting the whole thing properly, but I really can't promise anything.

Download Question Base

You can download Question Base here:

Question files

I've got a few sample question files that you might want to take a look at. These are all zipped, so you'll need a program such as WinZip to look at them:

Revision history

2.0.0 - The new "dynamic questions" allow you to include variables and expressions, so the question will be different every time! You can select the number of questions in each test, and set a time limit. The login system enables multiple users - each with a separate file for recording the results of tests. These are displayed as charts, to illustrate progress over time. An Administration user can also be set up to increase security, if needed.

1.2.1 - I fixed a bug from version 1.2.00, whereby if the random item was selected when opening a new question file, the new question file was not correctly loaded. I have also added progress bars to the editor and main menu forms, to show what point through the questions you are at.

1.2.0 - I have added support for asking questions in a random order (this is optional, and a sequential order can still be used).

1.1.0 - I have now updated the question formats so that you can have either two or three answers in multiple choice questions, as well as the previous four answers. This allows greater flexibility, and also true/false style questions.

1.0.2 - I have added support for images within questions. The main window is also bigger to allow for this, enabling longer questions and longer multiple choice answers.

1.0.1 - The underlying code has been completely re-written, allowing a more flexible file format, an easier navigation procedure when editing files, and the ability for me to 'easily' update the program and add new features.

1.0.0 - This was the first version that I wrote during my GCSE exam revision. It was not made available online, and the algorithms weren't particularly 'inspiring' (the code was over-complicated and not easy to modify or update).