Hi everyone, do you have any ideas about how to integrate coding into primary school? What's the best way to start coding with young children? Thanks for your help!!
Why there's a need for children to learn coding? This is getting really crazy. Seems like everyone needs to code and everyone is pushing towards that.<p>I don't see this happening for plumbing, to give you a short example, or any other professional area.<p>EDIT: I was a coach at a Django Girls event. I support these kind of events, but still, I don't see the reason to really push children to learn coding in their 5 or 6 years old. At that age, they are supposed to play with other children in the backyard, getting dirty. We are losing that. Probably, my generation (1990) was the last having that joy.
Back in 1991, when I was 7, the Logo programming language did great for me. You have to write instructions for a pointer to move on the screen and draw things ("go ahead 20 steps; turn right; go ahead 10 steps...). We had a Logo class twice a week and we all kids couldn't wait for it to come. I bet some flavour of Logo is still around, and "turtle graphics" (the general concept of procedural drawing for kids) is a great way to introduce programming. <a href="https://en.wikipedia.org/wiki/Logo_%28programming_language%29" rel="nofollow">https://en.wikipedia.org/wiki/Logo_%28programming_language%2...</a> <a href="https://en.wikipedia.org/wiki/Turtle_graphics" rel="nofollow">https://en.wikipedia.org/wiki/Turtle_graphics</a><p>Scratch from MIT is another canonical suggestion when it comes to this matter.<p>Some teachers are using Minecraft to let kids build imaginary things; I guess the underlying principle is "let kids plan ahead", which is the core ability for algorithmic thinking, thus computer programming (as in this board game <a href="http://www.robotturtles.com/" rel="nofollow">http://www.robotturtles.com/</a> , ispired by Logo; it's for pre-school tho)<p>I'd also check out "CS unplugged" <a href="http://csunplugged.org/" rel="nofollow">http://csunplugged.org/</a> , a collection of open-air activities you can make that sneakily teach algorithms.
<a href="https://scratch.mit.edu/" rel="nofollow">https://scratch.mit.edu/</a>
It is made for teaching code to young children
Not sure if you've seen this, but code.org created a teaching manual just for it. They also regularly run workshops throughout the United States.<p><a href="http://code.org/curriculum/docs/k-5/complete.pdf" rel="nofollow">http://code.org/curriculum/docs/k-5/complete.pdf</a>
I co-teach a local after school club using Scratch. Kids are 9-11 and they are very much into it. The school has in classroom Chromebooks and we use the online scratch.mit.edu .
That works nicely - we have an hour and try to teach some basic point in the first few minutes and then the kids are off. It is a noisy, fun process as they kids help each other and ask us how to do things. My coteacher is a CS professor at a local engineering university.<p>Its a blast. Scratch allows them to make little games and animations. They honestly seem to pick it up themselves.<p>Another resource that I like is NoStarch press which is an imprint (right word?) of O'Reilly. They have great instruction books focused to kids and to adults teaching kids. I have a Python title as well as a Scratch and a javascript one.<p>Coincidentally listened to the most recent episode of "Talk Python to Me"<p><a href="http://www.talkpythontome.com/episodes/show/8/teaching-python-at-grok-learning-and-classrooms" rel="nofollow">http://www.talkpythontome.com/episodes/show/8/teaching-pytho...</a><p>Professor Curran from Sydney was the guest and he has a site called Grok Learning which takes kids through a Pythin curriculum. He argues that by middle school kids should be taught a text based language. He says in the classroom he just uses the Python interpreter in a terminal.<p>He aludes to the fact that it is a productive exercize in that you make mistakes and show the kids a process of making mistakes and fixing them.<p>I liked Curran's focus on training teachers and his recent contributions to the Hour of Code are interesting. The Eliza bot example is one where you can start with a 'bunch of if statements' and refine it over time as you learn new constructs.<p>I hope I got his points right - TBH I listen to podcasts as I wash dishes and get kids ready for bed so missed some. A good listen though if you are intersted in this topic.
When I was a child I learned BASIC and LOGO when I was 5-7 years old. I found the skills I acquired in the process helped me with math and english, to the point where I was doing both at a college level by the time I was in 6th grade.<p>I'm working on a project to "upgrade" classic BASIC versions and make them more interesting to today's children. We have a proof of concept at <a href="http://discorunner.com" rel="nofollow">http://discorunner.com</a> and there's also an introduction to BASIC tutorial on that site targeted toward primary school-age children.
I really like the insight from Shriram Krishnamurthi at Brown who tried a similar project.<p><a href="http://qr.ae/0GzuL" rel="nofollow">http://qr.ae/0GzuL</a>
What integration of the curriculum usually entails is bringing Language Arts and mathematics into other subjects. By analogy, if you want to integrate coding into primary school then you have to pick encodings that are integrable. Logo, Scratch, Python, C, Cobol, whatever aren't because you can't really use them in Language Arts without a real stretch of the term integration and a lot of pretending that Logo or Cobol isn't a force fit in a language arts class...it's hard to write a poem in Perl that compiles.<p>The way to integrate coding is to pick encodings that extend the ordinary tasks. The obvious extension of Language Arts is HTML because presentation is part of what primary schools teach and HTML is highly accessible and doesn't require any special tools.<p>The less obvious extension of mathematics is J, which is simply an alternative to languages designed for the limitations of 1970's era hardware in the form of hand calculators. Forty years ago, the hand calculator focused on accuracy over hand calculations rather than extending the possibilities of numerical manipulation. But summing a list of numbers should be a basic operation...and in mathematics it is - Σ.
Finland's official curriculum will include programming starting next year.<p>This Reddit thread has good information on that. HTH!<p><a href="https://www.reddit.com/r/programming/comments/2ffw1d/programming_becomes_part_of_finnish_primary/" rel="nofollow">https://www.reddit.com/r/programming/comments/2ffw1d/program...</a>
I would hesitate to make primary schools kids learn 'coding' because personally, I find the underlying problem solving more inspiring than learning syntax.<p>FIRST Lego League [1] offers a compelling alternative though. I competed in FLL with a team of other primary school kids and greatly enjoyed designing a robot (with motors and sensors) and then programming it to solve tasks using a drag and drop language. Each member of our team could focus on the part they enjoyed most rather than everyone sitting in front of the computer.<p>"FLL challenges kids to think like scientists and engineers" and has a glamorous 'World Final' event that is honestly the coolest thing in the world when you're 11.<p>[1]: <a href="http://firstlegoleague.theiet.org/" rel="nofollow">http://firstlegoleague.theiet.org/</a>
Get a few Raspberry Pi's and start playing around with the projects on their web page.<p><a href="https://www.raspberrypi.org/resources/teach/" rel="nofollow">https://www.raspberrypi.org/resources/teach/</a>
Maybe searching about "The Young Coders" may help:<p><a href="https://us.pycon.org/2014/events/letslearnpython/" rel="nofollow">https://us.pycon.org/2014/events/letslearnpython/</a><p><a href="http://therealkatie.net/blog/2015/feb/17/young-coders-why-twelve-and/" rel="nofollow">http://therealkatie.net/blog/2015/feb/17/young-coders-why-tw...</a><p><a href="http://pycon.blogspot.com.tr/2013/03/how-kids-stole-show-young-coders.html" rel="nofollow">http://pycon.blogspot.com.tr/2013/03/how-kids-stole-show-you...</a>
I spent many hours being instructed cursive and "penmanship". So be it - its the essential foundation to all the notes, essays, etc you do in school.<p>Likewise, if we want kids to have a foundation in computing, I'd advocate a computer penmanship course, probably around basic linux commands, basic networking, etc. Primary school seems too early to appreciate coding, so I'd focus more on rote learning and drilling.<p>Boring i know, but I think it would pay off more than learning to drag n' drop to the LEGO GUI. I'm someone who never got that foundation, and it has been a burden on my ability to work at a professional level.
Google's CS-First program, <a href="http://www.cs-first.com/overview" rel="nofollow">http://www.cs-first.com/overview</a> , is great for this.<p><i>CS First is a free program that increases student access and exposure to computer science (CS) education through after-school, in-school, and summer programs. All clubs are run by teachers and/or community volunteers.</i><p>I'm a volunteer and I've been quite successful starting them in various schools thus far.
When I was in primary school (around 1989), I coded in BASIC (first, by typing some pieces of code from textbooks to see how they work, then altering them, then trying to write something on my own — e.g. tic-tac-toe, or date calculations).<p>The best modern analogue of BASIC (though much more attractive) is probably Processing. Lua also works. Then kids should start to learn Javascript to understand that the real world is not that logical.
There is a big project, Computing at School, to introduce computer science as a school subject in Britain. They have a sample curriculum thing which includes learning goals for all years, you may want to look at that.<p><a href="http://www.computingatschool.org.uk/data/uploads/CASPrimaryComputing.pdf" rel="nofollow">http://www.computingatschool.org.uk/data/uploads/CASPrimaryC...</a>
RoboRally is a turn based board game, each player controls a robot by selecting a number of command cards which will be executed by the robot like forward, turn left or right, fire laser :) and so on...
Coding / Engineering is about problem solving and breaking things down into component steps. Critical Thinking is required. Don't teach a language teach the skill.