User:Drakefjustin/Fill-in-the-blanks

Comments and feedback is welcome.

Identity
Name: Justin Drake Email: drakefjustin (gmail.com account) Project title: Fill-in-the-blanks

Contact/working info
Timezone: CEST (UTC +1) Typical working hours: 10:00-13:00; 14:30-19:00; 21:00-22:30 Skype: Randomblue12

Abstract
This project aims to make learning content from Wikipedia articles more interactive. I want to develop a fill-in-the-blanks extension for MediaWiki, where blanks are made by removing (at random?) links from an article. The key observation is that an article's wikilinks hold pertinent and localized information, easily exploitable for learning (and quizzing!).

Implementation details
The following is based on some quick research, and is completely open to change. I will write a MediaWiki extension in PHP and/or javascript. The extension should be computationally light-weight, and I will focus on providing an optimized tool.

This is a rough architectural plan:
 * 1) Retrieve and manipulate basic structured information from article
 * 2) Retrieve links
 * 3) Find non-liked instances of linked concepts
 * 4) Identify sentence structure of article [e.g. to remove at most one link per sentence]
 * 5) Skinning
 * 6) Hide links
 * 7) Provide standardized input boxes [the boxes should be of same length, to give no clue about length of link]
 * 8) Give instant feedback [and possibility to override automatic corrections if the user feel answer given is correct]
 * 9) Other
 * 10) Provide scoring
 * 11) Keep log of progress

For the first part, I could use Linker::link to run through all links, as done in Extension:RemoveRedlinks. Another possibility is to use the MediaWiki API to retrieve the set of links, and then work with that. I want users to have the usual Wikipedia experience, so I want to build upon current skins. I'm thinking about using Manual:Hooks/SkinBuildSidebar as a useful hook to inject information in the WikiMedia sidebar. This could be used for instant feedback and scoring. Any suggestions are welcome.

About me
I'm a fourth year student in mathematics at the university of Cambridge, UK. I completed my undergrad there, and I am currently enrolled in a Master's program called "Part III".

Relevant experience

 * I'm a MediaWiki newbie with programming experience (mostly in C). For sure I'm going to learn a lot, but I'm enthusiastic about this project, and I'm a fast learner.

Required deliverables

 * 1) Build the basic extension that hides some links [e.g. at most one link per sentence at random] and prompts the user to fill the blanks, with feedback. [I still have to experiment to see if instant or non-instant feedback is best.]
 * 2) For each linked concept, find instances of concept in rest of article, so those can be hidden also.
 * 3) Provide a score for the user when done.

If time permits

 * 1) Make it possible for the user to decide which parts of the article s/he wants to be quizzed on.
 * 2) For each link, find synonyms, variant spellings, other names, etc. to improve deliverable 2 above.
 * 3) For signed in users, log the results (e.g. in user/Example/Fill-in-the-blanks/Results) automatically.

Project schedule
My project has 4 milestones.


 * Have a simple extension working, no fancy features.
 * Get feedback on user experience. Optimize performances.
 * Add fancy features to the core extension, such as ability to select sections/sentences to be quizzed.
 * Get further feedback, and optimize again.