I don't see this happening for plumbing, to give you a short example, or any other professional area.
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.
Because programming isn't plumbing.
Programming is not just a skill, it's an expressive medium required for effective communication in the 21st century.
Back in the day, you had to be literate. You had to write in cursive. This wasn't something you went to school for and did as a living, it was just a baseline from which you were able to do anything else.
Programming is like that. Why folks think of it as a stand-alone skill is beyond me. Yes, its basis is math. But that's like saying that the basis of writing is painting. The purpose of writing is to enable other kinds of work with lots of people, some of which may be far away. The purpose of programming is to enable helping lots of people do repetitive and boring things from all sorts of problem areas, some of which you will never meet.
No it's not. Making YouTube videos is like that. Knowing how to do social is like that. Being able to look stuff up on Google is like that. Graphic design is like that. (I'm often amazed by the quality of the graphic design and motion graphics on amateur YouTube channels.)
Knowing how to tell when politicians are lying should be like that, but isn't.
Programming is engineering. Not everyone is an engineer. Not everyone can be an engineer, because a lot of people's minds don't work in an engineery kind of way.
I think it's fine to teach kids Scratch and maybe some Python. But I don't think it has anything to do with effective communication - it's just useful practice for basic logical thinking and problem solving.
The kids who are good at it (maybe 10-15%) and enjoy it (maybe 25-50%) can specialise and do the harder stuff.
In any case I don't expect the Web of 2035 to look much like the Web of today, so there should be no expectation that learning any specific language or system is going to be useful later - any more than it made sense to expect everyone would be using BASIC and CP/M in 2000 when we started seeing computers in schools around 1980.
Programming since the demise of Cobol has had a similar hermeneutic strand. Languages designed for intelligibility by ordinary persons are limited in expressibility and denigrated by the community of programmers, e.g. HTML isn't deemed a real programming language and its users aren't deemed programmers.
Even though HTML is one of the more directly applicable languages to ordinary school day tasks it is eschewed for real languages and the objective becomes making baubles rather than layering in a communication technique on ordinary tasks. HTML can be integrated into the curriculum. It's forgiving...system failure is in the eyes of the beholder not the god of Booleans. And most importantly, HTML is a rational extension of many Indo European languages as punctuation and annotation.
With that said, I don't think it should necessarily be pushed as a career skill, nor necessarily even as an academic discipline, but why not just for fun? Most "educational" use of computers at the grade school level is a waste of the kids time. I'd rather kids sit in front of Scratch, than some glorified flash cards.
Maybe the younger kids are, the less academic it needs to be.
For older kids, my view is that computer programming is becoming analogous to a liberal art, i.e., something that every educated person should have been exposed to in order to be an informed member of society, even if they don't pursue it as a profession.
My parents took me to music lessons throughout my childhood, for which I'm grateful. They also let me spend a lot of time playing outside.
Edit: Kids are under a lot of pressure to choose "careers" before experiencing the subject matter, e.g., in engineering and computer science. Perhaps it would be a service to let the kids who don't like programming, find it out before they hit college.
If kids are good at abstract problem solving, denying them access to computer programming is like denying them sports if they like to kick balls around.
Coding will be more and more the killer app that people have in their jobs. A person can crush many ordinary office jobs just with excel and word macro skills. I teach people simple excel forumulas like vlookup and their life changes forever.
We should also teach plumbing, electrical and financial skills, and cut back on the interpretative dance, music and drama for kids who hate that crap.
Hear hear! We should be identifying students' aptitudes and interests and ensuring they're getting the best training possible towards up-skilling them these inclinations as early as possible.
Not everyone follows the same path, and the disaster is that we make others feel bad for not following the mainstream path laid out in front of them.
I'm one of those who tread from the path and nearly fell of the cliff, but managed to find a way with software in my very late teens, just in time. I can't imagine and almost don't want to think about those who never found a place in society as a failure of early education methods...
It's useful to know the basics even if it only helps you recognise the skill that you need a professional for.
B. Schools don't need to buy equipment.
C. Anything that means running the MS office suite less is a win in my book.
I suppose you could say the same for plumbing, but programming is in a league closer with reading/writing/math than plumbing, in that it applies to creating such a wide range of art and science. And it's not something bound to technology, the concepts of programming were mathematically sound well before the earliest home personal computer was built.
https://www.youtube.com/watch?v=mvK0UzFNw1Q
If coding is the way to go to solve a problem then be it. If plumbing is the solution then that is what they should learn.
The key is to empower them to solve problems early on. The good news is that that can even happen in their backyard getting dirty.
Scratch from MIT is another canonical suggestion when it comes to this matter.
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 http://www.robotturtles.com/ , ispired by Logo; it's for pre-school tho)
I'd also check out "CS unplugged" http://csunplugged.org/ , a collection of open-air activities you can make that sneakily teach algorithms.
My oldest child is still in primary and they have a lego robotics club- they build simple robots and do simple programming. He does well at maths and is a lego wiz so has been allowed to join the club 3 years early.
I've been thinking about where to start and they love minecraft, so it makes sense to start there I think. I'll check out some of your other links as well.
Few links:
http://www.computercraft.info/download/
http://www.learntomod.com/ (paid)
The puzzles started out with very simple programming (so simple it doesn't look like programming). Just setting a single variable, or two. It progresses to programming a one-dimentional robot (forward/backwards), then finally using Logo with loops.
It wasn't what got me into computers, but definitely what got me into coding. I'm thankful every day.
You can teach the general flow, logic, and what goes into making a computer program without the "scary code" part.
I think the first semester (Scratch) is really good. Personally I don't like the python and html/css stuff later. The material is quite old fashioned, using terminals and rather dry web pages. It's hard to get kids interested in this after they have spent a few months knocking out colourful and highly interactive games.
Its a blast. Scratch allows them to make little games and animations. They honestly seem to pick it up themselves.
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.
Coincidentally listened to the most recent episode of "Talk Python to Me"
http://www.talkpythontome.com/episodes/show/8/teaching-pytho...
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.
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.
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.
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.
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 http://discorunner.com and there's also an introduction to BASIC tutorial on that site targeted toward primary school-age children.
It is training teachers not only coding skills but the process of doing something in front of a class where you are going to make mistakes and fix them in front of a live (and opinionated) audience.
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.
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 - Σ.
This Reddit thread has good information on that. HTH!
https://www.reddit.com/r/programming/comments/2ffw1d/program...
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.
"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.
https://us.pycon.org/2014/events/letslearnpython/
http://therealkatie.net/blog/2015/feb/17/young-coders-why-tw...
http://pycon.blogspot.com.tr/2013/03/how-kids-stole-show-you...
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.
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.
You make a good point that it is not necessarily the best thing to do given how young kids skills differ and you list some really essential basics that I absolutely agree should form part of the curriculum.
I'd also add that actually disassembling and rebuilding a computer or other types of electronics should be on the essential list. So many young kids (mine included) are excellent operators of their little black boxes but have no clue what's inside or how it physically works.
BUT - all kids learn to write and to read and to count. These are basic skills needed for life. Given the reality of the world, proficiency with computers is becoming equally important. It seems prudent to introduce all those things you mentioned but I think it perhaps does kids a disservice to suggest they are to young to appreciate coding.
One of my most notable memories from my early years of primary school is programming a little robotic turtle thing using a BBC Micro and had it completing mazes and drawing maps on large sheets of paper for us.
I was probably 6 or 7 years old and it was AWESOME!!! We certainly understood what we were doing and how useful it could be.
So, I guess I'm for a balanced approach.
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'm a volunteer and I've been quite successful starting them in various schools thus far.
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.
My 7-year-old daughter uses Scratch. My 6-year-old son watches me play code combat and tells me what to do. I explain what I'm doing as I type.
http://www.computingatschool.org.uk/data/uploads/CASPrimaryC...