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 (and potentially Wiktionary) more interactive, in a very simple way. I propose to develop a fill-in-the-blanks extension for MediaWiki, automatically generating cloze tests. The tool would remove at most one link per sentence in a selected portion of article to be (semi-randomly) removed and replaced with a blank input box. The key observation is that an article's wikilinks hold pertinent and localized information, ready to be exploited for active learning and quizzing. Automatic correction and scoring will be available, with the option for users to override decisions.

Implementation details
What? MediaWiki extension or jQuery gadget

Language PHP or javascript

Main challenge GUI

Below is an architectural plan. In brackets are existing extensions which could be useful. Everything is still open to change.


 * 1) Retrieve and manipulate basic structured information from article
 * 2) Retrieve links (RemoveRedlinks  - especially Linker::link; alternatively, use the MediaWiki API)
 * 3) Find non-liked instances of linked concepts
 * 4) Identify sentence structure of article [e.g. to remove at most one link per sentence] (see work done on sentence-level editing)
 * 5) Skinning
 * 6) Hide links (RemoveRedlinks)
 * 7) Provide standardized input boxes [the boxes should be of same length, to give no clue about length of link] (InputBox)
 * 8) Give instant feedback [and possibility to override automatic corrections if the user feel answer given is correct] (ArticleEmblems)
 * 9) Provide highlighting to select what pieces of text to be quizzed on. (ArticleHighlight)
 * 10) Scoring and statistics
 * 11) Provide scoring (SkinBuildSidebar)
 * 12) Keep log of progress (use the Toolserver?)

Other comments

 * I want users to have the usual Wikipedia experience, so I want to build upon current skins.
 * The extension should be computationally light-weight, and I will focus on providing an optimized tool.

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". This is probably my last year as a student. In particular, I should be completely free this summer, for full commitment on this project.

I don't have any experience programming for MediaWiki, but I use MediaWiki through Wikipedia a lot. I am relatively tech-savvy and I know HTML, Javascript, PHP, and C. Most of my programming experience is in C, from coursework I did. For sure this will be a great learning experience, and I look forward to it.

I am especially enthusiastic as this relates to a team project which grew out of the start-up weekend in Cambridge. Myself, and two others, have plans to build a much fuller (and smarter!) automatically-generated interactive learning framework for Wikipedia, using other pieces of structured data, such as infobox templates. MediaWiki mentoring through the GSoC would provide a significant boost for our project!

Deliverables
This project (as described in the abstract) is definitely technically doable in the given time frame. Having said that, extra fancy features can make this project "arbitrarily difficult" as required. Fancy features include:
 * 1) Per-sentence selection for quizzing.
 * 2) Improved automatic correction with synonyms and variant names, variant spellings and misspellings, stemming, etc.
 * 3) Automatic recording of quiz results for signed-in users. (E.g. store results in user/Example/Fill-in-the-blanks/Results.)
 * 4) Customization of density of links to remove, level of randomness, instant feedback, skinning, etc.
 * 5) Advanced scoring and statistics.
 * 6) Identify anomalies within an article using global statistic.

Added to the coding-related difficulties, this project has to produce something pedagogically useful, which I'm not taking for granted. I intend test the extension periodically and fine-tune from the feedback I receive.

Project schedule
First half of summer


 * Extraction of links and mapping of "concept-space" within an article. (Indeed, Wikipedia policy is not to link concepts multiple times, so I will have to retrace every instance of a linked concept.)
 * Have a usable and neat UI, with basic functionality.
 * Testing, tweaking, optimization, and rethinking of best way forward for second half of summer, based on feedback.

Second half of summer


 * Reach a useful product, which is easy to use.
 * Add a selection of more fancy features (from the above list).
 * Testing, tweaking, optimization, and rethinking of best way forward for future, based on feedback.

Mock-ups