[math4] Quiz/Question API Proposal

Frederick Grose fgrose at gmail.com
Sat Mar 28 17:39:21 EDT 2009


I have a simple data model that worked extremely well for an almost
universal questionnaire building application I can contribute.
    --Fred

2009/3/28 Brian Long <brilong87 at gmail.com>

> All,
>
> I think this is absolutely brilliant.  After our class on Friday, I noticed
> a LOT of conceptual overlap of the simple projects that people were
> proposing and I think a math API would be a great place to start.  As I've
> been trying to mention to everyone, I've not had any experience with Python
> so perhaps I'd be better suited to work on the database integration?  (Not
> that I've done SQLite either, but SQL is SQL generally...).
>
> In regards to the class, I know Profs. Jacobs and Grace are not extremely
> regulating our final deliverable for the class but I feel a strong API would
> be much more of a milestone than 10 small apps. that don't make it out of a
> beta stage.
>
> I think we should try and drum up support for this idea.  Bring on the
> replies!
>
> Cheers,
> Brian Long
> bbl5660 at rit.edu
>
>
>
>  ---------- Forwarded message ----------
>> From: Enimihil <enimihil at gmail.com>
>> To: fourthgrademath at lists.sugarlabs.org
>> Date: Fri, 27 Mar 2009 22:32:03 -0400
>> Subject: [math4] Quiz/Question API Proposal
>> Hello all,
>>
>> This is my first post so I guess I should introduce myself a bit.  I'm
>> Greg S., one of the RIT students in the class working on the Math4
>> goals, and something that I've mentioned might be a good idea a few
>> times now is a shared library/API for quiz questions/drilling so that
>> activity developers can leverage content and easily use questions
>> written in a variety of formats, from a variety of sources.
>>
>> Inline below is a simple outline of a proposal for an API along those
>> lines, with a few notes on implementation at the end.  Just trying to
>> propose something to save and/or centralize some common work that
>> needs to be done for a variety of activities.
>>
>> =================================
>> Sugar Quiz API Preliminary Design
>> =================================
>>
>> Motivation
>> ==========
>>
>> In the RIT class working on the Math4 projects, many proposed activities
>> require a question database of some kind.  A common API or library for
>> accessing databases in different formats, stored either locally or
>> remotely,
>> along with a simple mechanism to determine more complex formatting or
>> presentation than simple text (e.g. to include simple graphics or
>> mathematical notation) would cover a majority of the cases where the
>> activity needs some configurable "curriculum data".
>>
>> Eventually this library could be extended to provide hints, explanations,
>> or
>> walkthroughs for questions, in addition to the basic metadata about level,
>> grouping, difficulty, and subject matter that would be part of the base
>> system.
>>
>> Envisioned Usage
>> ================
>>
>> Consider a simple flash-card-like activity.  It presents a question from a
>> list of questions, allows the student to select an answer from the
>> provided
>> answers for the question or to enter their own answer.  Then the correct
>> answer is revealed and the student it told whether their answer is
>> correct.
>> If the question has an explanation of the correct answer, the flash-card
>> activity will show the explanation of the correct answer.  (Note that this
>> is just a simple usage example, the interaction design of a drilling
>> activity could be markedly different.)
>>
>> The flash-card activity would use this proposed Quiz API for the
>> following:
>>
>>    - Loading the questions from the storage location into memory. This
>>      includes any filtering or network lookup to download the questions
>>      from a remote resource and select appropriate questions for the
>>      student.
>>
>>    - Determining whether the student has entered a correct answer.
>>
>>    - Rendering the question to a simple widget/canvas. (i.e. pass the
>>      library a GtkCanvas or similar and tell it to display the question)
>>
>> To start with, the library would simply be a time-saving tool for
>> developers
>> needing similar functionality, but as the XS (School Server) becomes more
>> fully developed the library should integrate the functions provided by the
>> XS to enable automated update of course material for the current topic of
>> study so the students can drill material using any tool they prefer, while
>> still reporting progress to the instructor using the XS services.
>>
>> Proposed API
>> ============
>>
>> The Quiz API would be a python library, to act mostly as glue between
>> various file formats (and local or remote resources) for question data and
>> the Gtk graphical environment, providing a simple way to consistently
>> present and layout questions.
>>
>>    :quizdata.open(uri, [cache=False]):
>>        Opens a URI, returning a list of quizdata.Question instances.  A
>>        standard method of filtering question data based on parameters
>>        should be specified.  Examples of URIs that might be used::
>>
>>
>> http://xs-server/math4class/current_topic?level=4&difficulty=hard&format=moodle
>>
>>
>>  file:///var/lib/mathquestions/quiz1?level=4&difficulty=hard&format=xml
>>
>>            xmpp://teacheraccount@xs.server
>> /classname?difficulty=hard&level=4
>>
>>        The cache parameter would locally save the retrieved questions to a
>>        persistent storage so requests from the same URI (with cache=True)
>>        would read from the cache.
>>
>>    :class quizdata.Question:
>>        This class contains individual data for a question:
>>            - The question text
>>            - The style of answer (incl. multiple-choice, numeric, free
>>              response, etc.)
>>            - The correct answer (or if the question is subjective, that
>>              there *is* no correct answer).
>>            - Question difficulty
>>            - Grade level
>>            - Tags (for free-form grouping by topic, course, instructor,
>>              etc.)
>>
>>        The question text and answers should support at least minimal
>>        markup, like that supported by pango, in addition to markup
>>        rendering with MathML/LaTeX syntax.
>>
>>        .. note::
>>            The attributes listed above will should grow standardized names
>>            and be documented as part of the interface to the Question
>>            class, to allow for fine-grained for activity controlled
>>            rendering of the Question, if the simple show() call is not
>>            appropriate.
>>
>>        :Question.show(surface, x, y, [width=-1, [height=-1]]):
>>            Draw the question to the drawing surface at coordinates (x,y)
>>            limited to the optionally specified width/height.
>>
>>            This also should set up the appropriate input widgets for the
>>            type of question (multiple-choice/free-response) and handle the
>>            vents for those widgets.
>>
>>        :Question.answered():
>>            Returns True if the student has provided an answer for the
>>            Question.
>>
>>        :Question.submitted():
>>            Returns True if the student has submitted an answer for the
>>            Question.
>>
>>        :Question.correct():
>>            Returns True if the currently selected answer is correct for
>> the
>>            Question.
>>
>>        :Question.answer():
>>            Returns the answer the student has currently selected, or None
>>            if no answer has been entered.
>>
>>        :Question.clear():
>>            Removes the widgets and drawings that show() set up, preparing
>>            the surface to receive the next question or other widgets.
>>
>>
>> Implementation Issues
>> ======================
>>
>> The implementation of this (deceptively simple) library will take some
>> effort, in that it will be closely tied to the windowing/graphical
>> toolkit,
>> PyGtk/Cairo/Pango rather directly, due to the high level of abstraction.
>> Additionally the URI lookup and question filtering based on parameters
>> will
>> be necessary, as will interpreter the various format parsers necessary to
>> build the Question objects.
>>
>> For MathML support, the GtkMathView widget will need to be available, so a
>> certain amount of effort may be involved in packaging the library in a
>> simple way for activity developers.
>>
>> Next Steps
>> ==========
>>
>> Firstly, this API is being proposed and posted to the Math4 mailing list
>> for
>> feedback and changes before any commitments to this interface is decided.
>> For any activity developers who are currently working on an activity that
>> could take advantage of such a system, or who have written similar
>> functionality in an activity, your input on usage and the naturalness of
>> the
>> API.
>>
>> Secondly, anyone who is interested in doing work on this library or using
>> the library in their activity should chime in, along with the expected
>> usage
>> or how you can contribute.
>>
>> Greg S.
>> --
>> Email is packaged by intellectual weight, not volume. Some settling of
>> contents may have occurred during transmission.
>>
>>
>> _______________________________________________
>> FourthGradeMath mailing list
>> FourthGradeMath at lists.sugarlabs.org
>> http://lists.sugarlabs.org/listinfo/fourthgrademath
>>
>>
>
> _______________________________________________
> FourthGradeMath mailing list
> FourthGradeMath at lists.sugarlabs.org
> http://lists.sugarlabs.org/listinfo/fourthgrademath
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.sugarlabs.org/archive/fourthgrademath/attachments/20090328/985b4c69/attachment.htm 


More information about the FourthGradeMath mailing list