OpenQPS generates Question Papers by selecting questions from a collection of questions, according to several pre-defined question papaer models. It implements a simple but highly scalable method. You could generate a question paper for a single course from a collection of questions stored in an Excel file from a postgres RDBMS storing thousands of such Courses. The questions are stored as text (with embedded LaTex commands for equations, images etc.). Some of the features of the system are:
Capable of handling large number of courses.
Renders mathematical equations properly (uses LaTex).
Support for multiple languages. English, Hindi, Sanskrit, Malayalam, Tamil, Kannada, Arabic and Urdu are currently implemented.
Click Here to generate dummy Question Papers
Most of the functionality is available by running the Python program openqps.py, that depends on several Python Modules like pandas, PyQt5 etc.(A working LaTex installation also is required) It is easier to install the software from the Debian package openqps-2.0.0.deb. It works smoothly on GNU/Linux systems like Debian, Ubuntu, Linux Mint etc.(Should work on MSWindows, in my personal view that attempt would be a masochistic idea).
There are different types of questions and they belong to different Modules of the course. Every question will have attributes like module number, unit number, question type, mark, level etc. (these are decided by the prevailing methods used by the Universities/Colleges in Kerala)
There are three types of questions;
The questions are prepared in an Excel file, as shown below: Download s Sample Excel file and the corresponding Info file.
Every Course has a course code, like Y2024_PHY2CJ101. The corresponding data file will be named as Y2024_PHY2CJ101.xlsx. Also there is a companion text file Y2024_PHY2CJ101.info, that will look like:
PHYSICAL CHEMISTRY I STATES OF MATTER # name YU70 # QP model 4:20:14:23:13 # number of Modules and mark distribution FYUG # degree english # typesetting language Second # Semester 1 to 8 2 # exam duration in hours PHY2MN102 # altenate code, optional PHY2VN102 # altenate code, optional
A screenshot of the program is shown below:
It is possible to load an Excel file containing the questions to generate a question paper (any related image file (.png or .jpg) must be kept in the same directory. If an RDBMS server is available the course can be uploaded to it, so that question papers can be generated from the RDBMS.
New Courses can be created from an Excel file containing the required information. Test Courses on scischool.in are created from this file. To create new courses Administrator privilages are required.
A GUI program is also provided for Creating/Editing/Deleting Courses. The following details need to be provided while creating a new course.
To view a screenshot of the GUI Click Here.
A GUI program is available for generating the question papers. The following details, to appear on the generated question paper are added:
The backbone of the system is a Postgres RDBMS. A table named coursedetails stores the information about all the available courses. Each record of this table represents a course. Each Course has a Table to store the questions and related information. Name of the table is same as the course code. There is a corresponding ‘user’for every course, having access rights to it.
To create a new Course, a new record is added to the table named coursedetails. Corresponding Data table and user are created. The editor/upload programs populate questions to the data table. Qoestion paper generator program selects questions from the data table to generate question papers.
Name | Type | Description |
---|---|---|
code | varchar | Course code |
syllabusYear | varchar | Course starting year |
inst | varchar | Institution type, university dept UD / Affiliated college AC |
name | varchar | Course Name |
faculty | varchar | Faculty name |
degree | varchar | Degree name |
semester | varchar | Semester , first to eighth |
texlanguage | varchar | typestting language |
qpmodel | varchar | Question paper model |
duration | varchar | Exam duration |
nmodules | varchar | Number of modules in the course |
code2 | varchar | Second course code |
code3 | varchar | Third course code |
Name | Type | Description |
---|---|---|
modnum | int | Module number, maximum 8 |
unitnum | varchar | Unit number/group number, to mark related questions |
qtype | char(1) | Question type. A,B or C |
qnum | int | Question number, assigned by the software |
mark | int | mark |
level | varchar | Bloom’s level |
outcome | varchar | Outcome OC1 to OC7 |
author | varchar | Author information |
qtext | varchar | Question text, can contain LaTex commands |
atext | varchar | Answer hint, can contain LaTex commands |
figname | varchar | Filename of an included figure |
figure | bytea | Stored image |
A database and a user to own it are areated (replace mydbname below with your choice). Also two users named ‘dummy’ and ‘reader’ are created. These steps are carried out by the ‘psql’ client program, after logging into the server machine. The commands are shown below for pastegresql version 16 or later (ubunto 24.04).
$ sudo - su postgres $ psql postgres=# create role mydbname with createrole login password '******'; postgres=# create database mydbname owner mydbname; postgres=# create user dummy with password 'dum123'; postgres=# create user reader with password '******'; postgres=# \q
The postgres RDBMS should be configured for remote login, using TCP/IP protocol. The two files mentioned below need to be edited to enable TCP/IP connectivity.
The file /etc/postgresql/16/main/pg_hba.conf should have the following lines host mydbname all 127.0.0.1/32 password host mydbname all 0.0.0.0/0 password Modify /etc/postgresql/12/main/postgresql.conf , to have the line listen_addresses = '*' # what IP address(es) to listen on; Restart the database server using $ sudo systemctl restart postgresql After completing these steps the program, run the program $ python3 initQbank.py hostname dbname It will ask for the database password.
After completing these steps, the system can be accessed using any of the GUI programs provided.
This software is distributed under GNU General Public License version 3
Authors :