Jason Jason - 1 year ago 59
C# Question

Need assistance with Exam grading algorithm using weighted grades and difficulties based on # of questions used

I'm currently in the process of creating a program set for creating and taking exams. I am creating this for a customer of mine that runs a technical college and would like their teachers to have a standardized testing environment, while also reducing the amount of work-time required to grade tests, etc.

The problem I'm having is that I'm not in the least bit mathematically inclined. I would like to have my program be dynamic enough to auto-calculate the overall score based on the number of questions (lets say 10 ~ 300 questions), type of question, and difficulty rating (1-5, 1 being easy and 5 being a challenge) - but cannot for the life of me figure out a formula to do this calculation. The primary thing is that all tests will be standardized to have an overall score of 500 points regardless of the number of questions. This is very similar to the way that certification exams work, from what I understand.

If someone could help me out with this, even a formula would greatly help.

Further detail:

  • The questions will be weighted based on their difficulty rating. A higher difficulty question should yield a higher score. For example, a difficulty rating of 1 would be worth 1/5 that of a difficulty of 5, and so on.

  • Due to being unable to figure out the formula for this issue, I have been unable to start any of the coding towards this, only the visual design and layout, which is not an issue for me.

  • my original thought of the formula was that the base formula would calculate the average(Da) score of each question in each difficulty (D), then divide that by the total possible score(500), then add up the scores for each difficulty category together and compare against total possible score.

pseudo code example:
$score= for each difficulty(d1~d5), calculate (sum(D#)/Da)/500)+previous D#

The problem is that my math really sucks and my formula doesn't divide the score of 500 between the x number of questions and difficulties.

Answer Source

Based on the little information that is available in your question, there is a naive way to do it that might (or not) suit your needs:

A easy question worth 1 point, a challenging one 5, a medium 3, etc. Let's say that you want a test with 10 questions:

2 - challenging (2 * 5 = 10 points)

5 - medium (5 * 3 = 15 points)

3 - easy (3 * 1 = 3 points)

The total amount of points is 28. Dividing 500 by 28 you get 17.85.

If a student gets right lets say 1 challenging, 3 medium and 2 easy his points would be 5 + 9 + 2 = 16.

16 * 17.85 gets the grade based on the overall score of 500: 285.6

For more (or less) questions you just have to do the same process, dividing the overall score (500) by the total amount of points in the test, and then multiplying it back to get the actual result.

Hope that helps.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download