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.
with loads of swizzle sticks.
My day job is a veterinarian tech in charge of animal husbandry and it is very important job that ensures integrity of our food supply. From 9 to 5 in a assembly-like environment I use what looks like an oversized turkey baster to impregnate sows.
A new school year is approaching and I wanted to ask what are appropriate method to teach animal husbandry for children of various ages. Specifically, 1) what species should be considered, and 2) are there are any self-guided animal husbandry websites that can be used by children to learn coding using guidance and help online?
Teach them to think, and mental discipline. We do not need more code monkeys.
If our AI dreams come true then no need to program in the traditional sense just instruct the computer what you want it to do.
Honestly programming is like accounting, you don't need to teach it unless they are interested. The problem with most teaching is it does not capture the interest so laptop or none if a kid is interested they will do it. If I think back to my schooling there were things I was more interested in and things I was less interested in guess which ones I was good at. So same IQ, same background knowledge and level of education still in physics I got a really good score and biology very low.
Think of things you were interested in and see if the rule is true for you? How to teach is to get them interested (what ever the subject)
Don't pitch learning to program as a solution to anything. It is not. Programming is a specific form of planning and problem solving. Everyone will benefit from learning to plan and problem solve in general. Teach planning and problem solving with all sorts of general life issues first. Computer programming should only be taught to those who get good grades in planning and problem solving.
Also -
Typing is not programming. Using Word is not programming. Making videos is not programming. Using paint is not programming. None of those should be covered in a programming course.
Double Also -
You don't need full time access to a computer to learn to program.
Sites like https://robotbenchmark.net/ introduce for example Python programming to beginners with challenges based on an online 3D robot simulator and a competition framework. That's very appealing to schoolchildren.
-Olivier Michel http://www.cyberbotics.com
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.
Modern app appers know that only apps can app apps, so these new appers should be given apps that let them app apps while apping other apps! Start with Appbook, then Appy Birds and Appy App Saga!
Apps!
Logo can be fun, even more so if you pair it with a small robot to carry out the instructions with a pen attached. I still remember using loops to draw a 3d doughnut.
I was talking to a teacher a few days ago and he mentioned picaxe (which uses Basic) which looks kinda interesting. Anything that controls a robot, a car, (something not on a screen) is going to be more engaging than a plain procedural maths program.
What produced the very best generations that understood math, science and computers?
Basic? Ada? Logo? Pascal?
Teach the advanced math needed and then add computer projects.
Go back to what worked well in the past. Math and science. A few computer labs with tasks that built on math skills.
Learn more math at home. Code in the lab. Build math skills. Then create projects that build on new math skills.
Putting a GUI together from a few pre set options in some educational software to create an instant app is not an education.
Domestic spying is now "Benign Information Gathering"
Stop wasting everyone's time trying to teach them how to program.
They only need to understand the very basic functionality of processors: what memory is, RAM vs storage, how a processor can do maths on the memory and how it can take decisions based on values. That's it. Those who really are interested will learn on their own, choose computer classes on their own, etc.
Stop forcing everyone to be a programmer and teach them just enough so they stop thinking computers are incomprehensible magical boxes, and stop them from clicking "accept" on every damn prompt the computer asks them.
#DeleteFacebook
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.
I clicked on this article and was pleasantly surprised to see the prevailing answer is "don't". And I couldn't agree more. Seriously when did we decide "coding" was the holy grail of skills and needed to be introduced as early as possible?
I learned early but kids need basics first. English, math, science. If they show an altitude then fine, but geez, give them a chance to get going.
Tim Bell in the Computer Science Department at the University of Canterbury in Christchurch New Zealand has developed a comprehensive program for young kids. Tim's a top notch guy too.
For the very young, MIT scratch is easy to learn and actually does things.
For older children, I guess Haskell simply because it's a functional language. It's closer to mathematics. If you don't like that, I would pick python just due to prevalence.
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.
Give them a simple game written in an interpreted language. Tell them they can change the game any way they want, and that you'll help with syntax or logic questions if they want to know anything. Then let loose for a few hours.
Theeeen offer more rigorous access.
It's been done in the past with other subjects so I get the impression it would work with this too.
1) Ruby or Python
2) No. Really, use a teacher here.
Are you completely nuts, you want to teach an 8 year old programming?
How about teaching them how to count.
One step at a time.
Kids need an exposure to programming at a young age so they understand it is simply giving instructions to a machine to do something. Some great toys for doing this are:
Dash by Wonderware
Sphero
Ozobots
The early exposure is key because if they don't have a successful early experience, they are less likely to try programming later in education. They will think, "Hmmmm... I programmed in 3rd grade, I can do computer programming, let me take that class."
Without the successful exposure at a young age they may think that computer programming is only for smart people.
Once computers are fully capable of taking and following verbal directions I'm quite sure that a great majority of English speaking people will have no problem programming them.
"A keyboard, how quaint".
Time is what keeps everything from happening all at once.
Code.org has a whole curriculum for kids.
IMO while you can teach just about anyone the basics of programming, few will be any good at it professionally (same as writing vs being an author). That said, planting seeds early is good even if only a few will sprout. I'll save the "should we teach" for another post.
I was self taught using a pair of QBasic reference manuals. In those early days the most important thing in a language was how easy it was to draw pixels on a screen (2 loc). It was very important to me to be able to see the fruit of my code as quickly as possible. I didn't learn keywords by book chapter, but in the order I needed to implement the next idea for a program I had (and as a consequence nearly ended up reinventing the call stack with globals & gotos before learning what a subroutine was). Only after I realized I couldn't break .5 fps using QBasic did I switch to c/c++. I suspect javascript is the modern QBasic for much the same reasons. A terrible, but easy, complete, and readily available language. Honestly I would probably recommend javascript, as it removes a lot of issues with toolchain, portability, and has that same short 0 to pixels (via canvas) advantage, without being too far removed from the other big languages.
My point is the language doesn't matter even half as much as your approach. Consider the programs they would like to make first and plan the lessons, subject matter, and assignments around them. If you manage to spark their interest they will probably end up teaching themselves more material then you could hope to cover in the time you have (I essentially went into college knowing the first 2 1/2 courses of material well enough to teach it. Mostly due to a Borland c reference manual, they sure knew how to document in those days).
From what I can see khanacademy has a decent (maybe slightly better than average) series on javascript.
The same way you teach advanced mathematics to a 2 year old: you don't. It's not age appropriate for most (I say most because there are always exceptions) children at that age. Their reasoning simply hasn't developed to a level where they can manage logic to that extent. Of course I'm sure a highly simplified "language" that performs simple tasks could be used successfully but that has about as much to do with real programming as doing a jigsaw puzzle has to do with building a skyscraper.
Seven puppies were harmed during the making of this post.
I remember the early 80s learning BASIC from those Usborne game books.
Really simple text console games that introduced concepts like variables, loops, and conditionals within programs that mostly fit into 1K or less than 8K at least.
Of course, you could simply translate those programs into something like Python these days and have some fun while learning to program.
Probably the hardest thing to do when starting out on Python is to teach them input sanitising. Everything else is fairly standard.
READY.
PRINT ""+-0
I see in previous comments that Logo and various other robots are recommended and I heartily agree that it's a practical approach that vividly shows how to program responses to different inputs and how to manage and display data.
Our Jade Robot (shameless plug: https://www.mimetics.ca/ starts with an introduction to robotics using the on board UI and then allows the students to move on to our version of Scratch (which is a subset that tries to maintain basic structured, procedural programming statements). Since you're setting a limit on Grade 6, we follow the Ontario Ministry of Education guidelines for the "Earth and Space Science" strand, with the culminating project being using the Jade Robot to mimic Curiosity on Mars with it's built-in spectrometer to find "Water" on a simulated Martian landscape. Along the way, we do multiple activities and challenges designed to teach basic programming skills and understand different concepts.
Whatever you do, the buzzwords that educators are looking for are "cross-curricular", which means involving other class materials in the program (Math, Art, English is what we strive to hit), and "Inquiry based learning" which we interpret to mean that the students need to think through their own solutions and research how they get there.
Mimetics Inc. Twitter
For a more PC based learning tool, we use to use Apple Logo. The Turtle Logo lives on as a free web site: https://turtleacademy.com/play...
For more advanced youth, an Ardruino kit may work well. https://www.arduino.cc/
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
Since the foundation of Object Oriented Perl is the "bless()" command, this is clearly the correct language for religious schools.
The real "Libtards" are the Libertarians!
Give them access to computers and languages. If they want to program they will.
Explain how the founding fathers were racist like drumpf. Give them extra credit for being vandals. Find a place where people are doing something productive, take the entire classroom with you, and go limp.
I started learning (teaching myself) AppleSoft BASIC when I was about 9. Before that, we used LOGO on TI-99s (I think). I wrote a database program (in BASIC, and it sucked, but it worked) in 7th grade.
geek. lawyer.
Apple's Swift Playgrounds is very good - IF you have recent iPads in play already. They have a fair bit of course material fully developed, and an interactive coding environment that has some similarities to BASIC and Logo and Karel the Robot ( in the sense that you can run and go and see the outcome visually immediately). It also interfaces into robots like Lego Mindstorms, Sphereo Spark etc.
The current beta can support stuff from modular drop graphical components stuff moving a "character" about aworld, all the way through more conventional coding paradigms, to augemented reality and robot/sensor integration - its really not bad.
Yet another kids' programming language, from yet another school, Carnegie Mellon, is Alice.
(T>t && O(n)--) == sqrt(666)
Just turn programming itself into a game, and the ones that show interest can learn more if they want.
This has come up before and I recommended assembler. (And when I posted my recommendation before, I got some people posting their disagreement in followups. But their arguments were not enough to make me change my mind.)
I learned a few higher level languages before I got exposed to assembler, but it was only with assembler that some things about programming really made sense. Assembler de-mystifies computers.
It doesn't have to be a fancy machine. Use an emulator for a very basic machine and then add features. I learned it in a hardware class and the first version of our computer didn't have an index register. We had to use self-modifying code to process a list. Only then did an index register get added to the machine.
Also, it can be made into a kind of game, maybe including logic circuitry. When this came up in the past, some people posted about learning logic circuits from some children's game in the 1980s (I think that was the decade).
In theory, theory and practice are the same; in practice they're different. (Yogi Berra & A. Einstein)
As I used to tell secondary students who visited our CS program: The most important programming language is English--they did not like to hear that. Mathematics. Science. Four high-school years of all three. Same for younger students. Learn to communicate, learn quantitative thinking.
Programming languages come and go. Once we (college-level CS educators) have them, we teach them a couple of currently useful programming languages as mechanisms to talk with them about real CS. We teach them in a "principles of programming languages" class to know about imperative, object-oriented, functional, etc. paradigms and their relative utilities, and How To Learn A Programming Language.
Our goal is always to produce graduates with confidence and perspective about programming languages. When a benighted interviewer says, "In our shop we program in Framisch," our people respond "Fine, give me learning resources. I'll be competent in four weeks, and expert in eight."
Code Monkey College will never offer the skills for a lifelong career.
In the 80's I was altering prewritten games in BASIC on the TRS-80 as well as the Apple ii.
We were given working, proofread code on paper, initially, then a starting program with the desired alterations and what the effects should be, then a starting program and the desired effects and we had to alter the code ourselves.
There were dozens of games that were used. I am sure copies of these old workbooks and examples are available somewhere online. It would be a good stepping off point for making something nicer in modern languages.
Laugh, it's good for you!
At ages 8-12 teach basic logic (Logo was good for this)
IE: If this then that
You can then add loops , very basic variable usage and simple Boolean logic
The important thing is to teach them how to think in a structured way and basic problem solving
IE: If this problem is too big to handle chop it in half; Rinse repeat until you have a chunk you can handle
Then show how most of these sub-chunks are actually the same thing and segue into functions
Build the ideas and structures up organically
As mentioned above some basics on how computers actually work will be extreamly valuable to the kids later on
Ben Eater is running a video series on builing up a basic CPU from simple logic (YouTube)
Pointers and finite state machines are probably too heavy weight at that age
Getting hung up on C vs JavaScript vs Python vs Java vs whatever is silly
The chances are that the above languages will be relevant in 20 years is exceedingly low
Help! help!, the termites are eating my DRAM!!!
ScraM is a great visual programming tool for Minecraft.
http://scram.frequal.com/scram
Via drag-and-drop using the visual designer, kids can make mods for Minecraft. The mods can be as simple as a couple of lines, or a complete minigame.
Best of all, ScraM features a MORA architecture -- Mod Once, Run Anywhere. ScraM mods work unchanged on PC and Pocket Edition!
There are already several minigames available to play and remix, so it is easy to get started.
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
Something interesting to keep their attention. Logic is based on 0 true and false. 10 year olds can understand that. /Half the comments here are by political and luddite trolls. Shitposting has always been on Slashdot but Jesus has the quality gone down lately.
When I was in school kids learned logo or BASIC.
Is that not OK today?
Then just teach them C? What is there left to discuss?
They had a LOGO class in the childcare wing of the local community college. We built robots out of boxes, got to do small programs with a single really dumb robot to move around, and learn to do logo programming (I can't remember if it was on the bot or separately.)
In fact it was the only programming language other than basic that made sense to me for a number of years, since it was so straightforward to pick up.
Sadly without easy access to a compiler/runtime (I can't remember what it was selling for or even if it was available at that point for whatever computer system I had), I ended up forgetting everything I learned within a few months, and then struggled with other programming languages for the next couple years, not really learning anything until I got into linux in the mid 90s. Dealing with DOS and any of the C compilers of that era was a lesson in pain unless you were coming from assembly with a knowledge of the segmentation models and other aspects, unlike many of the other languages available at the time.
Kids need to be introduced to coding as a tool, like a robot, that fills actual gaps a student might have or solves real-world problem (i.e. calculate a mathematical series to verify the math homework, scrape all Magic card images from a website into a folder for local printing, control an LED strip to implement a "pixel-stick" for photography). Many of the "Scratch"y coding tutorials are pretty useless when viewed from this angle, whereas robotics is much better at creating substance one can connect to (i.e. programming bugs can have physical outcomes).
Teach them thru something they like. Little games, like pong, get them thinking about edge cases. Literally, ask them what SHOULD happen when the ball hits the edge. Continue to ask questions. They are children, so make it fun by bringing in a tennis ball and some building blocks and demonstrate the simple mechanics. This introduces cause and effect: ball hits paddle or wall and bounces. I like to lead this into if-then satements. Anyways, this has been really sucessful for me thru graphical programming applications like multimedia fusion or scratch.
assembler really is a very poor tool to learn at that age unless the kids are seeking to learn, you just won't get the mental buyin from 8-12 year olds. something like Lego mindstorm is much more likely to get successful engagement.
My kid learned to count at 2 from 0 to 10, and learned the alphabet... You're thinking 8 and they're having trouble?
Programming at 8 is fine, that's when I took out a book at the library about how to use QBASIC's PRINT, CLEAR, and FOR ... NEXT to do simple animations of like 2 frames of an ascii bat flying for 5 seconds, as well as PRINT, INPUT, and GOTO to make an adventure. It is not that hard to just do the basic concept.
After that LOCATE Y,X was the next thing I learned. Every small thing was a whole new world at that age.
Maybe not for everyone, but neither is a lot of stuff, in grade school they teach you a bit of everything to open you to what's available. 2 months on this subject with an option to do more seems OK.
First, please try not to call it "coding". "Coding" is what the people who watch lynda.com and instructables to learn PHP/Python/Java call the what they do.
Let's call it "computer science" or "programming" instead.
Then lay out a lesson plan that tries to keep it simple, starting with the basics--discuss a problem (or goal), plan (write out steps to achieve goal), then teach the programming involved in accomplishing each step.
Think, plan, do, as it were.
Anyone I've ever heard refer to themselves as a coder is generally a very poor programmer. Their biggest challenge is identifying and describing the problem. They somehow missed that actually writing a functional program/script/site is really pretty easy after you get through the problem determination and planning stages. They just start banging on the keyboard and eventually come out with something that kinda works.
As another poster earlier said, teach them logic, critical thinking, and basic math, then everything else is easy.
Python is today's BASIC/PASCAL.
Nonsense. BASIC is Beginner's All-Purpose Symbolic Instruction Code in which whitespace is not part of the syntax in the pedantic way Python's designer masturbated over "enforced structure." Pascal has a few issues of its own in as much as their is some overhead code - scaffolding they call it these days - before you can even write a simple "Hello World" programme. BASIC remains the excellent introductory computer programming language; there are even BASIC interpreters written in Javascript for ease of availability. Recently, I used BASIC to solve a DNA programming challenge; standard BASIC not the abomination known as Microsoft Visual Basic and its ilk.
How would you go about teaching 8 to 12 year olds about being Civil Engineers?
Jumping right into teaching them engineering statics and dynamics without the benefits of all the backing math?
What about teaching them to Doctor? Should you make it easy for them by diving immediately into pharmacology?
I understand that you're trying to engage them, using the things that they're currently obsessed with, but it will be greatly to their long-term benefit if you don't skip over the required basics to get to the "fun" part. Concentrate instead on problem solving and being able to communicate clearly with their peers. These are applicable to any endeavor they will pursue throughout the rest of their lives, and the areas in which, sadly, most people don't do well.
Do some physical projects with them, simple logic gates, flip flops, adders, those are fun too and you don't need to explain code syntax, you can dive directly into addressing. I think I would have liked that as a kid. The way I got into it was because my grandmother bought me an adventure book, where to progress through the book I had to solve puzzles and write algorithms as code and debug through input/output on paper to decode parts of pages, next page jumps, things like that. It was good but I think I would have enjoyed building some simple logic stuff from simplest parts as well.
You can't handle the truth.
The answer is: their own native language. Follow that with the national language of the country they live in.
Once they have those off, pat then start to teach how to organise their thoughts and the order of doing things, the basics of logic, the concept of "if ... then ... else". The concepts of repetition. Introduce the idea of data - constants, variables.
Hopefully by the time they leave school at 18, they will be ready to start learning programming languages.
But the idea of "coding" is merely one of writing down how you wish a task to be performed. The linguistic part of that is different from the "design" element. There is no point trying to teach the HOW of writing a program until the children have some clue about WHAT they want it to do. And before they get to that point, they need the analytical skills to know where they are starting, where they want their program to end up and how to get there.
But merely to teach some syntax, style and rules without an understanding of why that is needed presupposes a lot and all those tacit assumptions (that the author seems to have) will leave the kids floundering.
The analytical part is a life-skill. Learning how to write that in a computer language needs to build on that foundation. Don't put the cart before the horse.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
Why teach them to code when management prefers cheap bad Programmers from whatever country pays with the smaller bowl of rice on that day?
I learned BASIC when I was in school as a youngling.
It's not the best, but it is BASIC and fairly easy to start learning with.
Trouble with this is, the more complicated the programming language, the harder is it for young minds to grasp. BASIC was rather intended toward beginners to start from.
Would probably be wise to offer that on a very simple computer, because simple computer means easier to understand and program. Along the lines of the dated C64 level of computer shined in this role in it's day, and could again. Or something similarly simple.
Even the simplest programming language on any mature operating system are just going to be way to much to expect a young mind to learn, start small, work your way up.
That's my 2 cents.
For the very young. Start with LOGO as some other posters said. This will teach them to think programaticaly structuraly, and some constructs like loops.
Then move them to Swift PLAYGROUND as soon as they reach a propper age to understand it. not Swift propper, but swift playground.
After swift playground is mastered, things become murkier. Move them to an interpreted language, that has as little scaffolding as possible. Perhaps something vissual where they can plug modules graphicaly in a GUI/IDE and then program the behaviour of the modules as needed be.
Then, finaly, in the latter years of high-school, move them to some real programming language with real IDE. Preferably something usseful for the future. Perhaps Ansi-C or Java, or Python....
*** Suerte a todos y Feliz dia!
Hands-on familiarity with toys built from a small number of similar components is invaluable. I'm not speaking of the completely specified, every detail spelled out Lego sets. I'm speaking of a big box of toys that is large enough to support some basic, well specified models but allows expansion to other models and other images. Learning that the same blocks can be used for several distinct complex structures is valuable. Learning that one can expand those simple, identical components into a more customized or sophisticated model is an invaluable lesson that many people who "study computers" never learned well.
...as most cannot unfortunately these days. Those that like computers will seek out programming electives in middle/high school.
Here in Japan they're doing Scratch and then roll into samples in 8 different languages (basically hello world with a loop and some variables) in middle school.
My son however did a scratch book when he was ~7 and did some Arduino programming in that Arduino flavoured C in a robotics course which he's still doing (he's 10), but we're doing some things together in C because of that. I had originally thought about Ruby (because I like it and it's clean) or Python (because there are tons of ways to use it for beginners, like MineCraft scripting), but he's handling C just fine.
Now, what would I recommend for a class of students? Honestly I'm not sure Scratch is better at getting the concepts of program flow than flow charts with stencil templates, I actually think flow charts would make more sense. Once they get the concept of variables and loops look for something simple and visual or something they know and can see immediate results, like that MineCraft and Python setup or maybe even go old school and grab that demo where you move the robot around. Just try not to do the whole think in Scratch, as I think that past a point forcing that visual representation is detrimental and could actually turn off some students who would be into actual programming.
I can't recommend scratch highly enough. https://scratch.mit.edu/ is great. You can do some pretty neat things with it. Here are some projects you can work through http://projects.codeclubworld....
I tried to teach some Javascript game programming to a teen, but the lack of geometry skills (e.g. sin(), cos()) and physics ( e.g. d=at^2/2) made it tough going to fire cannonballs around. There is most likely a library that could hide it all, but why would you?
how do you teach schoolchildren carpentry, our plumbing. Programming is a trade. Sure you expose them to the trades (shop class, for example), but you don't aim to make them tradesman. Expose, don't "teach".
But only the ones who are interested will really learn.
This applies to pretty much every subject, not just programming.
You can point your browser at this site: PyPyjs.org
That will give you an interactive shell where you can program Python. Copy in a Python Turtle script.
Let the kids play with it.
There are a few other sites like the above, like Repl.it and Trinket.io
I'm sure there are others because PyPyjs is open source and anybody can run it on their site.
It's not a full solution by any stretch of the imagination, but if you wanted an entertaining introduction to programming, you could do worse than having them play Human Resources Machine for a while.
It's cute, it's entertaining, and it teaches a simplified version of assembly language (!) programming in such a way that even non-programmers can see how the program's source code interacts with the computer to produce desired (or not-so-desired) behavior.
I don't care if it's 90,000 hectares. That lake was not my doing.
Just take the kids down to the unemployment office. If they're Americans and they want to be programmers, they'll be spending a lot of time there.
You start by teaching the kids critical thinking and logical problem-solving. Including things like inductive reasoning so they can develop general approaches to solving classes of problems based on the patterns found in a collection of solutions to specific problems. You teach them to trust their own reasoning unless and until someone explains exactly where and how their reasoning is wrong. You teach them that there are usually multiple solutions to any given problem, how to recognize the trade-offs made in the different solutions and how to select the best set of trade-offs for their situation.
Once they've learned that, then you introduce the idea of formal languages for expressing how to solve a problem and how to use those languages to write computer programs.
Unfortunately this'll never happen, because it'll mean raising a generation of children who'll think for themselves and question authority and that's the last thing the professional educators (which is completely distinct from "teacher") want to have to deal with. Ditto the Powers That Be in the various levels of government. Which means we might as well discard the whole idea of teaching computer programming to everyone.
In the past, what percentage of people were mathematicians?
Today, we have Jupyter notebooks online where we can see Python code interspersed with write-ups of Data Scientists' thoughts on what they're doing.
Programming on a computer is a way of organizing thoughts, and it's pretty important.
I wrote dozens of VB6 utility programs in high school. It was fun, and the built in help documentation made it easy to be self taught. .exe files, and today they live on a portable flash drive along with a copy of the VB runtime dll.
Some were straight up console apps, but most had a full Windows UI because it was so quick and easy to implement.
After they were tested, I let VB6 compile them to
I still use them almost every week on Windows machines that don't even have VB installed.
Sure VB had problems, but I have never seen another development system that has this much to offer, is so easy to learn and is genuinely useful.
Here's how I do it. for the past few years, I think 8 or so, I take my bonus check and buy 80% raspberry Pis, 20% add ons.
Then I find a high school and middle school technology teacher, and give them the equipment. Then I schedule 3 days of vacation to go sit with the kids. Not all at once, but on the day they are given out, then half way through the school year, then a few weeks before the end of school. If the students want to come to my place for brain storming, they are welcome as long as one of their parents come too. I generally have two a month, on a Saturday or Sunday, and it generally lasts about 10 hours. NB: That's 10 hours here, not working. We also do things like BBQ or cook - which I encourage them to learn as well.
I worked with one of the recipients of this for 2 years. She recently left for a better offer. So empirical and limited evidence show this is working to an extent.
Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
You can't force it down their throats & for any parents attempting to live THEIR failed dreams thru their child? YOU need to GROW UP & respect that the child is NOT YOU (or more importantly YOUR redemption for YOUR FAILURES).
* Understand? Good...
(You can't make someone what they do NOT want to be).
For parents that understand this? Please, disregard.
APK
P.S.=> However, IF you see a child wants to learn the art & science of computing? Light a match & pour the gasoline of support on it (otherwise? Fuck off)... apk
Which language you teach depends on what your goal at the completion of the course is.
You say programming, but programming what?
I've started programming at the age of 6 (Started school at 5, so by the time I could read the alphabet). ...
At the time, BASIC was the way to go. I did that two years before going assembly followed by C
Nowadays BASIC isn't very popular anymore but there are several easy languages available.
The chosen language should garbage collection, to avoid memory management complexity.
As much as I dislike Python for historical and technical reasons, it's kind of the new BASIC so it may suit your needs.
JavaScript is very easy too and can be tested with any web browser worth its salt.
Swift would also be a good choice if it was not bound to Apple so much.
I was just talking to an HR professional. She said that the traits that are in most short supply are focus and social skills.
CS Circles (cscircles.cemc.uwaterloo.ca) is a pretty good beginner site based on problem-solving, it teaches Python and assumes no prior experience. Students can ask their own teachers questions inside of the site.
So she doesn't do the actual work, and in any case brought up skills that are only useful in concert.
I have 3 kids, ages 7, 10, 4. All love Scratch. The 10yo is doing Python. All have tried some robotics programming (Lego WeDo / Mindstorms and Edison).
Whatever you do, remember that most of the kids are NOT nerds.
Most programming textbooks and advice is written by nerds to nerds.
For not-nerds, this is ultimately boring. They won't care about matrix multiplication, sorting algoritms, finding primes etc.
But everyones loves graphics.
The first tasks should be graphical and/or game-like, with instant feedback and a fun factor.
Let your kids draw boucing bubbles or a floating flower with changing colours.
Let them design some simplest games - whack-a-mole, tic-tac-toe, hangman, etc.
Thus you will need a language with an easy graphics interface. :)
Scratch is great for the first steps.
From there... let us know
If you don't have a teacher who can program don't even try. Programming, more than any other hard skill I know, takes a certain aptitude. You can fake it in high school math, you can even fake your lack of aptitude in most university science, but not programming. There are too many ways to write the correct program to even a simple problem for a person to memorize their way through. A teacher who doesn't have a good understanding of all the different ways a child might do something is going to discourage the best students.
The subject pretty well summarizes what I believe needs to happen. I still remember games are frankly how even I got into it. Pavlovian allusions aside, children are indeed similar to dogs, in regards to anything they like - be it food, games, money, sports, etc. Also, for a long time, I was pro including-it-in-the-standard-curriculum, but I've since come to realize some children simply do not want to learn about it, and forcing them to produces undesirable effects, and causes them to view it negatively.
You may want to check the micro:bit platform http://microbit.org/
Any time children are being taught, concrete examples are what works best. Simulate the activities of a CPU using the students themselves. No 'Language' is needed.
Children are flipping LEARNING MACHINES! The ONLY thing that matters is that they are engaged. Forcing them to do boring shit for hours because someone on the internet thought it would be a good idea is a great way to teach them nothing except dread of anything associated with computers, education and learning in general.
1) Find out WHAT THEY WANT TO CREATE.
2) Work out the simplest version of WHAT THEY WANT TO CREATE.
3) Work out which tools are easiest for creating the simplest version of WHAT THEY WANT TO CREATE.
4) Scaffold them until they can use the easiest tools to create the simplest version of WHAT THEY WANT TO CREATE using the easiest tools.
5) Scaffold them further so they reach the limitations of the easiest tools in creating a more realised version of WHAT THEY WANT TO CREATE.
6) Work out what the best tools are for creating WHAT THEY WANT TO CREATE.
7) Scaffold them further so they can use the best tools to create a more fully realised version of WHAT THEY WANT TO CREATE.
It's ok if you don't get to step 5 or beyond, but you shouldn't skip steps.
If the answer to either is "no", then the answer is "not at all".
Sorry to say so, but your question sounds like "I want my kids to become what I want them to be, so how do I make them?".
We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
Do what my dad did: Let the kid read the book about C programming that you have sitting on your shelf. But make sure that their 80386 computer has Internet connectivity.
Lightbot is an excellent game for children to be introduced to programming. It works on any age, from primary to highschool. Unfortunately I couldn't find an online version without flash.
Then use it as a learning opportunity to teach why that symbol is bad and have them put extra steps to make a house windows or something else.
Most kids (and adults) don't really get why these symbols are so bad.
Like the nooce and other thing they are used as a threat to mark Teratory saying we don't want other people here and will hurt anyone diffferent.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
As you cannot teach calculus to them.
You need to build up knowledge from zero.
Symbolic math is at the base of programming, so is some knowledge of computer architecture (think about addresses/pointers or memory alignment).
No, simply you cannot.
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
What's the shortest LOGO program to draw a swastika?
There are some very nice games that require/teach programming skills. You can check out virtually every game by Zachtronics.
I have used Tynker with my son. Block code language with lots of teaching exercises. Also includes a Minecraft modding course which is what really sold it to him.
I believe (not involved with) "CoderDojo" is very good, Start a Dojo and use the curriculum and resources. Its aimed at the 7 to 17 age groups.
Blurb below
"The CoderDojo movement believes that an understanding of programming languages is increasingly important in the modern world, that it’s both better and easier to learn these skills early, and that nobody should be denied the opportunity to do so.To that end, we’ve built a global network of free, volunteer-led, community-based programming clubs for young people. Anyone aged seven to seventeen can visit a Dojo where they can learn to code, build a website, create an app or a game, and explore technology in an informal, creative, and social environment."
This question has been asked so often here, I start to think that it is not possible, otherwise you could have used one of the many ideas that has been proposed in the past.
I think everything has been proposed, except perhaps to hit them with some starter cables if they make errors. (Don't do that. It will only work in the short term.)
So what has been tried so far and what is the expected result? How did YOU get into it and how did others you know get into it?
Don't fight for your country, if your country does not fight for you.
repeat 2[fd 5 rt 90 fd 10 lt 90 fd 5 lt 90 pu fd 10 rt 180 pd]
I'm a huge fan of https://codecombat.com/ for teaching my son to code, you can pick from python or javascript and possibly a few others. There's an RPG version for home players, and a structured lesson plan for use in a classroom that you can buy.
Try Colobot. It's a simple game where you program robots in a C++/Java-like language to colonize new planets.
I believe (not involved with) "CoderDojo" is very good. Start a Dojo and use the curriculum and resources.
Blurb below
"The CoderDojo movement believes that an understanding of programming languages is increasingly important in the modern world, that it’s both better and easier to learn these skills early, and that nobody should be denied the opportunity to do so.To that end, we’ve built a global network of free, volunteer-led, community-based programming clubs for young people. Anyone aged seven to seventeen can visit a Dojo where they can learn to code, build a website, create an app or a game, and explore technology in an informal, creative, and social environment."
SHOULD we teach programming to schoolchildren?
You don't say, but I assume (given the framing of the question) that you are a teacher.
I started when I was 9 on a BBC Micro learning Basic. That was great for me, I enjoyed it. That experience is what made me become a programmer. I was passionate for it though. You will not get the same results from someone that doesn't love it, at that age.
My 13 year old was interested after watching me program at home. I spent some time with him seeing if he would enjoy it. He noped out fairly quickly. It isn't for everyone.
Instead of blanket teaching everyone coding, give them the opportunity to learn. If they show interest in it, perhaps let the parents know? The parents should support them with it from that point ideally. At that age, kids should be learning the important foundational education that backs everything up. Maths, science, language.
Android Software Engineer
They did this at my daughter's school. There is also ClickTeam Fusion as well.
Hopscotch
ClickTeam Fusion
Keep in mind, these are not programming languages but with Hopscotch for example it gets kids familiar with programming concepts like variables, looping and flow control in a fun way.
We'll make great pets
No, you teach them the symbol's history, and that context is important. A bunch of dead nazis and one Austrian do not override the thousands of years of history and the billions of Asians who used, use, and understand the symbol's actual meaning. Don't be a bigot.
I started to learn programming when I was 13, with a book entitled "BASIC for children"... which was recommended by the authors for children from 6 up.
It uses stepped lesson plans and custom-designed language to make progression like DuoLingo for programming. Have used it in the 8-10 bracket, but sure the older children would be fine with it.
That will always get their attention. I feel Minecraft has created a number of programmers that were never interested in the subject. As they wish to do more, they learn on their own and seek out formal training in their secondary education. Kids these days want to see a result where as rote traditional programming classes are far more abstracted from the end result. Generally if they see the mountain, they will want to climb it.
I don't read AC
https://github.com/HollyAdele/awesome-programming-for-kids
and
https://github.com/yrgo/awesome-eg
Regular programming:
Editor
CLI
Python
What does a computer actually do?
What's this "programming" thing everyone is talking about?
What is a variable?
What is a value?
What is a comparsion?
What is an assignment?
What is a condition?
What is a loop?
Accelerated Programming:
How do I filter text?
Regular expressions
How to I save a file?
Let's process some text.
How to I draw a colored block on the screen?
How do I play a sound?
Let's build Tetris/Snake/Whatever.
You're welcome. Glad I could help.
We suffer more in our imagination than in reality. - Seneca
The computer is one of the most important tools of our era and you cannot fully utilize it without being a programmer. It's useful even to people who will never work in the field, and a basic grounding in it assists with the development of logical reasoning and understanding the operation of algorithms. Expecting people to become professional programmers is unrealistic. Expecting people to become familiar with a tool that literally everyone uses is basic, and we should expect it from our education system.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Context is key, if you are in a western culture. You need to explain the current meaning. The original meaning or the meaning in a different culture, is besides the point.
Most symbols good and bad were made from similar symbols and its context has been changed on how it has been used in that culture.
In a few hundred years, this symbol may have a different meaning, and may be acceptable, as it has a positive context. But now it isn't and students need to learn that, and know why it is wrong to show it. Beyond you are a bad kid for showing this symbol that you have a vague understanding what it means that happened to be an easy to program fractal.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
Having taught programming at the local library summer program, I can say that yes you can teach kids as young as 8 to program but.... Children have different attention spans, abilities and interests. Some few children have the self discipline to work through problems with a text based programming language but most do not. I used Javascirpt because of the lower barrier to entry, a web browser and text editor was available on the library computer though compiles were not. But Javascript is a tough language, yes really it is even using just a small subset (functions, if, for, variables, string methods). One child gave up because after struggling with the text editor. There is a poster who remembers Logo and perhaps Logo would have helped I dunno. I had one hour class plans because I was aiming more for the 12yr old set but the class ended up being a bunch of librarians and children younger than 8. Librarians have epic attention spans. 8-10yr olds have attention spans closer to 20min. How do you teach a for loop in 20min and keep it fun? Because remember kids have interests. I started out saying the thing we were working towards was a hangman game which got them excited but you have to keep it exciting even as you go through the things like loops and conditionals which can seem boring and dry especially if you spend to long between fun things.
If I do this over again I want to add some things like "human programming"... the library has a checker board patio and I'll have students try to guide each other around courses using limited commands. And as a rain plan have blocks that they can have others build things with but again only be able to give limited commands. I would like to try a graphical programing language (drag drop puzzle pieces to program style) for introducing loops and conditionals even if I keep Javascript for the end project. A graphical programming language that "compiles" or otherwise translates to Javascript would be ideal. And I will add more fun intermediate challenges rather than having just one big end goal.
Remember tough, programming is not just about computers. You should make it more clear that programming is breaking down problems into simple solvable steps. The scientific method and recipes are as much programs as minecraft.
If you sanely use 4 spaces or 1 tab set to 4 spaces with Python you better make sure not to mix and match or Python will halt with an error.
Show them Minecraft, then show them Unity3d with Playmaker.
As someone with 20+ years of teaching programming to high school students, I appreciate reading all of the responses. Of the many responses, I did not see any that recommended Visual Studio. That is very informative as it is what many of my colleagues teach. Many of the remaining languages presented are taught in my classroom.
My approach is to teach logical reasoning first, followed by Logo (KTurtle), BASH scripting, and GNU C/C++. We have also touched on Assembly, Scratch, Java, Python, Robot C, NXC, Lego Mindstorms, TI Basic, etc. over the years depending on the need. We even write sophisticated formulas to make spreadsheets do odd things such as algebraic binary conversion, and amortization.
This is based on the philosophy that everything with a chip is programmable, logic is universal and language independent, and learning the syntax of C/C++ translates well into other languages, such as Java and Python.
Finally, using Linux gives students a deeper understanding of the inner workings of an operating system. For instance, when writing sort programs, we rename and replace /usr/bin/sort. We also build Gentoo to learn about partitioning, formatting, tarballs, compiling, kernels, GRUB, LFS, the boot process, etc.
While not all students continue in IT, those that do often appreciate the unique experience. The bottom line is that they have little to no competition for the positions that they apply for, enjoy job stability with a high wage, and secure a path to advancement.
I had the TRS-80 Color Edition in the late 80's. When I found an old Radio Shack cassette player I could save my programs to I was overjoyed.
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
The teaching part is more important than the choice of language. First, pair up the kids. The best pairings will be a smart one paired with a dumb one. Both will learn faster. Second, find projects that are tangible or tactile in some way, such as the LOGO robot. One low-cost possibility would be to start with some simple open-source game and have them review the code and write comments. Then have the kids mess with the physics/algorithms like rebound rate, or friction, or gate sizes. Or maybe have them create a god mode. There are literally dozens of assignments that can be created that make them read the code, understand it and then test modifications. Observe, analyze, act. Pretty straightforward.
MicroBit is an inexpensive little computer board which has sensors and leds.
It has several programming languages including a graphical blocks JavaScript and Python.
It's designed for learning.
microbit.org
I don't read your sig. Why are you reading mine?
But I am too fucking lazy to google it myself, and want you to tell me which one's are best, but not only that, have websites that will teach them as well becuase I cant be assed to do that either
wtf
Teach coding to the fifth-graders that seem most interested in STEM.
Offer little perks and incentives to progress, such as nice laptops, wholesome snacks, and extra recess time.
Continue this through the eighth grade.
Then halfway thru the school year, take students from the school on the other side of town, tell your 8th graders they must teach them everything they know, and take away the perks.
Lesson complete.
Why is this question flamebait? Has the question "does everyone need to learn to program?" been aswered somewhere and it's a resounding yes!
Get two motors and a buggy. The lego ones will do if nothing else. Hook it up to a PC. A raspberry pi is a cheap, fast way. Write the base program with commands to send code to the buggy to make it go forwards, go backwards, and examples for turning. So that a program can be run to drive the buggy forward 10cm, left 90 degrees left, then forward 10 centermeters.
Make another 3.
Get some cardboard. Draw a back snail maze so the buggy has lots of room to get into the center.
Buy some chocolates, chips, and have 4 $5 bills handy.
Make a second maze that is more complicated.
Make a third maze which has 45 degree angles to get to the center.
Test the gear, make sure it works. Have 2 spare buggies available.
Plan and prepare.
Teach the kids the basics of how to win the mazes. They will be interested then bored.
Show them the buggys
Show them the code. Run the base program of 10cm forward, 90 degree turn, 10 cm forward.
Have them use the buggies for 30mins on the floor.
Then give them the first challenge. First group to get their buggy to the center of the maze wins. Make sure this can be done by copy pasting existing code.
Then give them the second challenge. To win this one they will need to change the first program maths to different values to get to the center.
Make the third challenge a lunch time extra time choose your own group special with a cash reward. Make sure they eat their lunch.
We need more help programming an industry because of people with your attitude. That is what is with it.
Then they can see what is required.
Between the ages of 8-12, if they are ever going to be programmers, they should be approaching it themselves, asking questions, reading books. For 99.999% of the populace at that age, programming isn't going to be very interesting, let alone able to adequately grasp. Instead, teach them the maths and logical analysis they'd need to become knowledgeable programmers down the line. Hell, improved math and logic would be more beneficial to all kids rather than learning bad programming techniques in a half-assed "kid-ified" language.
Give it as an option for those in high school, til then, the ones that want to learn will do so regardless of age, the others, like the majority of adults, would just be dangerously inept enough to muck up a system they are using.
Stay away from IDEs
Give the students templates on a console terminal. Show students how to use the "cmd" feature in Windows. Install a programmer's editor on student laptops.
Ask the students to vary prototypes and examples to create new solutions to new problems.
Teach by doing. Teach by example. Extend the examples.
Introduce students to Python. Have the school install Python on all student laptops.
Create thousands of Youtube videos showing examples of solutions to programming problems.
Work on improving rosettacode.org so that it is complete, rich with examples, and thorough. Add millions of problems, algorithms, and examples to Rosetta Code.
I'd start easy with things like tables or chairs. Then move onto more complicated things like the inside of a toilet.
That way you get all your school's carpentry done while teaching students to follow syntax exactly, be systematic, and be patient.
For their first project give them the complete source code for a simply game.
For their second project, ask them to modify the source in a general way such as "2 more lives" etc... but don't tell them what line(s) to modify.
For their third project, ask them to create their own game by fully modifying the source and creating new graphics
Done. Now they are hooked on programming for life.
Everybody is entitled to an opinion but in science, including computer science education, there can be evidence that some things really do work. In the context of the Scalable Game Design project we have explored and evaluated a strategy for teacher professional development. As far as I can tell this is the largest study of its kind:
https://sgd.cs.colorado.edu/wiki/images/4/41/TOCE_2015_Repenning.pdf
Abstract: An educated citizenry that participates in and contributes to Science Technology Engineering and Mathematics innovation in the 21st century will require broad literacy and skills in computer science. School systems will need to give increased attention to opportunities for students to engage in computational thinking and ways to promote a deeper understanding of how technologies and software are used as design tools. However, K-12 students in the United States are facing a pipeline for computer science education that is broken. In response to this problem we have developed the Scalable Game Design curriculum based on a strategy to integrate computer science education into the regular school curriculum. This strategy includes opportunities for students to design and program games and Science Technology Engineering and Mathematics simulations. An approach called Computational Thinking Pattern Analysis has been developed to measure and correlate computational thinking skills relevant to game design and simulations. Results from a study with over 10,000 students demonstrate rapid adoption of this curriculum by teachers from multiple disciplines, high student motivation, high levels of participation by women and interest regardless of demographic background.
Get 'em an Adruino and get 'em started with something like C. I know that sounds "hard" compared to picking up Python, but they'd get to really do things immediately. And then if they're destined to become "real" programmers, it's a better start, based on the you can't dig upwards principle. Low level languages encourage programmers to learn more, high level languages do not.
Originally, comming from cultures from the east, the symbol was a symbol of luck.
Representing the wheel of the sun, and hence the wheel of time.
However in other cultures it was used as symbol for a wolf trap.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
No, I don't mean 'get them the basics', I mean the programming language BASIC. Not 'Visual BASIC' or anything even that fancy; I mean plain-old, plain-text interpreted BASIC, with GOTO, GOSUB/RETURN, IF/THEN/ELSE, FOR loops, INPUT, PRINT, and so on. Or has everyone totally forgotten it? Simple, easy to use, no structure required, interpreted so crashing machines is impossible (just don't tell them about PEEK and POKE, initially). If they show any aptitude or interest beyond interpreted BASIC, they'll go looking for it.
The only reason I ever bother to learn to code was to make things that other people could see and use in the real world. That was the carrot, and I gathered the patience to learn for that reason alone.
Kids who want to program want to make things. Better to make things that really run, on browsers, in microcontrollers, or in stand-alone apps, than to use drag-and-drop graphical languages that only run in sandboxes for kids.
I think the idea that "teaching concepts comes before building cool stuff" will cost you a lot of enthusiasm.
Every student needs to learn one compiled language and one scripting language, because they teach 2 different aspects CS, which when you're ready to converge what you've learned, you get a really comprehensive picture. So, teach Python or JavaScript, and C or Java.
And, make real things! It's no fun to spend 16 hours making a sprite travel across the screen in some clunky "language for kids".
Put them in cubicles, give them 5 projects, 30 bugs, a bunch of angry customers and - since they aren't getting paid hourly - make them work weekends "until we are caught up".
Leave me a drop of some sorts and I will try to feed you some information. He's out today taking his class to the eclipse. He teaches a couple of times a week in the mornings at the school where his kids go to. He also teaches music and taught them how to write subroutines using music.
putting the 'B' in LGBTQ+
First two things: 1) Whatever language you teach to an 8 year old will be archaic by the time they reach the workforce 2) As computing power increases, we are moving beyond higher languages, gravitating toward pseudo code. As analogy look at what has happened in the world of Web development. You have the designers and interface folks who drive the development even though behind them are tools or people doing the more technical translation. Similarly, the programmers of the tomorrow may be more software designers (as opposed to developers). Behind them may be p-code compilers written by much more narrowly focused programmers. I think if you are trying to figure out how to teach kids to program, teach them first how to problem solve in a logical. Where programming breaks from most human thought is that essentially computers work in a binary environment (it is either a hot dog or not a hot dog). I liken programming to trying to teach kids law. As integral as it may be to our lives, it is built upon many critical thinking skills that take years to develop. Thought games can teach programming without ever touching a computer. 20 Questions and variations on that are simple, fun, and competitive games perfect for a young classroom. The challenge of teaching real programming to an 8 year old is very few of them can even reasonably grasp natural language grammar. How can you expect kids to tolerate learning the far-less flexible grammars of programming when most grow exasperated with typical English grammar even though it is far more loose? I'd say if you want to go in that direction, start them with simple HTML. That might wet their whistle for more involved exercises (still well short of genuine programming) but far less frustrating. There is a reason why elementary schools focus on creative writing more than grammar and spelling. Focusing on the latter too early will stifle the kids. Similarly throwing kids into real programming too early may stifle many future developers.
All you need are the 3 R's.....everything else you can figure out later and do just fine. Kids don't need an "hour of code" or a "programming club" or such. #oldman
College instructor here. I get engineering students every year - so supposedly some of the brightest minds. The problem I see with them extends down to all students and that is that if they aren't intrigued enough by it, they won't learn it.
That being said, can you get them intrigued with LOGO or ALICE or whatever? Sure, some of them. Will they then make the effort to learn the "hard" stuff - non-visual programming? Mostly, no. A few will. If that's your goal (to get those few) then sure it can be done: Intrigue, guide them to *real* languages, and teach them good habits. Unfortunately this is not a single-year approach and without a multi-year structure you'll lose most of those few you were able to grab.
Finally, there is a maturity that is required of programming. It's the maturity that is seen when a person realizes doing it right is better than doing it fast. Unfortunately, most coders today (amateur, hobbyist, professional) simply lack that maturity. And trying to teach that diminishes the "fun" stuff young coders have time to do. So do you want to teach them to become programmers? Or do you want them to learn how to program? They're not the same goal. If you just want them to learn fundamental logic of coding then keep it fun, keep it visual, and keep it simple. And don't expect them to become CS majors.
I was a schoolchild, arguably (13) when I became self-taught. On mainframes. By stealing the "account cards" out of the garbage at the University computing centre. The problem would have been *stopping* me.
So I would recommend making tools available, and giving demonstrations of what you can do with 10-line and 20-line programs, demonstrate the writing of 5 and 10-line programs, and leave self-teaching materials available. I would make time for it, and provide other things to do - reading and educational toys and art stuff, I guess - for the kids that don't *want* to program. I would repeatedly mention the commercial value of the skill, maybe a talk or two from people who started as kids and made careers of it.
And that's it. No, wait, help available, that too, of course. But no pressure, no lessons, no exams.
I figure about 90% of those who would actually learn programming from ANY lesson plan, no matter how coercive, will learn as much or more from this.
You like it or you don't, I can't recall an exception where somebody learned to like programming, or became a decent programmer without liking it.
I taught BASIC to middle school kids in the 70s. Worked fine with TTY machines and smart kids. Any language works. But you have to have motivated kids. Also, this should be an after-school activity. In-school needs to teach basics, not BASIC.
A lot of us taught ourselves to program. But remember, we didn't just set out to learn a language. At least I didn't. I set out to write a program that did a specific task. It could have been on any platform or language. I wanted to draw some 3D graphics and god dammit, I was going to do it. While the tools at my disposal were my friend's compuAdd 386 and GWBasic, it could be almost anything today. The challenge is coming up with something(s) that will get their interests. Once you do that, then you can proceed to languages and resources. No one will learn if they don't care about what they are doing.
Teach the advanced math needed
What advanced math?
Very very few coders need anything like linear algebra or calculus, let alone any actual higher math.
What math does your everyday programmer need? Arithmetic, a little elementary algebra, sometimes Cartesian coordinates, maybe very very basic recursive function theory.
I can't think of any advanced math needed by most programmers.
However what is important is teaching the meaning of the culture of where the child is residing from.
All this other stuff if it isn't part of your culture would be for a lesson later on. Normally if they are studying the east and they see the symbols you then can explain how they have a different meaning there then they do hear. But for a kid who made offensive symbol, vs. yelling at them or getting them in trouble, it is an opportunity to teach them about why this isn't appropriate.
This nonsense that it means something else in different countries is besides the point. If this was done by a kid of an eastern descent then you may have to explain that in this culture it means something else.
Your attempt to give this kid an excuse to say what he did was fine, and cover it up with trivia is only harmful.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
America has turned on its schools like a pack of rabid dogs. They elect legislatures that are cutting salaries and benefits. Americans are contemptuous of teachers and think they should just be underpaid babysitters. Schools are not quality-minded organizations; they want to hire on the cheap and to provide an "adequate" educational experience. They feature lousy working conditions and paltry salaries. In many states, there are no dependent health benefits for family members of teachers unless they pay hundreds of dollars a month for them. Yep, teaching is no longer a career. It's a gig you do before going to law or medical school.
Companies are having trouble recruiting programmers at $80K/yr. A typical starting salary for a new teacher is under $40K in a lot of states. Many newer teachers must moonlight to make ends meet in addition to the avalanche of off-hours work that is often required. For these reasons, [you've been chopped] I don't think schools will take up teaching programming on a wide scale. This is a not happening. We have a problem, Houston. And no one has the slightest bit of interest in solving it.
As the many suggestions above attest, there are many languages and strategies for teaching children to write software.
The thing about education is that it's supposed to help children to learn stuff that they'll find useful outside of the classroom. If they learn Scratch or Logo, where will they use that? If you want them to learn the more abstract principles of programming, you'll have to explicitly teach those too but that may not transfer well to other programming languages. You see, the thing about learning is that it's very specific, and transfer, i.e. taking knowledge from one instance or domain and using it in another, isn't what most people believe it is. We tend to transfer more abstract, intangible knowledge out of one domain into another in which we're already proficient. In other words we don't magically acquire logical reasoning skills in other domains from learning to think logically about writing code.
See: Schwartz, D. L., Bransford, J. D. and Sears, D. (2005) ‘Efficiency and Innovation in Transfer’, in Transfer of Learning from a Modern Multidisciplinary Perspective, Greenwich, CT, Information Age Publishing, pp. 1–51 [Online]. Available at http://aaalab.stanford.edu/pap...
The current research suggests that learning to write software makes children good at... ...writing software... ...and little else. Any claims about logical thinking, mathematical thinking, etc., or transferable skills or knowledge have yet to be substantiated.
Debate is a form of harassment. Do not question my truth.
If I ever see any substantive evidence that teaching an 8 year old "programming" improves their general life (skills, success, happiness), then I'll revise my opinion that the people who hold the belief that it does are no better than those who believe in astrology or that "education" is the cure-all to get to full, meaningful employment for all. What I'd first like to see is mandatory classes in 1. Cell Phone use, 2. Personal Grooming, 3. Personal Finance, 4. Parenting, 5. Sex Education, 6. Executive Function and time management, 7. Human development, aging and death, 8. Social Relationships and Emotional regulation, to name a few. It makes as much sense to me to teach kids programming, as it does to teach them Latin. Very, very few will ever use it. I've asked several teachers whether they teach youngsters about white slavery, and recruiting tactics and the don't have any idea what I'm talking about. There are so many IMPORTANT topics we should be teaching our young, but are not, it's disgraceful. Programming isn't in my top 50.
this stupid fucking crap again? we need more k0d3rz like we need more lawyers. teach them USEFUL shit, like plumbing, welding, carpentry.
Google and Microsoft have technology right around the corner that will render most programmers obsolete.
You have NO IDEA how many times I head that one before. There was a product decades ago, literally called "The Last One" in an act of hubris that was meant to replace programmers....
The more such products there are, the more work there is for programmers has been my observation. For then you need programmers to understand what the garbled mess was trying to do, and more to build some working software - usually on an urgent deadline...
"There is more worth loving than we have strength to love." - Brian Jay Stanley
The same way we teach them anything in school: force.
Everyone should have at least a basic understanding of programming concepts imho.
The entire history of a sacred ancient symbol is trivia? You sound pretty racist yourself.
even with limited computers you could teach programming in an after-hours context.
But then how would students who learn programming at school after regular classroom hours get home from school? The buses have already left. Or should we as a society expect students to accept walking three miles (4.8 km) in a thunderstorm?
You only forgot to ask: SHOULD we teach that to kids? Is it a must?