Question Paper Template Generator
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for qpt_generator-0.1.3.post2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ccc421b08d7e7383c63e2e6c51c36def152575f82993b3b53f0fa0df7fb208a |
|
MD5 | af94308099606eed31a0d59f93d4e188 |
|
BLAKE2b-256 | 57dcaf18897d7d475c2ddb0d722b34d17626b14240cbed95e9f7f0b8c9a0476d |
Hashes for qpt_generator-0.1.3.post2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e47dff181d2c54e40d5ab17f2bc9cf33a6bda32392c10ede91c641323dc70fc |
|
MD5 | 88695143b6c41f5061cc9eaea71c42a5 |
|
BLAKE2b-256 | 6f500ba2c549cf7814b7f85eaa3e7031f5804d9ba442e3d662a8e17f0d07c82c |
Hashes for qpt_generator-0.1.3.post2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba5400b8d46a822429a95f26f4524de1fe53fbbb102360953ea82253a68ac0f9 |
|
MD5 | 9d1af5f221ac004a428e01369d2c9055 |
|
BLAKE2b-256 | fa0a5b0362e7721a176b753f5f1b61a3251d816388ec25285634ae737d017794 |
Hashes for qpt_generator-0.1.3.post2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 582a9cf15e1545159e87bd2f27423f581f4624fc0752ca9d4be4f9c51e1430b2 |
|
MD5 | db12315a9ea8f370accf2cee67a2350d |
|
BLAKE2b-256 | 72ac5b20f15a12d6f13208367361780cc4bcd6a963aaf3aaa6111263a3ec6660 |
Hashes for qpt_generator-0.1.3.post2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 199585006aea4bee10833c1774c397f40acf2d1d7c89303bd74084dc443d4f0a |
|
MD5 | e4d472c8aeb35f7bff92b2c6aec2bc5e |
|
BLAKE2b-256 | 06c7c865c7f6ba192cdda43f40170845235f71c331cf12123d5c3b527a20c824 |
Hashes for qpt_generator-0.1.3.post2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09c96ff0cff3c721f54bf570476a018e374cc008d4d7fe9bd27337ef5d77f99b |
|
MD5 | afd2712fea180ab530d0feb309ae9825 |
|
BLAKE2b-256 | 0b8288d1f87b5cc41553453200f417fa5dcea16ebc15088995d112394314d6ef |
Hashes for qpt_generator-0.1.3.post2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 215180bb882e66cd3c1489b34f8dd414e1a0cc8d530e30c4f24f8ddd07364d8e |
|
MD5 | 5b0238ed040d5618fb68cd2640b81663 |
|
BLAKE2b-256 | 006a1ebd94f8484c802a0ecd963e17f78f03baf38421721f3e437be070a99d4e |
Hashes for qpt_generator-0.1.3.post2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 801ffba40c2504e2e61d5fb8e21cb7c6e1fe7465c402584d54b1d04572a8a70f |
|
MD5 | e6f3aa957f932ca428fbd1525a059200 |
|
BLAKE2b-256 | ba91ce7a8d111c7ee9986b3e56c0cdec929f527af3f55a93ae2c55b8d88a726b |
Hashes for qpt_generator-0.1.3.post2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9d3fae2d0a17d1e9ca755834469c40a2f56687e96d2cec477f0ba4055b31c3b |
|
MD5 | 90edbfb65201b34bd944904dcb5f4720 |
|
BLAKE2b-256 | 585edd155113260d3608243947cae1526c6f8eaa5516a98dba93fd18440a316f |