Table of Contents
QBank is a web application that assists Problem Authoring and Publishing. The user interface is intuitive and easy to understand. This document will give you a feel of the overall functionality of QBank tool and how to contribute to extending the code base.
Main Features Of QBank
Easy interfaces for Problem authoring based on the main Problem types:
- Static question – Multiple Choice Question
- Dynamic question – Parameterised Question
- Summative question – Multi-Part Question
- Tool Specific question – Khan Academy Exercise Question
Problem publishing - Parsing options to convert authored questions to different formats
- Comma Separated Format - csv
- Khan Academy Exercise Format
QBank is extremely flexible and extensible
- All display items are driven by templates using the powerful Django templating language
- All urls can be custom configured to your desired naming convention
- The formats that the questions can be parsed into can be extended to support specific needs of various publishing tool.
- Front ends specific to a Tool can also be easily extended from the existing(Khan Academy) interface.
Standardised Authoring Interfaces based on the Formal Problem Definition for different Problem Types.
QBank is developed on the Django framework, therefore you do need a fully functioning Django instance The Django installation guide will step you through the process.
Please use Django 1.5.x at this time.
QBank requires Python 2.6.5 or later and a database supported by Django.
The basic QBank directory structure looks as follows
. `-- QBank |-- manage.py |-- settings.py |-- urls.py `-- templates `-- qtool |-- admin.py |-- models.py |-- forms.py |-- urls.py |-- views.py |-- tests.py `media `Exercises
- The templates directory contains all the HTML files for the tool.
- The Exercises directory in the media folder holds the generated exercises in the Khan Academy Exercise format that can be used as-is fully compatible to Khan Academy.
Run qtool app
Start it with ”./manage.py runserver” and browse to http://localhost:8000/qtool/
Check out the latest version of QBank into /home/user/src/:
git clone https://github.com/annp89/QBank.git
This copies all the files in the QBank directory into src folder.
Install QBank onto your system:
cd /home/user/src/qtool/ sudo python setup.py install
An alternative to running the install is ensuring that /path/to/QBank/qtool is on your python path. This can be done by modifying the PATH variable to point to the correct file location.
Once the above step in completed, a local database can be created for your copy:
cd /home/user/src/qtool/ sudo python manage.py syncdb
After having cloned the QBank repository, you have to make some changes in the settings.py file to work on your local machine.
- Ensure that DJANGO_SETTINGS_MODULE environment variable is set to <project_name>.settings; e.g. QBank.settings
TEMPLATE_DIRS should point to a relative location where the templates folder is located.TEMPLATE_DIRS = ("/<project_name>/templates",)
Django serves the static files in the above location since the url is specified with that particular regular expression.
In the views.py, the parsing of the content entered in the Frontend Interface into another format is done in the ka_gen function. This function essentially takes all the content fed into the Front end and parses it with the additional information that converts it into a particular format.
- For instance, to write exercises in the Khan Academy exercise format, the content has to be converted into an html page. All the appropriate header files, scripts, css` and images have to be correctly linked to the question based on the options selected and the type of question being authored.
The ka_gen class parses the content and writes a file which is stored in the media folder. This allows the author to simply take the parsed file and plug it into the desired tool.
QBank - Problem Authoring Tool, was developed by Ann Paul, Masters student, Department of Computer Science, Virginia Polytechnic and State University.
This project was done under the supervision and able guidance of Dr. Cliff Shaffer, Professor, Department of Computer Science, Virginia Tech.