Summer of Code/2015/Beyond Flashcards Programming to Read JS

About you

What is your name?
My name is Gaurav Mishra, and I am a 3rd year undergraduate student at IIIT Hyderabad.

What is your email address?
My gmail is gauravm043@gmail.com

What is your Sugar Labs wiki username?
My Wiki nick name is Gauravm043

What is your IRC nickname on irc.freenode.net?
My IRC nick name is gauravm043

What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
My first language of communication is English and I am also comfortable with Hindi.

Where are you located, and what hours (UTC) do you tend to work? (We also try to match mentors by general time zone if possible.)
Since I reside in India, the time difference in UTC and IST being +0530 Hrs, I usually work from afternoon to midnight but is adjustable,I will try to be mostly active when most of the mentors come on IRC.

Have you participated in an open-source project before? If so, please send us URL's to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?
Nowadays majority of the softwares that we are using are open source eg- Linux kernel, Mozilla Firefox, etc. I had known about GSOC via my college. I think contributing to open source is very good opportunity for a person as he get to understand how things work, Now, that I am more involved in software development and practices, I thought of giving it my level best to contribute towards FOSS and get involved in it through SugarLabs. This is my first time contribution towards Open Source Development.

About your project

What is the name of your project?
The name of my project is Programming to read.

Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

About my project:
Programming to read is an activity that will enable people to enhance their language skills and at the same time will motivate them to look at language not just as a means of communication but will allow them to understand what simple sentences can do when it comes to programming, in a very interactive manner like the current turtle block activity.Flashcards for various subjects, verbs, nouns, pronouns, prepositions will be given to the user. Flashcard vocabulary will be extensible and there will be a plug-in for handling major languages. Following figure will perhaps elaborate the purpose more:

P2read.jpg

Who will use it:
The activity will attract people of all age and most importantly children as they will see how their simple sentences are forming shapes or what they have been imagining in their mind as a consequence of the sentence will become live on their screens.
Why do they need it:
Since activity will focus on doing programming via forming simple sentences I think it will open a new dimension for learning how to write and speak sentences, for children it will be an introduction of what computers can do and will motivate them to move further in the field.
Technologies that I will be using:
However the activity will be independent but I plan on using Turtle block JS framework to be the starting point of this project, blocks that are already present in turtle block will form the core back-end. Flashcards will be implemented as an abstraction layer over the combination of most of the blocks. Other than that: Technologies:
1.Javascript
2.Python (Planning to use nltk for checking grammar of sentence)
Implementation Details:
We will give the following primitive flashcards (as a starting step), each flashcard will be mapped to some blocks of Turtle block activity, eg: walked ---> forward , spoke ---> speak
Flashcards:

  1. Subject / Noun Here:
    Turtle, Bird, Rabbit
  2. Verbs:
    Walked forward, walked backward, turned left , turned right, sang, spoke, painted
  3. Object:
    Ten steps, song, (texts for speak), rectangle/other shapes.
  4. Conjunctions:
    and
  5. Adjectives:
    “red” turtle , “blue” bird, “big” rabbit …
  6. Adverbs:
    "slowly” walked ...

Example sentences formed from above flashcards:
The turtle painted a red rectangle.<br> The turtle slowly painted a red rectangle.<br> The turtle turned right and walked forward.<br> The rabbit spoke Hello.<br> The turtle walked 5 steps and the bird sang a song.
Steps:

  1. At first the formed sentence will be evaluated for its grammatical correctness using NLP processing.
  2. The sentence will then be parsed to separate subjects, verbs and objects. also separation of adverbs if there are any.Part of speech and dependency trees will be used here.
  3. Parsed flashcards will then be handled by their corresponding mapping.
  4. We will have a function that will check for potential arguments like, walked will look for one/two argument (will use adverbs here) and will also have a default value.
  5. When the mapped blocks are recovered we will put them in an executing queue.
  6. If sentence contained prepositions like “and” both parts will be processed separately and will be executed one after the other.

“More on project idea development and implementation at this link.”

What is the time-line for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.

Week / Days Work to be Done
Community Bonding Period
(28th April - 25th May)
  1. Get to know more aspects of sugar
  2. Understand fully how the current turtle block activity has been written as it will be the base framework of my application.
  3. Think about what more flashcards can be added and what can be the possible types of sentences apart from already given above.
  4. Develop structure about various functions that will be used to handle such sentences functions need to be more generic.
  5. Develop a deeper knowledge of various languages mostly SVO (subject - verb - object) and gain knowledge about POS tagging and dependency trees to collaborate them with JS.
Week 1
(26th May - 1st June)
  • Develop pallette for flashcards using turtle block framework
  • Add all the primitive flashcards
Week 2
(1st June - 7th June)
  • Map flashcards to their respective blocks.
  • Retrieve the formed sentences.
  • Debug the structure
Week 3
(7th June - 13th June)
  • Process sentences for grammatical correctness.
  • Develop a mechanism to point out the user about the wrong sentence formed.
  • Process sentence for separating out its constituent parts and get the mapping of retrieved flashcards, using POS tagging etc.
Week 4
(13th June - 19th June)
  • Form the combination of retrieved blocks and execute them.
  • Perform testing by making simple sentences (adverbs/adjectives not handled).
  • Debug the overall structure.
