Math4Team/RIT/Projects/Question Support API/API Design: Difference between revisions

Enimihil (talk | contribs)
Add description of the proposed API.
 
Enimihil (talk | contribs)
Add information about the response reporting as an interface to the reporting team.
 
(One intermediate revision by the same user not shown)
Line 35: Line 35:
;Question.answer
;Question.answer
:Returns the answer the student has currently selected, or None if no answer has been entered.
:Returns the answer the student has currently selected, or None if no answer has been entered.
;quizdata.write_responses(questions, file_object, objective=None)
:Writes to file_object the CSV formatted information about the list of questions passed.  The CSV is formatted as follows: macaddress, nickname, learning_objective, correctness.  The macaddress field is to be only 12 hexadecimal digits, normalized to lower-case.  The learning_objective field can be supplied for all questions, or the write_responses function will simply leave the column blank if not supplied.
===URL Design===
As the example URLs above (in the documentation of quizdata.open) show, any number of possible scheme and resource-path implementations are possible, pending development time to implement them. The URLs will need to conform to certain constraints on parameters, in order to satisfy basic API requirements.  Most importantly, a required "format" specifies what parsing backend to use for the retrieved data.  Initially the following formats are being targeted:
* [[http://docs.moodle.org/en/GIFT  Moodle GIFT]]
* [[http://docs.moodle.org/en/Moodle_XML  Moodle XML]]
* A native format (probably sqlite-based).
Additional parameters could include the following:
;level
:The board grade-/other- level  of the question(s)
;difficulty
:The relative difficulty of the question, in comparison to other questions of the same  level.
;category / tag
:A general taxonomic filter. Possibly specified multiple times, if so, result is the *intersection* of the separate result sets (AND, not OR).
More evaluation is necessary for the filtering functionality, perhaps a separate mechanism for filtering is needed.


===Implementation Issues===
===Implementation Issues===