Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Education Programming

Ask Slashdot: How Can You Teach Programming To Schoolchildren? 353

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?
This discussion has been archived. No new comments can be posted.

Ask Slashdot: How Can You Teach Programming To Schoolchildren?

Comments Filter:
  • LOGO writer? (Score:5, Informative)

    by renegadesx ( 977007 ) on Sunday August 20, 2017 @09:37PM (#55054443)
    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.
    • by TWX ( 665546 )

      Yep. The point of "programming" at that age is to broaden the impressions of what computers can be made to do, beyond what normal existing programs do. It's silly to try to teach programming in the conventional sense at this age, a lot of programming requires math skills that aren't learned until at least junior high, if not high school. By contrast, because some aspects of geometry are visual and don't necessarily require understanding of the math, kids can draw patterns on the screen without needing to

  • by Anonymous Coward on Sunday August 20, 2017 @09:39PM (#55054447)

    at that age, so none of the above.

    • by Jack9 ( 11421 )

      I learned to program before I was introduced to formal logic or any math beyond arithmetic.
      I don't know why these would be considered a prerequisite, when they are not a necessary prerequisite.

  • Don't bother (Score:3, Insightful)

    by Anonymous Coward on Sunday August 20, 2017 @09:39PM (#55054449)

    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.

  • One bit at a time... (Score:5, Interesting)

    by __aaclcg7560 ( 824291 ) on Sunday August 20, 2017 @09:40PM (#55054461)
    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.
    • by antdude ( 79039 )

      I suck in math and programming. :(

      • by ls671 ( 1122017 )

        But you are great with ant aren't you? Too bad ant is gradually being replaced with maven and gradle.

    • by Dutch Gun ( 899105 ) on Monday August 21, 2017 @01:26AM (#55055085)

      I learned how to program in AppleBASIC when I was in sixth or seventh grade - long before I knew anything of formal logic or algebra. It was the introduction to programming that *taught* me those concepts. In fact, I distinctly remember that geometry and linear algebra made no sense to me until I realized I could apply them to computer graphics or robotics. Once I had that as a mental model, the math became much easier for me.

      Most programmers tend to be good at math, and many have CompSci or EE degrees, and thus assume math has to be a foundation for programming. As a programmer who is terrible at math, I can assure you it doesn't necessarily have to work that way.

      • I was lucky enough to actually get some AppleBASIC in third through fifth grades. I know, that doesn't sound particularly lucky, but it's much luckier than kids who got none. But I went to a white kids' school in Aptos, CA, land of high property values and higher noses. In sixth grade we moved across town and I had to change to a middle school, and they had a room full of computers there where we mostly used LOGO. And there I learned of procedural programming, and fractals. And what evil little shits childr

    • by AmiMoJo ( 196126 )

      I actually did programming before algebra, and then when we finally did do algebra it was quite familiar to me.

    • I'm sorry but I have to disagree with your post. Even though it would be easier to deal with Programming if one knows Maths, they are 2 completely different skills. You could still teach programming without using the need of maths. Loop (addition/multiplication) and condition (equality/inequality) statements are not Algebra but rather Arithmetics. Using program may actually help them understand how it works because they see what they learn to be used for.

      Off topic, I think Americans should teach kids (only

    • by Whibla ( 210729 )

      Programming didn't make sense to me until I took algebra

      Or, you know, use programming as one of the tools to teach algebra.

      Having multiple frames of reference makes learning both easier and more memorable.

      I still think LOGO is a great tool, especially if you can get (or make) a robot turtle. I'm not so enthralled by Scratch, if I'm honest, but maybe that's just me getting old...

  • Don't (Score:5, Insightful)

    by OneHundredAndTen ( 1523865 ) on Sunday August 20, 2017 @09:47PM (#55054487)
    Teach them to think, and mental discipline. We do not need more code monkeys.
    • Do (Score:5, Interesting)

      by SuperKendall ( 25149 ) on Sunday August 20, 2017 @10:37PM (#55054657)

      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.

      • by AmiMoJo ( 196126 )

        Programming is also a great way to get kids interested in maths. A lot of the resistance children have to maths is the mental aspect and having to work things out by hand when they know that a calculator could do it for them. Programming lets them learn about maths and experiment with it in a much more interactive, immediate and enjoyable way.

        Creating code to generate their own graphs also gives them a deeper understanding and "feel" for mathematical functions, rather than just entering y=sin(x) into a grap

        • A lot of the resistance children have to maths is the mental aspect and having to work things out by hand when they know that a calculator could do it for them.,

          And the fact that so much of mathematics instruction is not directed at understanding, but is directed at making you solve a problem longhand slightly faster. We spent a couple of years at school learning how to solve differential equations about an order of magnitude faster, which still put us a few orders of magnitude slower than a computer could do it. Worse, after a couple of years of not practicing, my speed at solving differential equations was back to close to where it was when I started, so the en

          • by AmiMoJo ( 196126 )

            I got the impression that most of the maths they taught us after about age 12 was purely for the sake of passing exams.

      • by Dunbal ( 464142 ) *

        when MANY of us here learned programing at that age.

        Many of us here are brilliant. This is (still) not a mainstream site. Most of us here did really well in school - unless we were so damned bored with all the rest of our stupid classmates and the mind-numbingly slow pace of regular education that we just stopped listening. We learned programming really early because we could. 99% of people can't. Ask any developmental psychologist. MOST kids' brains simply aren't ready for abstract concepts and algebra when they are 8. Of course you could compensate for tha

    • Critical thinking, lots of word problems in math class. Problem solving in general, given a set of tools to solve them with....

    • by gweihir ( 88907 )

      Indeed. We have far too many of those. What we need is good engineers (also in software), but most people cannot become that.

    • Teach them to think, and mental discipline. We do not need more code monkeys.

      Because apparently teaching them to think and teaching them programming are mutually exclusive or that there is no way to use programming as a way of thinking /rollseyes.

  • Why bother? (Score:5, Insightful)

    by BarbaraHudson ( 3785311 ) <`moc.liamg' `ta' `nosduharabrab'> on Sunday August 20, 2017 @09:53PM (#55054511) Journal

    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.

    • Re:Why bother? (Score:4, Insightful)

      by thegarbz ( 1787294 ) on Monday August 21, 2017 @12:38AM (#55055003)

      Get them grounded in something that won't be obsolete with the next language fad.

      I can't say a single "language fad" has ever made the lessons I learnt in LOGO or in LISP obsolete. The submissions asked for how to teach people to program, not how to copy and paste and interpret code in a specific language.

      Regardless of what language fad happens you will still remember how it's done from your first procedural language, your first function based language, and your first object oriented one (though the last concept is hardly suitable to tech a general school population.

      • RTFA:

        "I wanted to ask what are appropriate programming languages for children of various ages. "

        The poster was asking for a programming language.
    • Re:Why bother? (Score:4, Insightful)

      by blindseer ( 891256 ) <blindseer@@@earthlink...net> on Monday August 21, 2017 @01:01AM (#55055039)

      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.

      I don't believe that's true. I had chemistry in high school and college and that didn't make chemistry look like "homework" to me. My sister took the same classes, and much more, she has a masters degree in chemistry. I also took home economics (or whatever they call it these days) and found cooking fascinating. Sewing was fun too. What made them "homework" later was having to put those skills to work regularly in cooking meals and doing home repairs.

      I took shop classes in high school, as did my brothers, and we all do much of our own home repairs, on some level at least. We'd build our own speaker cases, wire up the crossovers, and sew a grill to the front. We built cabinets and shelves. Big brother made a career out of it, first as an apprentice architect, later as a woodworker building custom furniture and artwork. doing some general contracting as well. He'll probably be a machinist and welder soon if he gets the job he's interviewing for. I took as much computer science I could in high school, as did my younger brother. We went to study electrical and computer engineering. He's doing stuff that I'm not sure I even understand. Not that he could do what I do either.

      Baby brother and baby sister are engineers, he a mechanical and aerospace engineer, and she a civil engineer. This involves a lot of math and computers, taught at the university. I'm sure chemistry too. Which has been a means to produce their own alcohol to feed their other hobby...

      I do not believe that computers are much of a "hobby" any more. Computer games might be a hobby but that's not a lot of computer science there, unless it's building the game.

      For schools to teach "hobbies" would be the things like chess club, music club, theater, sports, art club. and perhaps others. I've gone back to school to learn large data analysis, which includes programming, statistics, and some "hobbies" like reading literature and playing music.

      Lots of examples of classwork becoming hobbies, and being more than just "homework".

    • 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.

      Such a foundation of programming based on logic, rather than a specific language? I don't approach any program based on how to best write it in one language. I approach programming as what are the operations I need to convert the given inputs to the necessary outputs. Then I'll look at what the language supports for data structures and other methods to simplify development. I've written programs in c like languages for years and I always have to look up specific implementations because I don't memorize

  • BASIC (Score:4, Insightful)

    by crow ( 16139 ) on Sunday August 20, 2017 @09:53PM (#55054513) Homepage Journal

    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 learned BASIC on the new TRS-80. IT was a good thing to learn.
    • by Mal-2 ( 675116 )

      It's a bit clunky and rough around the edges, but BASIC is still an option [qb64.net]. Knowledge of FORTRAN and Pascal does me absolutely no good whatsoever these days, but I can still keep chugging away in BASIC. QB64 has OpenGL and OpenAL support, and will load and play common audio formats like MP3 and OGG without having to link any libraries. (The pre-compiler takes care of that.) That means even an 8-year-old can make a game that has graphics and sound.

      I'm not saying this is the best option. It probably isn't, un

  • 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 instan
  • 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 st

    • 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.

      Those two requests are contradictory. Teaching people some programming is the best way by far to make them understand what's going on in the box, and it also teaches them how to make the most of one of the most important tools mankind has ever invented. Why are you opposed to that?

  • JavaScript (Score:5, Insightful)

    by hord ( 5016115 ) <jhord@carbon.cc> on Sunday August 20, 2017 @10:02PM (#55054543)

    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've been re-learning programming using JavaScript on the frontend and Prolog on the backend, hoping to gradually build up a framework to do web-based strategy games, and I highly recommend it. (Ok, I'm not a child, but I am childish).

      The key advantages I've found is visual programming is lots of fun, giving instant gratification which I think is important for novices of all ages. Something you can do in JavaScript which isn't easy in other languages is it's very cheap and easy to host things on the web, so

    • It really doesn't matter what you want to use so long as it's freely available, especially if it's cross-platform. You can supply the software to the students, whether it's take-home or in the lab.

  • 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.
  • by pollarda ( 632730 ) on Sunday August 20, 2017 @10:03PM (#55054549)
    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.
  • What is your goal? (Score:5, Insightful)

    by Registered Coward v2 ( 447531 ) on Sunday August 20, 2017 @10:06PM (#55054563)

    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.

  • by Proudrooster ( 580120 ) on Sunday August 20, 2017 @10:14PM (#55054597) Homepage

    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

    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.

    • Those sound like those are robot control languages. Sure, robots are fun, but they are more expensive than learning LOGO because you now need to acquire the hardware. Also, there is the communication with the bot (Wireless? USB?), and then you also have to keep it fed with batteries. Your suggestion has just limited the kids that can learn programming now to just kids that can AFFORD to learn programming.

      Keep it simple, keep it free.
    • LMOL, yeah that stopped people from programming later in life....
  • 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.
  • by Neo-Rio-101 ( 700494 ) on Sunday August 20, 2017 @10:29PM (#55054637)

    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.

  • 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/ [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). S

  • The Lego Mindstorms robots is an awesome learning tool, its tactile, and provides the opportunity to participate in First Lego Robotics League.

    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... [turtleacademy.com]

    For more advanced youth, an Ardruino kit may work well. https://www.arduino.cc/ [arduino.cc]

    • Mindstorms is awesome...ly expensive. Arduino is a great idea, though, or perhaps NodeMCU. If you coupled an ESP (even the original) with a little bitty OLED, a d-pad, and a couple of buttons plus maybe an IR receiver and LED, you'd really have something both cheap and interesting. Obviously it will need a VRM or two on there too so that it can be run from a variety of power sources, and a CH340G.

  • Since the foundation of Object Oriented Perl is the "bless()" command, this is clearly the correct language for religious schools.

  • 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.

  • Yet another kids' programming language, from yet another school, Carnegie Mellon, is Alice. [alice.org]

  • by Z80a ( 971949 )

    Just turn programming itself into a game, and the ones that show interest can learn more if they want.

  • 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

  • Start from "Scratch" (Score:5, Interesting)

    by evolutionary ( 933064 ) on Sunday August 20, 2017 @11:17PM (#55054785)
    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/ [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... [kickstarter.com]
    https://www.kickstarter.com/pr... [kickstarter.com]

    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... [mit.edu]

    Hope that's helpful.
  • What language should a child (of 8, from the article) be taught?

    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

  • 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

  • by williamyf ( 227051 ) on Monday August 21, 2017 @12:15AM (#55054943)

    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....

  • 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

  • by Kagetsuki ( 1620613 ) on Monday August 21, 2017 @12:26AM (#55054967)

    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.

  • by hamster_nz ( 656572 ) on Monday August 21, 2017 @12:26AM (#55054969)

    I can't recommend scratch highly enough. https://scratch.mit.edu/ [mit.edu] is great. You can do some pretty neat things with it. Here are some projects you can work through http://projects.codeclubworld.... [codeclubworld.org]

    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?

    • by zifn4b ( 1040588 )

      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?

      Because re-inventing the wheel is efficient?

  • by Jeremi ( 14640 ) on Monday August 21, 2017 @12:34AM (#55054991) Homepage

    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 [youtube.com] 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.

  • by Todd Knarr ( 15451 ) on Monday August 21, 2017 @12:43AM (#55055009) Homepage

    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.

  • 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 p

  • I was just talking to an HR professional. She said that the traits that are in most short supply are focus and social skills.

  • by kaur ( 1948056 ) on Monday August 21, 2017 @02:34AM (#55055199)

    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 discourag
  • You may want to check the micro:bit platform http://microbit.org/ [microbit.org]
  • 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?".

    • 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.

  • 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.

  • I have used Tynker [tynker.com] 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.

    • by dostert ( 761476 )

      I have used Tynker [tynker.com] 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 second Tynker. You can also take the lessons learned in Tynker and apply them to actual devices (such as a Parrot Mini Drone) if you've got a child that is more interested in seeing how you can program something in the physical world. Once you child gets bored with drag and drop programming, I'd move them next to CodeCombat. I completely disagree with the comments saying that you need to make sure your students learn advanced mathematics. As a Math/CS professor, I would much prefer a child learn basic l

  • 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?

  • Try Colobot [wikipedia.org]. It's a simple game where you program robots in a C++/Java-like language to colonize new planets.
  • by zifn4b ( 1040588 ) on Monday August 21, 2017 @07:24AM (#55055809)

    They did this at my daughter's school. There is also ClickTeam Fusion as well.

    Hopscotch [gethopscotch.com]
    ClickTeam Fusion [clickteam.com]

    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.

  • 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.
  • Regular programming:
    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.

  • 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:


    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.

Order and simplification are the first steps toward mastery of a subject -- the actual enemy is the unknown. -- Thomas Mann