Changes

Jump to navigation Jump to search
m
typo
Line 1: Line 1: −
My name is [[User:Marion Zepf|Marion Zepf]] and I would like to work on the project [[Summer_of_Code/2013#Python_export_functionality_for_Turtle_Blocks|Python export funtionality for TurtleBlocks]]. Please find my application below.
+
My name is [[User:Marion Zepf|Marion Zepf]] and I have been accepted to work on the project [[Summer_of_Code/2013#Python_export_functionality_for_Turtle_Blocks|Python export functionality for TurtleBlocks]]. Please find my project proposal below. An up-to-date progress report on this project can be found on [[Summer of Code/2013/Turtle Blocks Python export project|its wiki page]].
 +
 
 +
== Abstract ==
 +
 
 +
Turtle Blocks teaches children an important skill in today's world: programming. Its block-based graphical interface makes abstract concepts like loops easy to understand and fun to play with. But it does not yet support the next step in learning: writing code in a 'real' programming language. My project fills this gap by automatically converting block programs to Python code. It enables the children to transfer their knowledge to a text-based language and to focus on acquiring the new syntax.
    
== About me ==
 
== About me ==
Line 29: Line 33:  
''If so, please send us URLs 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?''
 
''If so, please send us URLs 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?''
   −
This is my first open-source project. In the past, I have benefitted from open-source software countless times. Now I want to give something back to the community.
+
This is my first open-source project. In the past, I have benefited from open-source software countless times. Now I want to give something back to the community.
    
== About my Project ==
 
== About my Project ==
Line 41: Line 45:     
The Python export functionality will be implemented in pure Python, drawing on the internal block code interpreter of Turtle Blocks to convert the blocks to a representation of the program flow. I will then use the <code>ast</code> module<ref>http://docs.python.org/2.6/library/ast.html</ref> to build the Python syntax tree from this representation. In order to serialize the syntax tree to a string, which can then be written to a file, I plan to use either the <code>codegen</code> module<ref>http://dev.pocoo.org/hg/sandbox/file/b2aea937f5bb/ast/codegen.py</ref><ref>https://gist.github.com/mattbasta/791312</ref> or the <code>unparse</code> module.<ref>http://svn.python.org/view/python/trunk/Demo/parser/unparse.py?view=markup</ref>
 
The Python export functionality will be implemented in pure Python, drawing on the internal block code interpreter of Turtle Blocks to convert the blocks to a representation of the program flow. I will then use the <code>ast</code> module<ref>http://docs.python.org/2.6/library/ast.html</ref> to build the Python syntax tree from this representation. In order to serialize the syntax tree to a string, which can then be written to a file, I plan to use either the <code>codegen</code> module<ref>http://dev.pocoo.org/hg/sandbox/file/b2aea937f5bb/ast/codegen.py</ref><ref>https://gist.github.com/mattbasta/791312</ref> or the <code>unparse</code> module.<ref>http://svn.python.org/view/python/trunk/Demo/parser/unparse.py?view=markup</ref>
<!--TODO: decide for one-->
      
The exported Python code will need to import a few classes from Turtle Blocks to set up a window etc. I will isolate these classes from the Turtle Blocks code, so it can easily be imported into the generated code.
 
The exported Python code will need to import a few classes from Turtle Blocks to set up a window etc. I will isolate these classes from the Turtle Blocks code, so it can easily be imported into the generated code.
Line 69: Line 72:  
** September 9 – September 15 (1 week)
 
** September 9 – September 15 (1 week)
 
*** Multiple turtles and custom turtle shells from the 'Extra options' palette<ref name="requires-add-imports" group="note" />
 
*** Multiple turtles and custom turtle shells from the 'Extra options' palette<ref name="requires-add-imports" group="note" />
*** Display management (hide/ show blocks, toggle full screen) from the 'Presentation templates' palette, and printing and loading blocks and palettes from the 'Extra options' palette:<ref name="requires-add-imports" group="note" /> These are very specific to Turtle Blocks. We need further discussion how this should look in the output of the exported Python code.<!-- TODO report results of discussion -->
+
*** Display management (hide/ show blocks, toggle full screen) from the 'Presentation templates' palette, and printing and loading blocks and palettes from the 'Extra options' palette:<ref name="requires-add-imports" group="note" /><!-- These are very specific to Turtle Blocks. We need further discussion how this should look in the output of the exported Python code. --><!-- TODO report results of discussion -->
 
* September 16 – September 23 (1 week): Test exporting different kinds of blocks in combination. Fix the last bugs. Clean up.
 
* September 16 – September 23 (1 week): Test exporting different kinds of blocks in combination. Fix the last bugs. Clean up.
   Line 77: Line 80:  
</references>
 
</references>
   −
=== My Backround ===
+
=== My Background ===
 
''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.''
 
''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.''
   Line 87: Line 90:     
Through my linguistic education, I can draw on substantial experience with grammars, parsers, and syntax trees.
 
Through my linguistic education, I can draw on substantial experience with grammars, parsers, and syntax trees.
This experience will help me with anaylzing the block code and transforming it into Python code.
+
This experience will help me with analyzing the block code and transforming it into Python code.
    
My interest in educational software was sparked during my work on [http://purl.org/icall/view VIEW] (Visual Input Enhancement of the Web), an online language tutoring system.
 
My interest in educational software was sparked during my work on [http://purl.org/icall/view VIEW] (Visual Input Enhancement of the Web), an online language tutoring system.
Line 95: Line 98:  
My working style is characterized by a high level of documentation, be it inline comments or commit messages.
 
My working style is characterized by a high level of documentation, be it inline comments or commit messages.
 
I also keep my code modular, which makes it easy for others to build on my work.
 
I also keep my code modular, which makes it easy for others to build on my work.
This way, Sugar labs can profit ideally from my contribution, even after the end of the GSoC.
+
Thus, the Sugar Labs community can profit ideally from my contribution, even after the end of the GSoC.
    
== Me and the Community ==
 
== Me and the Community ==
Line 123: Line 126:  
My old primary school has an immigrant rate of about 80%, and many kids are socially disadvantaged. This results in a big difference in learning speed between individual children in one class, which is problematic for traditional "chalk and talk" teaching methods. I think that Sugar would enable each child to learn at its own pace without feeling left out if they are slower than their classmates. Faster learners can easily move on to other activities when they are done and no longer disturb the lesson because they are bored.
 
My old primary school has an immigrant rate of about 80%, and many kids are socially disadvantaged. This results in a big difference in learning speed between individual children in one class, which is problematic for traditional "chalk and talk" teaching methods. I think that Sugar would enable each child to learn at its own pace without feeling left out if they are slower than their classmates. Faster learners can easily move on to other activities when they are done and no longer disturb the lesson because they are bored.
   −
In the first year, the school often faces the difficulty of teaching children who do not speak the class language (German). With its clean graphical interface and recognizable icons, Sugar could help these children understand the material without the need to translate everyhing into their mother language.
+
In the first year, the school often faces the difficulty of teaching children who do not speak the class language (German). With its clean graphical interface and recognizable icons, Sugar could help these children understand the material without the need to translate everything into their mother language.
    
I can set up contact to the school and act as an interpreter if necessary.
 
I can set up contact to the school and act as an interpreter if necessary.
Line 149: Line 152:     
=== Describe a great learning experience you had as a child. ===
 
=== Describe a great learning experience you had as a child. ===
 +
 +
When I looked out of my window, I could see a hill with houses on the top. I would often move my head around, especially up and down, to see how the position of the houses would change with respect to the window frame. It took me a long time, but I eventually figured out that I had to imagine a straight line going out from my eyes to the house I wanted to see. If that line was interrupted by the window frame, I could not see the house. By moving my head around, I would change the angle of the line and some previously hidden houses would become visible. From this experience I learned that I can figure out how things work just by taking a closer look at them and playing around with them.
    
=== Additional information ===
 
=== Additional information ===
 
''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?''
 
''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?''
 +
 +
My project will also make Turtle Blocks more attractive for older learners (youths or adults). It allows them to learn the basic concepts of programming first, without having to hassle with the syntax of a text-based programming language. Once they have understood the basics, they can move on to learning the syntax of Python. This way, my project can help increase 'programming literacy' all over the world.
     
51

edits

Navigation menu