Skip to main content

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:

  1. 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
  1. 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

  1. An Algorithm for Question Paper Template Generation in Question Paper Generation System

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)

Source distribution for qpt-generator 0.1.7
File Size Uploaded
qpt_generator-0.1.7.tar.gz 40.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for qpt-generator 0.1.7
File
qpt_generator-0.1.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.12+ x86-64 Details
qpt_generator-0.1.7-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
qpt_generator-0.1.7-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.12+ x86-64 Details
qpt_generator-0.1.7-cp38-cp38-macosx_10_14_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.14+ x86-64 Details
qpt_generator-0.1.7-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
qpt_generator-0.1.7-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 Details
qpt_generator-0.1.7-cp37-cp37m-macosx_10_14_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64 Details
qpt_generator-0.1.7-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
qpt_generator-0.1.7-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 Details
qpt_generator-0.1.7-cp36-cp36m-macosx_10_14_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.14+ x86-64 Details

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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page