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:
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.1.post1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2407e3ee56b0a9a0aa857d10572e4a2a62fca7c869ef9c175cf1a8f6672ad445 |
|
MD5 | fd11354474aa4e4d5327187f4ef6a38d |
|
BLAKE2b-256 | 5e921f2704f92dc603b427fcd1aba7d2d31bbca0d7d4c9ec34126d7c178e31e4 |
Hashes for qpt_generator-0.1.1.post1-py3.7-win-amd64.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2058c282ff9fff76e9b8a16c148479e414e9f63519639a258107103c98d5527f |
|
MD5 | 6ffcbbf1e9ecf7fe446ca9e3d0a1ca42 |
|
BLAKE2b-256 | 31a32e2e2ca6c27d131c27f4233b908b6e3b91ba0c1fe7f433ef85f5c1df0b57 |
Hashes for qpt_generator-0.1.1.post1-py3.7-linux-x86_64.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23d53f24704a6ca2163ed4ede3591b6872f79a0c6ed7a8aaf2e20ea36e33462b |
|
MD5 | 56691b70256f5dd690e9cfaffda159b9 |
|
BLAKE2b-256 | b8b56c45f3dc1a50b306ab86fbb8b9dda14e40e329b0ed7514ca7dfc5ceb4369 |
Hashes for qpt_generator-0.1.1.post1-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81e66664247607cd967a65e509242b704fdeed5d0ce13d2951f2f5a6909bb356 |
|
MD5 | 71cea53822fe117d4e8b59c8fbd3d730 |
|
BLAKE2b-256 | b1f1225e9cd8430a5178a17bab03bb2bb310fa6c844ecfb9c5b46de40037b2c7 |
Hashes for qpt_generator-0.1.1.post1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7405544451d2e7ae0e5eed5d92e411cfedd1316775cca3d4ea0a9f3b8c01b40c |
|
MD5 | 0c5d334c3a52e1eab545e082380a6437 |
|
BLAKE2b-256 | 6c250954b92e8ce385bff7829d8d1a762cbb261bfbd383ecd8596a6908d7f8c3 |
Hashes for qpt_generator-0.1.1.post1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a64c565b986021389611b5ccebbeffdb71291a0172ac2b7236e37cd6901c0b9 |
|
MD5 | c180d895e3b11b84b8be8e2c39ecbd3f |
|
BLAKE2b-256 | 4226325f34a8b138006230b81301d8b4c39a110669cfef509938a254e59cbb1b |
Hashes for qpt_generator-0.1.1.post1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a3345ea1ba3d622e145e7b8339f81f640891b1a4a8aae3c758d293627aa486f |
|
MD5 | 19470bcf2d33f2215ee2e8310edea44e |
|
BLAKE2b-256 | f1e87cab4aa9a2ab83171c17d62c0be70d3245108b5e7e99e94282d014ab56a1 |
Hashes for qpt_generator-0.1.1.post1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b711d7a70e494b28fb50f1d1a5ce8eda3a9191141ed97d74457a829f182641df |
|
MD5 | 52ed93faa8573019d89d22262ad1c1c2 |
|
BLAKE2b-256 | e4a68c64911e255ec0d0318081618983845be7a5f31c2e79b9e6b3bbe10c4988 |
Hashes for qpt_generator-0.1.1.post1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4ce110b848dedb89e34cb7b7224b1518399d8013124491326a74189743480a7 |
|
MD5 | b7aef52522e2e083fcbba6c1ae3db115 |
|
BLAKE2b-256 | 11894b40a25ab27542e5f7f67a100b332d6c5b01d3f4aea455c9c8a49685395f |
Hashes for qpt_generator-0.1.1.post1-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fda4e0ee1d90d2236ac63edb003884b2a09572eb8911decdd2049b2bc29556ff |
|
MD5 | 985402231ba23158837a9a4e12bd1572 |
|
BLAKE2b-256 | 0aa49ae4127c45f1588bcff4b2e65298f8b55f7ae31ff0fe6339dfa45c7d7aca |
Hashes for qpt_generator-0.1.1.post1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cea1aaf2c73100930ce6713cf1f9dae37bb8c2bc29298e022da8b90c6807c98e |
|
MD5 | 6c1ef59aa56a5bf0c261288d65e733ea |
|
BLAKE2b-256 | 53e964a95cfeeb546160d0c724f8f65fdaba9db5353eb509078af1ef16a381fd |
Hashes for qpt_generator-0.1.1.post1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 417e2f11de94eb097382e2cb9efd0af81d8b91bd5ad8cb71b16da2406428a902 |
|
MD5 | 78a3d5f8a1aeefb3b630b63e9d24929d |
|
BLAKE2b-256 | 9cace44939de7aac66cf8a38d554c7c260fd50b21ace75bb11bf048933e722d2 |
Hashes for qpt_generator-0.1.1.post1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf7180e95c895c044102097008af0d3d8bda34a32ba4ccb4c29ae5ec45b50823 |
|
MD5 | 899cfcea62ef18c1e727f33b1d6371bd |
|
BLAKE2b-256 | fca88ba5baf0c54e0e6a0a1a38fa6f8ff8094c173065510605a7e4d3c4c2d998 |
Hashes for qpt_generator-0.1.1.post1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a04d4c91e2a886f410b632a0fe0825179dbf95d0e44fcb941f693f3904ecdf0 |
|
MD5 | 52f5be83cfa8d983ee2932dbecac9611 |
|
BLAKE2b-256 | d2a288ac16dca17bb05326b96435f17ab9aa5cda64151c5de7519d21d4c65225 |
Hashes for qpt_generator-0.1.1.post1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5f5e0ea35fb29e49294bcd6c631ba8aab139d19390f54de204519893bb8749b |
|
MD5 | a3f1942082d8428fc90425c3a350c1c8 |
|
BLAKE2b-256 | cde7f595e82faf6690fe81fc093265f2bbc9e55a6b9885108c0191f4cca74c8b |