Giter Club home page Giter Club logo

unique-exams's Introduction

Unique-Exams

Unique-Exams is a simple program to create randomized exams so each student receives a unique set of questions.

Why?

When students have a good idea of what will be included in an upcoming exam, they will study towards the particular type of questions that will feature. This has significant value for educators due to the backwash effect - you can focus students' study time without the need of homework by this method of flagging the kind of questions you will be asking them.

However, to ensure students aren't simply memorizing answers prepared by other students, we still need a degree of exam security and randomness. This program provide that by randomizing the selection of questions for each student's exam, while keeping the overall question pool and topics consistent.

An educator prepares a template paper (or multiple template papers for situations where an examiner and student each receive their own copy - like an oral spoken assessment) following a particular format.

This program takes those templates, analyses the content, and generates however many unique exam papers are required by the educator.

Due to the randomness involved, templates can be reused in subsequent semesters without risk of students memorizing answers from past exams. In fact, students acquiring past exams from former students is encouraged as it helps motivate students to study a wider range of topics.

Please read TEMPLATE_DESIGN.md for details on the process of designing template exams.

Getting started

Installation

Run poetry install

Usage

Have a look at the sample template files provided in the input folder to see the expected format.

You can Follow the TEMPLATE_DESIGN.md guide to design your own templates. Remove the sample files and add your own template files to the input folder.

Modify config.py to reflect the text you want to use for placeholders for the Alternate questions.

Run python unique_exams/main.py

Generated exams will be placed in the output folder

Running the tests

Currently there are no tests written.

Contributing

Please read CONTRIBUTING.md for details on the process for submitting pull requests to us. We look forward to receiving your contributions!

License

MIT

Contributors

unique-exams's People

Contributors

talkingtoaj avatar

Watchers

 avatar

unique-exams's Issues

Support for Markdown files

Currently only Word .docx files are supported (considered the most user friendly for exam developers who are not coders), however Python is able to process Markdown much better than word documents.

We should create a base class with Word or Markdown handling as instantiated subclasses, according to the format of files detected in the input folder.

I suggest for simplicity, as a first step we should require that all files in the input folder are of the same type, and raise an error if they are not. Output file for markdown might be HTML or PDF.

Improving copying of Word docx elements

The problem

We're using the python-docx package, which seems to be the best developed python package for ingesting and exporting docx files out there, but it is woefully lacking in some basics.

Currently our program will copy paragraphs and their formatting well, but the following are lost between being ingested from the template to the unique exams:

  • Bullet pointed lists
  • Numbered lists
  • Tables
  • Page-breaks

Desired solution

Some functions that will be called by load_in_template() and add_paragraph() which will ensure more of the Word elements are preserved.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.