13

I teach undergraduate statistics, and am interested in administering personalized online assignments. I have already solved one portion of the puzzle, the generation of multiple version of a question using latex/markdown + knitr/sweave, using seeds.

I am now interested in developing a web-based system, that would use the various versions generated, and administer a different one for each student, online. I have looked into several sites related to forms (google docs, wufoo, formsite etc.), but none of them allow programmatic creation of questionnaires.

I am tagging this with R since that is the language I am most familiar with, and is key to solving the first part of the problem. I know that there are several web-based frameworks for R, and was wondering whether any of them are suitable for this job.

I am not averse to solutions in other languages like Ruby, Python etc. But the key consideration is the ability to programatically deliver online assignments. I am aware of tools like WebWork, but they require the use of Perl and the interfaces are usually quite clunky.

Feel free to add tags to the post, if you think I have missed a framework that would be more suitable.

EDIT. Let me make it clear by giving an example. Currently, if I want to administer an assignment online, I could simply create a Google Form, send the link to my students, and collect all responses in a spreadsheet, and automatically grade it. This works, if I just have one version of the assignment.

My questions is, if I want to administer a different version of the assignment for each student, and collect their responses, how can I do that?

Achim Zeileis
  • 15,710
  • 1
  • 39
  • 49
Ramnath
  • 54,439
  • 16
  • 125
  • 152
  • What's the question? How to make a website? –  Dec 18 '11 at 20:30
  • I like the wording, but I miss the question ... – clyfe Dec 18 '11 at 20:33
  • I would consider php but that is a personal view. Just an idea but implement the questions in database table, then if it has been given to a student have a flag column to set (0 or 1) if it has been issued. Then use the random sql query to select a random question that has not been flagged.It's not too elegant but just the first thing that came to mind :) – Sam Palmer Dec 18 '11 at 20:34
  • @Sam thanks. would you be aware of any websites that follow this approach so that I can take a look. – Ramnath Dec 18 '11 at 20:42
  • @paul, please see the edit to my question, where I have tried to clarify my objective. – Ramnath Dec 18 '11 at 20:42
  • I cant say I am aware of any sorry, but the php would be very simple and wouldn't involve any hard learning. The best of luck and I'll let you know if i have any brain waves! – Sam Palmer Dec 18 '11 at 20:50

4 Answers4

9

The way you have worded your question it's not really clear why you have to mark the students' work online. Especially since you say that you generate assignments using sweave. If you use R to generate the (randomised) questions, then you really have to use R to mark them (or output the data set).

For my courses, I use a couple of strategies.

  1. For the end of year exam (~500 students), each student gets a unique data set. The students log on to a simple web-site (we use blackboard since the University already has it set up). All students answer the same questions, but use their own unique data set. For example, "What is the mean". The answers are marked offline using an R script.

  2. In my introductory R course, students upload their R functions and I run and mark them off line. I use sweave to generate a unique pdf for each student. Their pdf shows where they lost marks. For example, they didn't use the correct named arguments.

Coupling a simple web-form with marking offline gives you a lot of flexibility and is fairly straightforward.

csgillespie
  • 59,189
  • 14
  • 150
  • 185
  • Interesting approach! I use R to grade my assignments too, and that is what I meant by `automatically` grading them. I could achieve this in Google Docs too, by creating a common form to collect answers, but emailing a different version of the questions to each student. – Ramnath Dec 18 '11 at 21:23
2

I know that this was asked a long time ago, but I think that today the best solution is the package exams plus Moodle.

The package exams can now generate XML Moodle questions that can be upload to Moodle platform as the students can solve the exercices on-line.

This is an example of a question made with exams package and uploaded to Moodle.

enter image description here

Flavio Barros
  • 996
  • 1
  • 11
  • 29
2

I found one possible solution that might work using the RGoogleDocs package. I am posting this as an answer only because it is long. I am still interested in better approaches, and hence will keep the question open.

Here is the gist of the idea, which is still untested.

  1. Create multiple versions of each assignment using knitr/Sweave.
  2. Upload them to GoogleDocs using uploadDoc.
  3. Share one document per student using setAccess which modifies access controls.
  4. Create a common Google Form to capture final answers for each student.

The advantage I see is two-fold. One, since all final answers get captured on a spreadsheet, I can access them with R and grade them automatically. Two, since I have access to all the completed assignments on Google Docs, I can skim through them and provide individual comments as required (or let some of my TAs do it).

I will provide an update, if I manage to get this working, and maybe even create an R package if it would be useful for others.

Ramnath
  • 54,439
  • 16
  • 125
  • 152
0

i just stumbled upon the ?exams package in R: Link to the CRAN site. could this be something for you?

Seb
  • 5,417
  • 7
  • 31
  • 50
  • I am aware of the `exams` package. It helps generate multiple versions of a question. That is the part of the problem I have already solved :-) The issue now is, how do I administer the multiple versions online, one per student. – Ramnath Dec 18 '11 at 20:49
  • 1
    what about using php and a mysql database? – Seb Dec 18 '11 at 20:54