First Deliverable An independent “Programming to read” activity that can execute simple sentences.
Week 5
(20th June - 26th June)
  • Add functionality for handling adverbs/adverbs.
  • Perform Regression Testing.
Week 6
(27th July - 2nd July)
  • Add plugin for more languages like French, Italian etc.
  • Handled Languages will be following subject–verb–object (SVO) sentence structure.
(3rd July-7th July)

Mid term Evaluations

Week 7
(8th July - 15th July)
  • Add plugin for handling extension of vocabulary.
  • Write test cases.
Week 8
(16th July - 23th July)
  • Perform Regression Testing.
  • Write test cases.
Second Deliverable Improved activity that support multiple languages and vocabulary extension
Week 9
(24th July-31th July)
  • Regression Testing
Week 10
(1st Aug - 5th Aug)
  • Integration Testing
  • Evaluation
Week 11
(6th Aug - 12th Aug)
  • INTEGRATION
  • Integration Testing
  • Evaluation
  • Documentation
Week 12
(12th Aug - 16th Aug)
  • INTEGRATION
  • Integration Testing
  • Evaluation
  • Finalising the documentation.
16th August Final Deliverable



Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

I have participated in many projects as a part of the college curriculum and being a research student over here some projects with my own interests also. Some of the projects that I have successfully completed are given below --

-- Built a Traffic-Sign-Identification-System which can be used to regulate traffic signs, warn a driver, and command or prohibit certain actions.The project presents a study to recognize traffic signs using Neural Networks. The system detects and recognizes 7 basic signs.
Link - https://github.com/gauravm043/Traffic-Sign-Identification-System

-- Built a terminal that is similar to the linux terminal with functions like opening files, basic linux commands like ls, cd, piping etc. I have used concept of processes, and C language to implement it.
Link - https://github.com/gauravm043/Linux_Shell

-- Built a 3D bike game in OpenGL consisting two levels.
Link - https://github.com/gauravm043/OpenGl_3D_Bike_Game

-- Built an Online Examination portal using python and Web2py.
Link - https://github.com/gauravm043/Online_Exam_Portal

-- Built a simple wave mixer application using Python GUI tools(tkinter) and pyaudio library, The mixer provides basic functionalities like time reversal, increasing the amplitude, modulating/mixing sounds etc.
Link - https://github.com/gauravm043/Wave_Mixer

Besides these projects I have been teaching ITWS course for past three semesters to my juniors in college as a teaching assistant of the course. The course mainly focuses on python, Javascript, HTML, php, Web technologies etc.

I feel that I can grasp new things and use them to successfully complete the project.

You and the community

If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.

My thoughts:
As of now we have many activities in Sugar that focus on enhancing education of children in many ways, for eg take turtle blocks, but as of now we need an environment that can teach Grammar, Vocabulary, Programming, pronunciation and can let children acquire reading and language skills. Programming to read activity will do that in a very interactive manner.

Walterbender:
The significance to Sugar is that we are a bit thin on constructionist literacy activities.... this has the potential to open up an entire arena where kids can construct within the context of acquiring reading and language skills. plus it will be fun!!

What will you do if you get stuck on your project and your mentor isn't around?
In such a scenario I will first try to figure it out myself on the web but if unsuccessful I will get in touch with other contributors like ignacio, walterbender, gonzalo, tch, that are present on IRC and seek their help, if the problem still persists then I will send a mail to the mailing list, so that the mentor can see it whenever he comes online. Till then I will try to get involved in some other aspect or part of the project.

How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?
Well usually i have a habit of keeping records to work/contributions i have been doing eg: For getting familiar with the project i am regularly keeping a log of the suggestions provided by my mentor and what i learned from it/future plans etc at this discussion link.For the project progress purpose i will maintain a blog and will keep the community updated via it, if asked to maintain the record in the wiki, I will accordingly do so.


Miscellaneous

Send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of "logout".

Gaurav Screen.jpg


Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.

Bugs Solved
1. Created an ArgumentError class that handles exception raised by functions on entering wrong arguments, simultaneously fixed erroneous behavior of functions like inv(), factorial(), asin() etc.

   #4807     #4808
Pull Request

2. Definition of b10bin() updated

   #4811
Pull Request

3. Incorporated Ctrl+C and Ctrl+V for url toolbar in browse activity

   #4642
Pull Request

4. Reported and solved the bug but there was no such bug in the newer version of Clock Activity so closed the issue.

   #4815

5. Also out of interest I ported Spiro laterals activity (currently in python) to Java-script, current port is at:

   Spiro-laterals


Describe a great learning experience you had as a child.
When I was in my seventh or eighth class I was usually afraid to take part in debate/speech competitions, at that time when my parents came to know about that they taught me a very important lesson of life which is: “God has given all of us same body and same mind. What we make out of it is up to us. If any other person in the world can do a task so can we”. and “It is never too late to start anything new one should only have the willpower to do it”.

Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?
First of all I would like to say that I feel humbled to be be a part of such a good project, where we have to design a framework that enhances children's mind in an interactive way.Teaching students has always been my passion and I have been walking on the path for a while so at first sight I decided that I have to do this project, to excel in my limits and to encourage small children to do more.