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

Abstract
This project aims to make learning content from Wikipedia articles more interactive. I would like to develop a fill-in-the-blanks type questionnaire, where blanks are made by removing links from an article. Indeed, an article's wikilinks generally hold pertinent information.

Implementation details
Anything integrated in Wikipedia has strict performance requirements and must be able to scale due to its massive traffic. The application is mostly front-end. I could use the MediaWiki API to retrieve the list of links in the article, or directly work with the links similar to Extension:RemoveRedlinks. To indicate if answer is correct or not, and to provide scoring, could use Manual:Hooks/SkinBuildSidebar as a useful hook to inject information in the WikiMedia sidebar.

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

 * Never programmed for MediaWiki, but I have some programming experience, and I am a fast learner.

Required deliverables

 * 1) Build an extension that hides some links, prompts the uses to fill the blanks, and informs the user is the answer is correct or not.
 * 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 consists has 4 milestones.


 * Have a simple extension working, no fancy features.
 * Get feedback and optimize.
 * Add some of the more fancy features.
 * Get feedback and optimize.