Summer of Code/2016/TeachingKidstoCode
- What is your name?
- What is your email address?
- What is your Sugar Labs wiki username?
- What is your IRC nickname on irc.freenode.net?
- What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
- 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.)
I am located in UTC -5 and my hours are typically flexible. I can adjust the availability at my summer job (which gives minimal hours to begin with) to allow for maximum availability in working on this project.
- Have you participated in an open-source project before? 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?
I actually have not worked on an open source project before. The open source community was always something I'd felt like I wasn't enough of an expert to contribute to. Now that I've declared a major in Computer Science and have taken two computer sciences courses - one in Python and one in Java - I am eager to use my skills for a larger-scale project. Whether or not I'm enough of an 'expert' is less relevant now that I realize how much there is to learn and how much change there is to affect by contributing to open source projects. SugarLabs, especially, inspires me to make a contribution because I believe that equality of education is severely skewed - across the world, of course, but even within the U.S. alone - and I'd like to play a role in giving students easy access to the skills that are required for a sound foundation for the rest of their education.
About your project
We are looking for projects that will enhance the Sugar Learning Platform. Please consider how your project will have impact on children learning.
- What is the name of your project?
My project is called Teaching Kids to Code. It is my response to the project, Beyond Flashcards: Programming to ReadJS, proposed by Walter Bender.
- 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?
Teaching Kids to Code is a program that introduces kids to coding through a series of activities that make use of Turtle in Python. It will act as an introduction to object-oriented programming for late elementary school-aged kids. Computer science is sadly under-taught in the vast majority of public schools, something that will need to change as the subject is recognized for its importance relative to the core subjects (math, science, English, history). Kids need an easily accessible, fun way to learn how to code, starting with an introduction that gives them an understanding of the fundamentals of coding and the opportunities computer science allows, without overwhelming them with all the details.
The basis of the project is that students start with a simple tutorial and are challenged to apply their cumulative knowledge to increasingly difficult games and activities. To make the whole of the program more game-like, the activities will be written in a story-like manner where the turtle is the main character, which can be named by the user. The tutorial will focus on controlling the turtle object’s basic movements with a fill-in-the-blank approach. Once students complete the tutorial, they will be able to apply the learned movements to at least two activities: one in which they move their turtle object to “collect” objects on the screen in a treasure hunt of sorts; the other in which they navigate their turtle through a maze. These activities lead up to drawing-centered games that utilize the skills previously learned in addition to teaching new structures, like for loops, again starting out in a fill-in-the-blank-style tutorial. In one activity, students will be challenged to redraw shapes that are shown on the screen, and they will be scored for how accurately drawn and concisely coded the shape is, and given suggestions for improved code. Students will not be expected to code from scratch, rather there will be a set of constructs to choose from for each line (similar to the Turtle Blocks activity). Finally, using this same pseudo-coding from scratch approach, students are asked to draw one of three prompts of varying difficulty, given according to the score achieved in the shape drawing activity. This is a great opportunity for teachers to set up a final project that will showcase the learned skills of the students, or simply for students to bring together all of their newfound skills in a satisfying way.
Some concerns that I have are:
- How to give feedback for the final activity, if teachers are not directing students’ use of the program?
- I am not familiar with any libraries that would be useful in constructing this project, but I am open to suggestions!
- What is the timeline for development of your project? The Summer of Code work period is from mid-May to mid-August; 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 (end of June); the last steps always take longer than you think, and we will consider canceling projects which are not mostly working by then.
- 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.
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.
- What will you do if you get stuck on your project and your mentor isn't around?
- 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?
- We want to make sure that you can set up a development environment before the summer starts. Please do one of the following:
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".
- Send us a link to a pull request or merge request you have made on a Sugar or Sugar activity bug.
It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.
If you plan to work on Sugar-Web projects we want to be sure that you're familiar with web technologies, so:
- Clone the Sugarizer repositor
- Using instructions here develop your first Sugar-Web activity
- Send us a screenshot of your new activity executed in Sugarizer
- Describe a great learning experience you had as a child.
- 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?