Ask Slashdot: How Can You Teach Programming To Schoolchildren?
Slashdot reader SPopulisQR writes:
A new school year is approaching and I wanted to ask what are appropriate programming languages for children of various ages. Specifically, 1) what coding languages should be considered, and 2) are there are any self-guided coding websites that can be used by children to learn coding using guidance and help online? Let's say the ages are 8 and 12.
I know there's lots of opinions about CS education (and about whether or not laptops increase test scores). So leave your own best thoughts in the comments. How can you teach programming to schoolchildren?
I know there's lots of opinions about CS education (and about whether or not laptops increase test scores). So leave your own best thoughts in the comments. How can you teach programming to schoolchildren?
Back in the early 90's we were taught with a tool called LOGO Writer. Used a simple syntax to guide a turtle to draw objects and stuff. You could write loop statements that would have the turtle draw a "circle" and other things. It was pretty effective I thought.
Make SELinux enforcing again!
at that age, so none of the above.
Teach them the basics to get them through life. Few need to know programming. Why spend all that money when they'll just become auto mechanics or sell real estate.
You think I'm kidding but I'm not. Odds are your kid won't program software at all. Let the ones who show interest and have aptitude at the computer. The rest just want to use social media and games.
Teach them mathematics. Programming didn't make sense to me until I took algebra, learned about functions in general and the order of operations in particular. Not that you need mathematics to learn programming, but it does help in figuring out what is supposed to be done in what order.
Teach them to think, and mental discipline. We do not need more code monkeys.
Why bother? Get them grounded in something that won't be obsolete with the next language fad. You know, real science, real knowledge, something that will help them build their analytical and judgement skills. (No, most coding doesn't build analytical skills - most of it is boring boilerplate, which is why there are so many "code-by-cut-n-paste-from-the-net" "experts.") Biology, Chemistry, Physics, Geology ...
Throw in various maths, as well as language (judging by the way so many slashdotters don't know the difference between brake and break, or rain, rein, and reign, if they can spell in 10 years time they'll be seen as brainiacs). And history - so they recognize past mistakes when they repeat them and don't over-commit to a bad course of action.
But forget computers. That they can pick up on their own if they're interested. And if you try to teach them you'll kill their interest by making i seem like school work instead of a possible fun hobby that might, at some future date, come in handy.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I learned BASIC on an Apple II back in 6th grade. They bussed us across town to the one school that had them for one segment of the Gifted & Talented program. That was the best thing the school district ever did for me.
I'm not sure what the right answer is for today, but certainly it's a good idea to expose kids to the concept in elementary school. Some of the kids will latch on to it and run with it to be the next generation of developers.
Maybe something that kids can take and go on with themselves would be best, but I don't think the language really matters. Teach kids to program, and the ones that it clicks with will go on to grab whatever works for them.
And for those that say the schools should focus on more core curriculum aspects, I disagree. Yes, you can't neglect those, but you also need a variety of other topics so that kids find the topics that inspire them. For the kids who click with coding, the programming will drive their advancement in algebra and other areas of math.
I hate to even recommend it but I think I have some decent reasons. It's in every browser. Hit F12 and you have a REPL, debugger, and you can start coding on the same machine without downloading anything else. Even though it's a very loose language, you can teach all the basics of control flow, data handling, and you will be forced to deal with numeric and type issues. You also have access to a graphical canvas which is amazing fun for kids.
I wouldn't expect things like File I/O to come up which could be problematic or burdensome. Theoretically you could teach event-driven programming but that's a bit overkill for kids. If you can push anything to a hosted server, they can view it on their phone, too. You can do some of this with other languages, of course. JavaScript just comes on so many things now, though.
If it is to teach them programming concepts such as sorts, loops, etc. then I'd go for a simple language like BASIC. The language is important since you are trying to get them to learn how to think about problems, not be able to write code in a specific language.
If it is to teach them to program in a specific language I'd ask why do this at their age? It's likely whatever language they learn will be outdated by the time they finish school anyway.
I'm a consultant - I convert gibberish into cash-flow.
Have you even been around grade school age kids recently?
I don't understand this feeling that kids of that age should not learn programming, when MANY of us here learned programing at that age. If it wasn't a problem for so many computer professionals then, why would it be now?
I think there's a way more important question than what language to use though. Its what CAN the teacher actually use?
If they have zero teachers that can teach programming in any way, probably sadly the answer should be nothing.
But hopefully the school has some resources they could bring to bear - even with limited computers you could teach programming in an after-hours context. One program that seemed to help a lot with some of my friends children was a Lego Mindstorms based competition, which combines programming and robotics - that's probably the most compelling route for younger kids because it is so hands on and visual.
Scratch seems to be widely used, I wish there was something else but it's widely used so there are a lot of resources.
If a school is getting students all iPads, the iPad Playgrounds app is a great way to get into programming and soon will be flooded with a ton of third party educational material because of allowing widespread loading of playgrounds.
But basically, I think a school should try to do something, even if it's only for a subset of kids. The earlier someone finds out they like programming the better.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I've spent a couple years designing programs for teaching children from 6+ how to do programming. One of the best tools by far is MIT's Scratch.
https://scratch.mit.edu/
With a little adult guidance, you can have them doing electronic story books, drawing, simple quizzes, and tons more (one student recreated pac-man). Kids learn about use of sprites, pictures, control statements very quickly. It's all drag/drop action blocks which make it easy to learn. Some kickstarter campaign had some interesting ideas of teaching programming through robotics.
https://www.kickstarter.com/pr...
https://www.kickstarter.com/pr...
I'd start with Scratch, you'll be impressed, There are books available you can use with you kids:
https://wiki.scratch.mit.edu/w...
Hope that's helpful.
"Imagination is more important than knowledge" - Einstein
Programming is more of an art then a knowledge exercise.
And it needs practice to keep it up.
However one thing we lost since the 8/16 bit computer days are the easy to program computers.
Most kids wants to do graphics (hence the popularity of Logo) but good old basic was good at this too.
Today Python seems to be a good tool but while the kid is still grasping at varables and loops they want to do graphics and to explain how to do that in Python just blows the mind. Because you can't just draw a line. Or paste a gif.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.