OpenQPS

Question Paper Management System

Introduction

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:

Click Here to generate dummy Question Papers

Software

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

Input data, the Questions

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: Input Excel file

Working without a Server

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.

Creating New Courses

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.

Generating Question Papers

A GUI program is available for generating the question papers. The following details, to appear on the generated question paper are added:

Design of the Question Bank

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.

Details of the table coursedetails

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

Data Table for a Course

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

Installation, postgres RDBMS

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

Enable connection using TCP/IP protocol

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.

About

This software is distributed under GNU General Public License version 3

Authors :