Code Monkey home page Code Monkey logo

scantron-score-processing's Introduction

README
License: GPL v2.05
Author: Akarsh Simha <[email protected]>
This file is (c) 2011 Akarsh Simha
=============================================

CONFESSIONS:
------------
Yes, the code is dirty. Yes, the BASH scripts are not efficient. Yes,
most of the stuff here is arcane. But it works for me. I'm
nevertheless sharing it, in case someone wants to figure their way
around this.

DEPENDENCIES:
-------------
Here's a rough list of dependencies

For basic score processing:
* Qt 4 Core

For histogram generation:
* BASH

For generation response statistics plots:
* BASH
* GNUPlot with PDF via libcairo terminal
* PDFLaTeX
* LaTeX packages graphicx and geometry
* tar + gzip

COMPILING THE CODE:
-------------------
You should have Qt 4 libraries / SDK installed. Then you could cd to
the directory containing the cpp / h files and:

$ qmake

$ make

If all goes well, you should have a binary called "Process-Scores"
created in the same directory. To invoke it, type

./Process-Scores

(assuming you are in the correct directory)

It should output some usage help and exit. Read on for further
information.

PURPOSE AND SCOPE:
------------------
This project aims to make life easier by processing the output of OMR
sheets used by the College of Natural Science at the University of
Texas at Austin.

While teaching a course, one would like to have the freedom to create
a custom exam without using standard question banks. But the
exam-evaluation system is tied strongly to the exam-creation
system. Thus, one would want to use the data from the OMR sheet reader
and custom-process it to create scores in an acceptable format and
obtain statistics.

SCORE PROCESSING:
-----------------
The core of the project is a C++ program called "Process-Scores" that
takes two files -- a file containing raw data from the OMR sheet
scanners and a file containing the answer key to each version used.

The raw data file is as generated by the OMR sheet scanners used at UT
Austin.

The answer key has a line for each version of the exam, that follows
the format:

Version Number, Key to Question 1, Key to Question 2, ... <Newline>

A Key to a Question may involve answer choices separated by a '|'. In
such cases, points are awarded if any one of the answer choices was
selected (i.e. the answer choices are ORed).

For more information, run the Process-Scores program with no
arguments.

Process-Scores writes to stdout, a list of students' unprocessed
scores in the format:
EID,score
where 'score' is the number of questions correctly answered (as of
this version, the application does not support questions with
different weightages).

For the UT Austin CNS system, one needs to replace the ',' by
whitespace at the very least, and possibly scale the scores.


HISTOGRAM GENERATION:
---------------------
histogram_from_scores.sh is a BASH script that generates a histogram
from a score file of the format:
EID,score
as generated by Process-Scores.


RESPONSE STATISTICS:
--------------------
Giving a third argument to Process-Scores also causes it to produce a
file for each test version, containing statistics on the percentage of
students that chose a particular option for a particular question.

The format of the file is:

Question #, Option 0, Option 1, Option 2, ....

Option 0 is never chosen and hence the percentage is always "0" and
that is just left as it is for future convenience. However, this
should be fixed later.

The file may be passed through response-stats-to-plots.sh, which plots
the statistics for each question and collates them into PDFs.

To invoke the response-stats-to-plots.sh, one passes the response
stats file generated by Process-Scores as an argument.

TO GENERATE SCORES IN AN UPLOADABLE FORMAT:
-------------------------------------------

1. Compile the program:
$ qmake
$ make

2. Create the key:
Open your favorite editor and enter the key into a file, i.e. for each
version of the test, add a line:

version_number,answer_to_question_1,answer_to_question_2,....

3. Produce the score list:
$ ./Process-Scores PATH-TO-SCANNER-OUTPUT-FILE PATH-TO-KEY-FILE RESPONSE-STATS-PREFIX > SCORE-FILE

4. Generate the histogram if you want to:
$ ./histogram_from_scores SCORE-FILE > HISTOGRAM-FILE
$ gnuplot
gnuplot> set xtics 1
gnuplot> plot "HISTOGRAM-FILE" using 1:2 with boxes
etc.

5. Generate graphs from response statistics for each version:
$ ./response-stats-to-plots.sh RESPONSE-STATS-FILE-FOR-A-VERSION

6. Upload scores
$ cat SCORE-FILE | sed 's/,/ /' > SCORE-FILE-WITH-WHITESPACE-SEPARATOR

scantron-score-processing's People

Contributors

kstar avatar

Watchers

 avatar  avatar  avatar

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.