Feedback system design

Events happening in the community are now at Drupal community events on www.drupal.org.
mathieso's picture

Here are some preliminary ideas. Suggestions? Modules that already do some of this?

An exercise is a task for students. An author makes it, then inserts a reference to it into a page. When students see the page, the exercise is embedded in the page.

A student works on the exercise, and submits a solution.

In the work I do, most exercises are make-something-like-this. Students need to be able to turn in the things they make. A human grader looks at the solution, and gives feedback.

Author

1. Creates exercise

Fill in a form, as usual when creating a node. Fields:

  • Title
  • Description - can include images
  • Attached files
  • Required by default: boolean - is this exercise required? Instructor can override for his/her course.
  • Blocks progress by default: boolean - if true, student cannot proceed (submit more solutions?) unless s/he completes this exercise. Instructor can override.
  • Default weight: numeric - value from 1-10 (?). Instructor can override.
  • Zero or more sample solutions created by authors
  • For human graded items:
    • List of rubic items. Each item has a weight (e.g., Indenting 0.2, Variable names 0.3,...).
  • Notes to instructors
  • Notes to graders

Implementation: a node. Entity ref to sample solutions. Entity ref to rubric items.

A rubric item is a characteristic a correct solution should have, e.g., indented code for a JavaScript exercise. Each rubric item has:

  • Title (e.g., Indenting)
  • Ordered series of feedback messages, each with a weight. E.g.,
    • You-got-it-right (“Nicely indented code.”, 1)
    • Needs-improvement (“Indenting mostly OK, but some of it needs to be fixed.”, 0.5)
    • You-screwed-it-up (“You forgot to indent the code properly”, 0).
  • Note to instructors
  • Note to graders

Implementation: a node. Should there be a ref back to exercises that use this rubric item?

GUI: A list of rubric items for the exercise, with a dropdown to add more items. A button to create a new rubric item.

Question: There could be dozens of rubric items for one project. How to help authors avoid creating duplicates?

2. Insert exercise into content

Method that works in a GUI. E.g., a button on the toolbar that opens a dialog. There’s a dropdown of defined exercises, with an “Add a new exercise” button. The author selects the exercise to include. When one is selected, part of the exercise is shown as a preview, to make sure the author has chosen the right one.

Implementation: Insert some text into the page, e.g., [exer:219]. 219 is an nid.

The author editing a page wouldn’t see [exer:219], but a placeholder, with the name of the exercise and a short preview, and an X button to delete it.

Student

Sees the exercise in the content.

Implement:Add a display mode that will use regex to detect and replace exercise references.

Q: best way to insert a node display in a node?

Each exercise has a place to enter a solution. See:

http://coredogs.com/content_media/krm_articles/feedback-system/exer1.png

and

http://coredogs.com/content_media/krm_articles/feedback-system/exer2.png

for simplified D6 things.

The solution tool might capture plain text, but not necessarily. There might be an audio recording widget for a language class. GUI editor for a writing course. For an algebra course, some way for the student to show his/her work. E.g., maybe take photos of work on paper with a phone, and SMS the images somewhere. Could be attached files. Whatever.

I guess this should be pluggable, so developers can add new input methods in the future. Is there a standard way to do this?

Implement the client/server stuff with backbone.js?

Grader

To come...

Thoughts so far?

Kieran

Learning content authoring system

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: