This forum is in permanent archive mode. Our new active community can be found here.

Programing Language for a teacher

edited February 2013 in Technology
I am looking to make a random test generator, where the answer key would be the same across all versions of the test, so the students all see different tests, but I only need one key. Anyone have an idea on what language I should use? I used to do some programing in VB but it has been many years ago. I would also need to output to a .doc or .docx file that is also form like.

Thanks for the help.

Comments

  • If you want to do .doc or .docx, you're pretty much stuck with VBA and writing a ton of Word macros to do so.

    Otherwise, my general go-to language for people just starting out would be Python. There is a Python .docx module available, but I have no idea how capable it is as I've never used it.
  • Just use Excel. Write all your questions then sort them so there is a relatively even distribution of A,B,C,D answers. Then just write an excel macro that shuffles all the rows once. Then have it shuffle just the question field amongst all rows where answer = A, then again for B, then again for C, again for D, and so on. Then save as doc. Then shuffle all the question rows again and save. Shuffle again and save. Repeat the question shuffle until you have enough tests saved.
  • edited February 2013
    Yeah, I suppose Excel would do the trick. It still means that you'd need to learn VBA as I believe that's the current Excel macro language. So same language, different app.
    Post edited by Dragonmaster Lou on
  • Aside from the logic, what is your intent?
  • I work in a Title 1 school and there is a ton of cheating, but if I could make something that I could share with my whole department it could cut down on the cheating. The big issue is this would only work with objective tests, and with my district this is what we have to go with because of the large class sizes. I don't need a .doc export I just need to be able to export many versions of the same questions and answers in different orders, but not where there would be ten different answer keys.
  • How do you expect to avoid X answer keys when you have X copies of the test?
  • I'm not sure, maybe inputting the answer key I want and have it all work together. I am not sure. That is why I am asking.
  • I have done this by hand before, and I will never spend that much time on it again.
  • If you don't mind a little more work on the answer side just have one key with complete test. The teacher can find each question on the key and grade it accordingly.
  • I'm having trouble grokking this. This is on a multiple-choice test? The answer key is supposed to be something like BABCDDCABBCADDDBACCAAB. The questions are supposed to be sorted randomly so that all B questions show up as questions 1,3,9,10,etc?

    How does this prevent cheating exactly? Or am I misunderstanding?
  • It will not prevent cheating, it will curve it down. The idea is that every question could be on any number and any answer could be any letter, so a single answer key would work. The majority of cheating is done when the students see the same questions in the same order. This would prevent that. Also having a test version at the top would keep some of the students from cheating. It is all about taking it down a little.
  • If you have the same answer key, how much cheating will it stop? A lot of cheaters just look at someone else's scantron and see that 3 is a. They won't even realize that the questions are shuffled up. Even if they do, they are smart enough to notice the answer key is the same.

    If you are going to write a program you might as well go all out. Have each test be completely shuffled. Then have a unique ID printed onto each test. Then you lookup the ID in the database to retrieve the answer key for that exam. This should all be done automatically with barcode/scantron technology.
  • I'm not looking to stop cheating, I am looking to decrease it. Also, there are test I do not use a scantron on, I just memorize the answer key so I can go through it quickly. So it will decrease it some.

    But in going all out, what language should I use?
  • I'm not looking to stop cheating, I am looking to decrease it. Also, there are test I do not use a scantron on, I just memorize the answer key so I can go through it quickly. So it will decrease it some.

    But in going all out, what language should I use?
    Just use Excel, seriously. Or maybe Access if you want to build up a database of questions.
  • edited February 2013
    If you are going to write a program you might as well go all out. Have each test be completely shuffled. Then have a unique ID printed onto each test. Then you lookup the ID in the database to retrieve the answer key for that exam. This should all be done automatically with barcode/scantron technology.
    Rather than using a database, I'd just have a randomly generated key and a hash. I don't think any of our solutions are applicable if the question is "what language to use" though. You should be using whatever language you're comfortable in, and if one doesn't exist (you've never done any programming) get someone else to build you a web-form or something that does what you want.
    Post edited by Anthony Heman on
  • I've used Access before and that could work. Any other suggestions would be helpful.
  • edited February 2013
    The correct solution is to publicly execute cheaters in front of the class as an example to others.

    My scripting knowledge is not quite good enough to kill somebody in the real world, though.
    Post edited by open_sketchbook on
  • That would be a great idea.
  • My approach would be multiple documents, each with a question, that get merged together with this macro. Afterwards, make some form (either web-based or vb) that takes the instructions, questions, and answers and makes the documents. Then throw some logic in there to ensure the answer key always stays the same.
  • Access! Access was built for this!

    I'm actually whipping up a report and some tables to do this for you, because I'm snowed in and bored. Give me a little bit.
  • That would be cool
  • Ok. Battery is about to die, and I'm not done yet. I don't know when the power will be back. When it is, I'll finish this up.

    The jist of it is three tables: tQuestions, tAnswers, and tTests. Questions have a 1:n(unique) relation to Answers, and Tests have a 1:n(unique) relation to Questions. You use SELECT ... ORDER BY RAND() LIMIT 1 statements to create random orders of Questions and their asossciated Answers, and you dump those results into Tests so that you can easily kick out an answer key for that specific Test later.

    That may sound intimidating, but it's really second nature when you get to know Access, or databases and SQL in general. My implementation's a bit spiffier than that, which is why it's taking a bit longer.
  • That is amazing
  • Lusankya, have you finished the test maker?
Sign In or Register to comment.