qpt_generator
An implementation of Question Paper Template Generation Algorithm written in C++ to provide high performance. It uses Cython internally to create python package.
Introduction
Generation of question papers through a question bank is an important activity in learning management systems and educational institutions. The quality of question paper is based on various design constraints such as whether a question paper assesses different problem solving skills as per Bloom's taxonomy, whether it covers all units from the syllabus of a course and whether it covers various difficulty levels.
I have implemented algorithm written by Vaibhav M. Kale and Arvind W. Kiwelekar for question paper template generation in C++ to provide fast performance. Implementation is extensible in terms of constriant it support to create question paper template.
The qpt_generator package was motivated by the needs of my academic project Question Paper Generator.
Installation
You can install qpt_generator using easy_install with following command:
pip install qpt-generator
or
easy_install qpt-generator
Usage
After installing module, you can import it using following command:
from qpt_generator import QPTGenerator
You have to provide two inputs to the constructor of QPTGenerator:
- A dictionary of constraints and lists of distribution of mark
Ex: if you want to generate paper with 4 constraint:
- Unit-wise distribution of marks
- Difficulty level-wise distribution of marks
- Cognitive level-wise distribution of marks
- Question-wise distribution of marks
- A list of question no. associated with list of question-wise mark distributions. Repitition of same question no. indicates subquestions of that question.
Output will be generated when you call generate method of the QPTGenerator class. Here, output is a dictionary of list of the alloted unit, cognitive level, difficulty and mark by question no.
from qpt_generator import QPTGenerator
mark_distributions = {
"question": [5, 5, 10, 4, 6, 5, 5],
"unit": [8, 8, 8, 5, 11],
"difficulty": [13, 15, 12],
"cognitive": [12, 18, 10],
}
question_no = [1, 1, 2, 3, 3, 4, 4]
qpt = QPTGenerator(mark_distributions, question_no)
output = qpt.generate()
# output = {'cognitive': [2, 3, 2, 3, 3, 1, 3, 1, 1, 2],
# 'difficulty': [3, 1, 2, 2, 1, 3, 3, 1, 2, 3],
# 'question': [5, 5, 8, 2, 2, 1, 1, 6, 5, 5],
# 'question_no': [1, 1, 2, 2, 3, 3, 3, 3, 4, 4],
# 'unit': [4, 5, 1, 3, 2, 2, 3, 5, 2, 3]}
To satisfy all given constraints: question 1 should have 2 subquestions:
- first question should have cognitive_level = 2, difficulty = 3, unit no.= 4 and mark = 5
- second question should have cognitive_level = 3, difficulty = 1, unit no.= 5 and mark = 5
You can randomly select this kind of questions from your question bank database if it exists.
References
Metadata
Release files for qpt-generator 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qpt_generator-0.1.7.tar.gz | 40.5 kB | Details |
Built distributions (wheels)
Total release size: 1.8 MB
Release files / qpt_generator-0.1.7.tar.gz
| Download URL | qpt_generator-0.1.7.tar.gz |
|---|---|
| Size | 40.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a8eb6df56dd77fed7fb3205d8afea862b33033e267fe28fa32e2b3fd1896bb0f
|
|
BLAKE2b-256 checksum How to use checksums |
c0381fbb5213305467fdb47108d9401120feb81c0cec6108eaf945e51d8d3a88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.9
|
Release files / qpt_generator-0.1.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl |
|---|---|
| Size | 337.1 kB |
| Tags | CPython 3.9 Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ff1db9d2f24d7e797a58dadc7b646bfd379f7b5b834985652f78246f3dfffbe0
|
|
BLAKE2b-256 checksum How to use checksums |
1ad4fa18358c5ee13102712d737d65a27dd60d4475fbfb7311ac0a7c49631d84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12
|
Release files / qpt_generator-0.1.7-cp38-cp38-win_amd64.whl
| Download URL | qpt_generator-0.1.7-cp38-cp38-win_amd64.whl |
|---|---|
| Size | 76.0 kB |
| Tags | CPython 3.8 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7bb79aeb2b5b1147322a3d8bb4269e75fb30d2b8a521ad94939197789a85bfc4
|
|
BLAKE2b-256 checksum How to use checksums |
62ffd945fe6ddeaca02a6f26603be11f3f5f6b8d94a7aaebd3369c5b97c8a236
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.10
|
Release files / qpt_generator-0.1.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl |
|---|---|
| Size | 336.6 kB |
| Tags | CPython 3.8 Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
3838ef7056d2d02cb2ba8975ccf2d909db10b96d3e34e1c1b1bb2b63bac92ee7
|
|
BLAKE2b-256 checksum How to use checksums |
015597a9cdb9676a2ddeacb706b9353d838c08d814e7796cab5886c19536a6e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12
|
Release files / qpt_generator-0.1.7-cp38-cp38-macosx_10_14_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp38-cp38-macosx_10_14_x86_64.whl |
|---|---|
| Size | 71.0 kB |
| Tags | CPython 3.8 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
ccc81f620d5994a0b0e787d20a6bb8e1cddba67e3ce8eaf50a608aafd6fcb592
|
|
BLAKE2b-256 checksum How to use checksums |
09d5996af4c0194badebf70904d15794f35aea605d957a460b9ce796da6f92f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.11
|
Release files / qpt_generator-0.1.7-cp37-cp37m-win_amd64.whl
| Download URL | qpt_generator-0.1.7-cp37-cp37m-win_amd64.whl |
|---|---|
| Size | 75.6 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Windows x86-64 |
|
SHA-256 checksum How to use checksums |
71e02dd10ad1c6b0236fb714f8ea1e5d0a3726c1edcdd8e47955952e61959159
|
|
BLAKE2b-256 checksum How to use checksums |
81d4ac5947c58047851c29a073d7e0c56ec7b381fc009914c5232e72fc02e726
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.9
|
Release files / qpt_generator-0.1.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl |
|---|---|
| Size | 334.2 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
4566490173114eedf6ed93308f00d14e69e9bfa319cdea71e4d2bdd3c5ba0ab2
|
|
BLAKE2b-256 checksum How to use checksums |
d743223f8651f7547a5da3c10685ac807ca57b0befc0364be9647a2e81f041be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12
|
Release files / qpt_generator-0.1.7-cp37-cp37m-macosx_10_14_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp37-cp37m-macosx_10_14_x86_64.whl |
|---|---|
| Size | 71.0 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
768dcd3b71fb54c1b69ce2591c177927c0ae2769eaa7d7e3c8149691f42b6931
|
|
BLAKE2b-256 checksum How to use checksums |
74fc78653ffe61609505197b993c77fd5ebdd6c9539a14190556fb0bb4460d09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.11
|
Release files / qpt_generator-0.1.7-cp36-cp36m-win_amd64.whl
| Download URL | qpt_generator-0.1.7-cp36-cp36m-win_amd64.whl |
|---|---|
| Size | 75.8 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Windows x86-64 |
|
SHA-256 checksum How to use checksums |
bac7e4d6634a6d12769a9e0119e6859c4f8c487143da783ee8155fddea790db9
|
|
BLAKE2b-256 checksum How to use checksums |
32f657e6fd554cefe9511ff28a9022eb86af8c18ed02e42bdbbbd60b0680c1f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.8
|
Release files / qpt_generator-0.1.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl |
|---|---|
| Size | 333.9 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a2cc126076aa9b3d67cea1bb7e3250eeceb5b2c81d89d395b0a71ba8b6b6771b
|
|
BLAKE2b-256 checksum How to use checksums |
3bb21a0b9c44caa95d67816facd0406979bc1fd043db848c8af59363451c5561
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12
|
Release files / qpt_generator-0.1.7-cp36-cp36m-macosx_10_14_x86_64.whl
| Download URL | qpt_generator-0.1.7-cp36-cp36m-macosx_10_14_x86_64.whl |
|---|---|
| Size | 71.1 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
0957b5418e33cf04bf8512a0d93ab6f427d1f82a24f6d86fb0bfaf7ef7c8556d
|
|
BLAKE2b-256 checksum How to use checksums |
342cd1e0ce5c3178aef7489c4f11ffb399d837de37da98c77d04d6ed7ed4f498
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.6.14
|