12 ms·
How computer programming languages for kids have evolved and where they're going
- jerluc 10y agoDoes anyone know of any published research on the efficacy of this "block based programming" standard the author mentions? I can't seem to find anything on the subject in the Scratch website's "Research" section (https://scratch.mit.edu/info/research/ https://scratch.mit.edu/info/research/), and in their early papers they simply list it as a "core feature" rather than explaining why they use blocks in the first place.
- neovive 10y agoI've been a CodeDojo and Scratch mentor for a few years and, although I haven't read much of the research, block-based programming fills a great niche for kids that know how to read, but have a hard time typing. Typing and syntax issues hinder the experience for very young children learning to code. Scratch allows children to learn computational thinking concepts through a creative computing experience. Keeping it simple and focusing on the creative aspect of programming is a major emphasis of Mr. Resnick's team at the Lifelong Kindergarten Group. The kids that choose to continue with programming eventually reach a wall with Scratch, where the block-based aspect breaks down. At which point they are ready for syntax-based languages. However, it's amazing how complex some of the featured projects are on the Scratch website with regards to both art and logic.
- jerluc 10y agoAh that's a good point that both you and scottcha make regarding the typing strengths/weaknesses of children, which would make a typing-based approach maybe non-practical. I guess more generally what I was trying to better understand was whether or not the use of these fitted blocks (as I understand Scratch to do) has been studied enough to be considered more fruitful in developing an understanding of rudimentary programming rather than a more free-form way of doing so (maybe just blocks that can be combined in any way, even if they don't work as intended). Maybe said a slightly different way: why did MIT researchers choose to use a "coloring in the lines" method (which may hinder creativity and potentially interest)?
- neovive 10y agoFrom my experience and interactions with the LLK group at MIT, they have been very careful to position Scratch as a creative, story-telling tool, where the connecting of blocks is just one form of expression. Making your creations come to life through art and logic and sharing with the community is at the core of the Scratch. You actually won't find the words "coding" or "programming" on the homepage (https://scratch.mit.edu/ https://scratch.mit.edu/). I find that any understanding of rudimentary programming tends to be side-effect of trying to make things work :-) Here are a few good links that might help. http://www.npr.org/sections/ed/2015/12/11/458782056/a-kids-coding-expert-says-were-making-computer-class-way-too-boring http://www.npr.org/sections/ed/2015/12/11/458782056/a-kids-c... Mitch Resnick's TED talk from 2012: https://www.ted.com/talks/mitch_resnick_let_s_teach_kids_to_code?language=en https://www.ted.com/talks/mitch_resnick_let_s_teach_kids_to_...
- scottcha 10y agoIn my experience in using this with my Daughter (age 7) I think the main efficacy of blocks comes from making it easier for kids who don't know how to type to use the basic programming concepts we are used to (nesting, loops, conditionals). What other aspects of efficacy are you thinking should be considered?
- junelin 10y agoThere seem to be a few studies like this that have evaluated scratch over the course of 10 classes, but they've been largely inconclusive beyond the "general enjoyment" factor - http://scratched.gse.harvard.edu/sites/default/files/wilson-moffat-ppig2010-final.pdf http://scratched.gse.harvard.edu/sites/default/files/wilson-...
- narag 10y agoI mentored a CoderDojo group for Scratch, AppInventor and HTML/JS for a year (two years ago, so details are a little blurry now) and in my humble opinion the "boxes" or "blocks" are not that good. Not because the idea is bad, but because the implementation is terrible. It's true that children have a hard time typing, but it's not because they can't type fast. The reason is that they don't know how to delete, navigate using keys, or what tab and intro are supposed to do. The boxes are painful to manage. The only advantage is that they can use them with the mouse, that they seem to be much more familiar than with the keyboard. Some pitfalls: * Not obvious what kind of item should go in every placeholder. * You need to learn in what tab page is every kind of item. * As soon as the program is bigger than a simple proof of concept, it's difficult to read, understand or modify. * There is some model for moving stuff around the screen that it's not very intuitive and you can't easily choose an alternative. * The event model is probably not what a beginner should start with. A better approach would be to use the keyboard, at least to do the same as with the mouse. Every pro knows that keyboard is way better. Don't let the cursor go out of boxes maybe. I've sit on the idea of making such an editor in JS for a year... anytime soon :-) Oh and BTW, the children did just fine with JavaScript, once they learned keyboard basics.
- codingdave 10y agoBecause children too young to even type their own name on a login screen can still understand and do block-based visual programming. So, no I don't know of formal research - but that answer is the experience shared with me by teachers who are working with 5 year olds on these concepts.
- noamyoungerm 10y agoWhy aren't kids able to read text written in rows like everyone else? Programming languages just for kids seems mostly like a way to limit them.
- throwaway_java 10y agoI don't think it's about being able to read text written in rows, although if you can't see that kids aren't particularly good at that initially, then you mustn't have spent much time with kids. (Hint, they learn to "read" with picture books and then books with like 5 words on a page.) The same reason they learn to ride a bike on one with 12 inch wheels instead of 700c. Or cook using recipes with 3 ingredients. Simplified versions for learning are a good thing. First they grasp the basics using something simple, then they push the boundaries of that simplified version, and then they extend to the next step up. The same way I learn at 33 years old, by the way.
- burkaman 10y agoBecause they aren't very good at reading yet, because they're kids. And for some reason, kids often prioritize having fun over using the most efficient representation possible.
- dragonwriter 10y ago> Because they aren't very good at reading yet, because they're kids. I'm not sure, but I think it may be the case that the best solution for teaching children programming at the point where "they aren't very good at reading yet" is to address that problem first. You can be a kid and be good at reading. I've known several, both when I was a kid myself and now that I'm an adult.
- facepalm 10y agoYounger kids can't read yet.
- TeMPOraL 10y agoWhen you're six you most likely can. And all those colorful blocks and smiling monkey-people look like something designed for one- or two-years-olds. I was around 7 or 9 when I first saw QBasic. I definitely wasn't afraid of text at that age. The wonder of programming isn't in how it looks - it's in what it does.
- punnerud 10y ago[Follow up read] Why developers never use state machine: http://www.skorks.com/2011/09/why-developers-never-use-state-machines/ http://www.skorks.com/2011/09/why-developers-never-use-state...
- magoghm 10y agoI almost always use state machines.
- jops 10y agoState machines in games should be a lure enough for the kids: http://gameprogrammingpatterns.com/state.html http://gameprogrammingpatterns.com/state.html
- myhf 10y agoScratch is actually pretty good at expressing state machines. Since all statements are atomic and all scripts on a sprite run in parallel, you can write one script that says forever: wait until Today == Saturday repeat until Today != Saturday: do things outside and another script that says forever: wait until Today == Thursday repeat until Today != Thursday: if there is trash: take out the trash and then any process that updates `Today` will cause the sprite to perform the right behavior on the right day.
- methehack 10y agoI've always been suspicious of the looks-like-an-animal-with-a-name-and-a-smiley-face-I'm-a-grown-up-and-this-is-what-kids-like approach. I remember one of the coolest things about the apple II was that you could 'poke' the right memory address and get the speaker to click. That was magic when I was 12 and it didn't need a friendly name and a stupid grin. Until they're old enough for K&R (12?, 13?, 14?), maybe they should do something else... or maybe anything else...
- jerluc 10y agoI was certainly in a similar boat (though a later generation of computers) whereby I found around age 9 that "poking" at a computer (either plugging random things in, or clicking random buttons or keys) enough yielded some interesting/mildly entertaining results. Of course, many times, these results ended with being grounded for breaking something, but nonetheless, the endless possibilities of random keystrokes and mouse clicks seemed to exude some kind of strange primitive allure. Also, K&R for kids ages 12-14?!
- methehack 10y agoI agree it might be hyperbole (my downfall!) with the K&R bit, but I really don't think so. I think by going through chapter 1 of K&R in slow motion you'd learn more than a year with mr turtle.
- snerbles 10y agoAt 14 my first programming class was in C at a local community college. One of the texts was K&R 2nd edition. So, if unusual, it's not totally unprecedented.
- angersock 10y agoI started hacking C around 14/15. It's amazing what you can accomplish when you don't know what is hard.
- pjmlp 10y agoI started using Z80 Assembly around 12, already knew ZX Basic and Timex Basic before it. But was already aware of Assembly with age of 10, when I started reading the Input magazine series with their hexdumps of microcode listings.
- mbubb 10y agoI looked around the Make WOnder site for a github repo or something to download and try the language. Don't see it. How do we try this out? I have co-taught a Scratch club 4 times for kids in the 10-12 yr old range. And will teach a Python club in the coming Fall semester for kids in the 10-14 yr old range. I am nto a real teacher but am lucky to work with a CS professor from a local college. For the Python class I am thinking of a Raspberry Pi per kid, plus KVM. And NoStarch text as class material. So how do I evaluate Make Wonder?
- expertmouser 10y agoIt's true it's not easy to evaluate the programming languages without a robot, but you can definitely get a feel for them by just running the apps - Wonder for state-machines (aka "flow-based programming") and Blockly for traditional Scratch-style programming.
- glaberficken 10y agoWonder seems to be entirely closed of within their apps. Only available on mobile / tablets https://www.makewonder.com/start https://www.makewonder.com/start
- twreford 10y agoHave you tried http://www.alice.org http://www.alice.org with kids at all? I remember it helping me when I was younger.
- kzhahou 10y agoWhy is BASIC totally left out? An entire generation was inspired by power-on basic in C64 and other platforms. More than just "inspired"... Some huge amount of today's technology wouldn't exist otherwise. I know I'm stuck in the past, but that's what I want for my kids. Flip open the laptop and boom, theres my programming environment, except now with easier graphics/sound APIs. Anyone know how to get this, without buying a c64 + CRT monitor?
- bartbes 10y agoSomething that kind of mimics the C64 experience is load81: https://github.com/antirez/load81 https://github.com/antirez/load81
- dragonwriter 10y agoMost platforms don't have a power-on equivalent, but BASIC derivatives with better sound/graphics/etc. APIs [0] are widely available (the particular selection will depend on platform, e.g., RFO-BASIC for Android.) [*] well, maybe not better in all cases; for lots of simple things, some of the 1980s home computer BASICs had pretty good simple sound synthesis APIs.
- jameshart 10y agoHit F12 in a web browser. Hit / in minecraft (more effective if you install scriptcraft first). Open up a terminal window.
- duaneb 10y ago...none of these are "turn on and play". For any of the above, what's the command to draw a triangle?
- jameshart 10y agoWhat was it on the C64? I would have thought you would have had to write a program to do it. What is the command to spawn a zombie on the C64? Or to display a gif? Or to download data from an Internet service?
- akkartik 10y agoIt is a perpetual puzzle to me why learning programming isn't considered to involve learning about functions. In my experience the hardest thing about programming is teaching people the facility of "uncoiling" in their heads the coiled representation of a loop or repeated calls of a function. That in turn requires as a prerequisite the ability to consider a function being called with multiple different inputs, and hold multiple possible situations as you build the function. Until you attack this, the hard problem of teaching programming, anything you come up with will only help learners with the first few hours of their learning. Which is invaluable, don't get me wrong. But what then? There's got to be something better than, "ok you're done with blocks and turtles, now go learn JavaScript." (I have a start of a solution to attack this problem: http://akkartik.name/post/mu http://akkartik.name/post/mu)
- thunderbong 10y agoScratch has the concept of functions. They are also called blocks. Custom blocks which kids can create. The blocks can take parameters and are conceptually identical to functions. I don't know about the other languages mentioned though. I prepare curriculum for Grades 4 and 5 on Programming using Scratch and Flowcharts and teach kids to create blocks whenever they see that functionalities are getting repeated. Kids tend to learn a little differently compared to adults. Adults tend to want to know the 'big picture' before they begin and tend to have different preconceptions based on what they've learnt earlier. Kids' learning is much more playful, motivated more by inquisitiveness and curiosity. They don't have the urge to prove anything to anyone, including themselves. At those grades, their brains are very flexible and they can think of strange combinations and the ultimate goal of having a program solve a problem is not the aim. Even after many years, I find it hard to let go of trying to guide kids towards a goal, rather than keeping my mind open to new things that they are able to see just because they're not motivated the same way we as adults are.
- akkartik 10y agoThat's true. Logo has functions too. But for all the innovation that has gone into making the notion of an instruction easy to learn, functions everywhere look the same. For example, why can't a function in Scratch change its shape based on the number of arguments? When I learned programming it took me years to stop "ping-ponging" between bugs. I'd fix the most recently discovered bug, only to simultaneously break the second-most recently discovered bug. My students show the same behavior. That's a sure sign that just giving kids functions doesn't help them understand. Your observations about the differences in learning strategies were useful, thanks.
- marianoguerra 10y agoLast weekend I built a project to do music with sonic pi[1] using google's visual programming blocky[2], take a look if you are interested: https://github.com/marianoguerra/sonic-blocks https://github.com/marianoguerra/sonic-blocks [1] http://sonic-pi.net/ http://sonic-pi.net/ [2] https://developers.google.com/blockly/ https://developers.google.com/blockly/
- pklausler 10y agoHonestly, I don't think that cute interfaces matter all that much. An ASR-33 teletype dialed into a Control Data 6600 with a Fortran compiler was a pretty damn cool thing to my ten-year-old self.
- jordigh 10y agoScratch is a great idea, but it's a pity that the current implementation is Flash-only. The HTML5 repo has not seen any work in 2 years: https://github.com/LLK/scratch-html5 https://github.com/LLK/scratch-html5 Is it really impossible to have Scratch without Flash? I want to play this Scratch game without Flash: https://scratch.mit.edu/projects/63476480/ https://scratch.mit.edu/projects/63476480/
- hardmath123 10y agoTry Phosphorus, an HTML5 Scratch interpreter: http://phosphorus.github.io/#63476480 http://phosphorus.github.io/#63476480 Also, Snap! is basically Scratch without Flash, but with everything awesome from SICP: http://snap.berkeley.edu/run/ http://snap.berkeley.edu/run/
- jordigh 10y agoNeat! But I guess it doesn't work for all games? http://phosphorus.github.io/#64974428 http://phosphorus.github.io/#64974428 Snap looks cool, though! It can even import Scratch projects! Neat!
- hardmath123 10y agoYeah! Funny, I was the one who wrote the original Scratch->Snap! converter, "Snapin8r". :-)
- igravious 10y ago> Research shows that children as young as 5 can grasp computational thinking concepts, so why not go there? "computational thinking concepts" What are they? I ask this in all seriousness. Why are there no links to the talked about studies in the article? Or are they there and I missed them?
- junelin 10y agoTufts is doing some great research in this area. They've seen kids as young as 5 learn these concepts by manipulating tangible blocks - https://ase.tufts.edu/DevTech/publications/computersandeducation.pdf https://ase.tufts.edu/DevTech/publications/computersandeduca...
- rcarmo 10y agoOnly the other day I started keeping track of stuff for kids here: http://taoofmac.com/space/dev/Kids http://taoofmac.com/space/dev/Kids (my kids are moving on from Scratch, and we eventually settled on Python, but I'm keeping tabs on other options)
- jdeisenberg 10y agoI'd like to point out the very underrated DrRacket (https://docs.racket-lang.org/getting-started/index.html https://docs.racket-lang.org/getting-started/index.html), with some very nice material that works at the middle school level (http://www.bootstrapworld.org/ http://www.bootstrapworld.org/)
- partycoder 10y agoI never liked anthropomorphic neotenized animals. Create a programming language with transformers or thundercats not a cat on meds (j/k, that project is cool, but you know what I mean!). I learned to program with QBasic and I know many others learned to program with the ZX Spectrum or similar machines. If kids can learn the abstractions of the English language, be high dans in Go, get accepted into college, and achieve incredible things, they can learn programming too. I highly recommend the book "Surely you're joking Mr. Feynman", especially the chapter about how he fixed radios. This really reflects the magic of learning as a kid.
- jacalata 10y agoThe question is whether you want learning programming at 14 to be as rare as getting accepted into college at 14.
- partycoder 10y agoWhat I think is that education systems will evolve eventually that will be a reality for the ordinary person. Text from educational materials can be optimized for readability, and explanations/illustrations can be enhanced to be more interactive and immersive (e.g: VR).
- sssilver 10y agoI learned to program with QBasic and it took me colossal effort and time to kick that crap out of my head and actually understand programming. At 31, I'm still not sure I'm completely over that.
- unabst 10y agoHaving animals and colorful bricks is okay, so long as we're not in conflict with what is actually fun about what is being taught here... Programming is fun because we can control the machine, and make it do things... magically, at our whim, with the right combination of instructions. So compared to that, having a cat walk towards a barn seems like a completely irrelevant layer of entertainment forcefully tailored to the taste of the students, who at best are distracted from the real fun, or at worst presumed to be incapable of understanding why programming itself might be fun. For all practical purposes HTML is a great place to start. Immediate output, can share it online, and it's easy. And easy to expand upon with CSS and Javascript and everything else. Also Processing is great for an art cs class. Not to mention both web development and computer graphics being two highly relevant skills in today's job market (thought that is thinking a bit ahead considering the ages here, but better relevant than sorry).
- kevhito 10y agoHave you programmed in scratch for any significant amount of time? I have, so have my kids, and as a CS prof (at a small non-engineering college) I encourage my students to do so too. Before age 10, almost entirely on their own, my kids discovered ideas like abstraction (writing custom blocks), recursion, data representation (e.g. encoding/decoding pairs, structs and lists into arbitrary-precision integers), asynchronous vs. synchronous functions, performance tuning, 3d perspective graphics, and race conditions. At bedtime it's not unusual for them to ask about, say, what happens if you do recursion without a base case, or wonder whether you could simulate the scratch language within scratch itself. All of these things are fundamental CS concepts, and they seem to grasp these at a much deeper level than I did at that age, and better than most of my college students. Yes, they also do some python, html/css, a little java, a bit of javascript. And those all have their place, and they like making websites. But the scratch infrastructure is fantastic. Good learning curve. Just enough language power to do amazing things (threads, fork, async notifications, custom blocks, cloud variables for multiplayer online). Instant publishing. Great community. Fantastic programmers (hi Griffpatch!) putting out incredibly clever programs to admire. So all this is to say that it is unfair to dismiss scratch as "a cat walks towards a barn".
- csense 10y agoThe most interesting part of this article is the bunch of home-brewed "learn programming" environments listed in these comments.
- ericssmith 10y agoI recently gave an intro to coding to young Girl Scouts using Pyret (http://www.pyret.org http://www.pyret.org). The screencast is here: https://vimeo.com/163949506 https://vimeo.com/163949506 I had to wing it because the ages turned out to be younger than I expected. I've taught my 6yo son using Racket and Pyret so I had the basic approach already. Although I shot over their heads in spots, overall the girls seemed to be really engaged, as were their parents. For my money, Pyret is THE language for an intro to programming, almost regardless of age.
- eyan 10y agoI like Pyret a lot. The guys banging on Pyret and Racket are a great bunch as well.
- burfog 10y agoScratch is pretty much a traditional text-based language, but with a structure-aware drag-and-drop editor. Maybe you can't quite literally build a compiler for the bare text...? It's at least mighty close to being doable. That would make a great transition. You could also make a similar drag-and-drop structured-text editor for a fairly large subset of C.
- Secretmapper 10y agoI fully agree with the sentiments here. For all intents and purposes, I think that block style languages might not be the best way to introduce programming - I'll have to say that Bret Victor's Learnable Programming makes much more sense (http://worrydream.com/LearnableProgramming/ http://worrydream.com/LearnableProgramming/) However, there is no (to my knowledge) better way to introduce programming in an easy 'non-keyboard' way than blocks. I ask this because I'm currently brainstorming ideas for tux4kids (an open source educational suite for kids - yes tux as in the linux mascot), and we've come to the conclusion of using block structures (since the game has to be playable for mobile too). Unfortunately, we've come no better than 'move here, use functions' a la Lightbot (lightbot.com) It's quite timely that this has been posted here, since we're still brainstorming concepts and I wanted to take this opportunity to ask - what would you suggest for a 'programming game' for kids?
- harryf 10y agoThis ignores Minecraft and things like Scriptcraft ( http://scriptcraftjs.org http://scriptcraftjs.org ) which I've found are far more effective at home my kids attention than Scratch. Scratch is nice but IMO the end result is too limited - kids sense their program is "stuck" inside the window of the Scratch environment and is missing out on much of what the computer is capable of.
- greendestiny 10y agoYeah I just introduced my kids to http://computercraftedu.com/ http://computercraftedu.com/ and its visual minecraft programming language. They got the hang of it quickly because they really want to create things in minecraft.
- harryf 10y agoNice - hadn't seen that before - thanks for the tip
- dpcan 10y agoI built an online IDE for creating HTML5 games in Javascript that is perfect for the classroom. Then I taught a class using just Javascript and HTML5 Canvas to 11 year old kids in my son's class. They were fully capable of using straight black-and-white code to get things done. And they were thrilled to see their colorful results on the screen. Learning how to clear the background with different colors got them pumped. Drawing circles and moving them across the canvas was an actual thrill. After only an hour, I lost control. They were off trying to make their programs do great things without me. They were trying and failing, and then succeeding, on their own. I was running around the classroom helping them figure out little syntax issues so they could keep going, and everyone was having a blast. One kid would get his program to do something strange, and he'd call everyone over, and everyone would ask "how'd you do that!?" and he would become the teacher for a moment - and the kids would run off and keep trying new things. There is just something magical about going from plain text to a working program. Writing "DrawCircle 10,10,50" to draw a circle is pure awesome. When you are learning - this makes you feel like a real hacker. You take this kind of thing home and blow the socks off mom and dad too. Side-note, before I created my little web-IDE for this class, I looked at a bunch of these kid-style languages. I opted for straight code because I remembered my own beginnings. I used QBasic for everything, but when it came time to learn more advanced programming, I struggled for too long because of it. I didn't want my kids growing up like I did, not knowing what to do without GOTO. I didn't want them not knowing what to do if they couldn't drag and drop an IF block into their IDE.
- imakesnowflakes 10y agoI am of the opinion that kids should not be taught to program computers for these reasons.. 1. Programming can be too much gratifying, almost drug like, and will keep the vulnerable kids in front of the computer whole day long, building stuff. This will help them blow the socks off mom and dad, but will make little real difference in their future. 2. learning to program early does not make really better programmers. But there are skills vital to life and experiences that SHOULD be picked and gone through, when they are still kids. This should not be sacrificed for learning coding. So I think kids should not start programming until they are past their teens.. Source: My experience as a kid who used to blow their parents socks off by making games and 3d graphics in qbasic and turboc...
- srdeveng 10y agoMy introduction to markup was the Geocities era HTML. I was in 3rd grade or so at the time. Got access to my dad's Casio digital camera and took pictures of my friends and teachers and then swapped heads and bodies using Kidpix. In computer lab, I'd set the start page on the few computers with internet to my Geocities page. It was a huge hit and the computer teacher didn't know whether to applaud or punish me for the work. I got cut off from the 'internet computers' indefinately and played Organ trail everyday instead of doing the typing assignments since I was already proficient. I think a large part of my comfort with code came from getting rid of the 'curly brace phobia'. I've attributed my comfort reading code regardless of language at an early age to this exposure to HTML markup.
- theoapps 10y agoI think a good intro to programming is video games, especially ones that let you build custom maps (for me it was Age of Empires and Starcraft). All the units and such can be seen as a huge metaphor for object-oriented programming. With some games you can also add in custom scripts. Of course this doesn't teach practical skill, but at least can get them thinking of the concepts while engaging them with something more exciting than hello world or a calculator.
- freekh 10y agoI wonder why people are in such a hurry to teach their children CS/things? { rant: `One of my primary complaints from (engineering) school was that we/I never had the time to absorb knowledge and become intuitive with anything (the French engineering school I attended was particularly bad). We were spoon-fed knowledge. In order to sink enough time into a topic and understand the parallels with other things (at least in engineering science/craft) you need a lot of time and focus. This should (must?) not come from discipline but from curiosity. I would argue that (though I am a layman in this subject) adding another exercise to a child's schedule with soccer, birthdays, school, PlayStation, ... doesn't make them more curious. It makes them tired and unfocused just like a grown up if they have too much to do. Give them time to learn and grow instead! Give them the chance to experience mastery and to feel confident, be it playing with rocks in the yard or programming. Let them be bored. Give them time and focus. Do the things you like together so you can share of your experience. If that's is programming then fine, but do it with the tools you like or create so they can see how enthusiastic you are about something. If you like these learning tools, then go for it, but don't force it if you don't. If they are 18 years and still haven't learned to program: relax, there's is plenty of time for that! I suppose this is controversial, but in my experience the hackers that I know learnt coding really young aren't necessarily better than those who learnt it later. Those who have a genuine interest in coding are multiples of their peers.`}
- kriro 10y agoWhile this is not truly for kids since I was teaching university students I always wanted to investigate if domain specific languages should be used more. We did some unpublished experiments for an AI class on agent development where groups developed a card playing agent in Prolog and a domain specific language for that card game. The DSL agents were quite a bit more sophisticated. My point being...I think usually we assume kids should be taught general programming. It might be more fruitful to pick a cool domain and a language suited for that domain. Unfortunately a lot of the programming exercises/projects across all age groups are rather boring for lots of the students from anecdotal evidence. I'm envisioning something like this: Educator: Tell me something that's cool. Kid 1: Pokemon! Kid 2: Football! Educator: Ok, tomorrow we'll learn how to program (Pokemon stuff here) and (football stuff here). Educator goes home, configures the PokemonLanguage and FootballLanguage and starts teaching that language with Pokemon/Football specific examples. Does it scale...probably not but we're in the business of doing things that done't scale, right?
- jumasheff 10y agoThis made me think of Micropython on a $1.79 ESP8266 board[0] Educator: Tell me something that's cool. Kid 1: Pokemon! Kid 2: Football! Educator goes home, gets ESP, modules, sticks them together, write examples. Does it scale? It's doable: there should be common libs (pre-written snippets) for moving chassis, limbs, RC over wifi, object detection[1], swarm control/collaboration etc. Educator would fit hardware/software together and rock the class. [0]http://aliexpress.com/item/New-Upgraded-version-ESP-01-ESP8266-serial-WIFI-wireless-module-wireless-transceiver/32633226881.html http://aliexpress.com/item/New-Upgraded-version-ESP-01-ESP82... [1]Look at http://openmv.io http://openmv.io
- Ultimatt 10y agoAs someone who started programming at a young age where using three meta keys on the ZX Spectrum was something my hands literally couldnt do... I say to all the people suggesting give kids a raw language interface, think about how accessible that interface really is. First you have to learn typing and unlike the spectrum you need to remember and learn most keywords. You are eliminating perfectly smart kids immediately. Because they have a massive barrier to the reward of programming. I remember using a pencil in my mouth to get the third meta on that keyboard. Fairly sure thats a health and safety nightmare. But the frequently used commands were single finger. As my desire to program increased the interface to my own goals got harder. I had the advantage distribution of my software to friends was trivial too. Thats not true anymore outside of JS in the browser. Raspberry Pi goes some way to aid that for scratch.
- VPrime 10y agoOur app hyperPad (https://www.hyperpad.com https://www.hyperpad.com) is being widely used to teach kids programming. It was never intended for that, but it's really interesting to see schools around the world using it to teach kids to code. We actually built it as an easy way to make games, but hey, if people are using it to learn, we won't complain ;). Since our app is primarily a tool to make games and other interactive apps, we take a different approach to our behaviour system. The hyperPad behaviour system is our take on a node based event driven programming language that lets users focus on the design and the fun parts. But still give them the power they need :).
- rastapasta42 10y agoShameless plug: I'm working on a small graphics environment to teach my 7-year-old brother programming. It doesn't have any advanced graphical GUI, instead it has a Scheme/Lisp REPL connected to OpenGL window and it lets you draw various shapes (such as triangle and squares) as well as load shapes from .obj files exported by blender. Once you load a shape, you can assign it a color or texture from PNG file, then move, scale and rotate the shape, and get basic keyboard and mouse inputs https://github.com/kostyakow/skomakare https://github.com/kostyakow/skomakare Note that error handling in my language isn't great, and I don't have proper tail-call optimizations, but I'm working on v2 which will add more real-world features to the language.
- ravenstine 10y agoAnyone else remember Widget Workshop? https://en.wikipedia.org/wiki/Widget_Workshop https://en.wikipedia.org/wiki/Widget_Workshop I loved this game as a kid and, while it's not really a programming language of sorts, it's great for getting you to think in a programmer's mindset. Logo bored the crap out of me, but I could make neat things with it. I feel like it was completely forgotten but something like it could have a real educational use today.