Drag and drop programming gets kids started early


While programming an Arduino is a piece of cake for EEs who have been around the block a few times, there are some groups who would still find it difficult to get started with the IDE. It is touted for its ease of use, but there is a steep learning curve if say, you are 5 or 6 years old. [Julián da Silva] has been hard at work for a while now, to make the Arduino more accessible than ever.

Earlier today, we posted a story about moldable putty which can be used by children to build rudimentary circuits, enabling them to enter the fun world of hobby electronics at a young age. [Julián’s] project “Minibloq” aims to do the same thing with the Arduino. A work in progress, Minibloq uses a graphical interface to “build” Arduino code a block at a time. The code components are dragged and dropped into place on one side of the screen, while the source code is generated on the other half. This helps gently introduce those people new to the Arduino how to write actual code, a little bit at a time.

[Julián] is working hard to ensure that his application works well on OLPC and other classroom-oriented computers to ensure it can reach as wide an audience as possible. We think this would be a great introduction to the world of micro controllers for children as well as those who have never tinkered with electronics at any point in their lives.

Keep reading to see a quick demo of the software in action.

49 thoughts on “Drag and drop programming gets kids started early

  1. This. Do want this. Now.

    Obviously the more robust, flexible code will be handwritten, just like a root shell vs a GUI but I see this as a a very good thing towards making the Arduino even easier to use and even more widespread.

  2. What? This is not that new. Lego Mindstorms did some amazing things with drag&drop programming of a microcontroller in 1998 (on Windows 95, mind you).
    Oh, and it also allowed a magic lego brick to do your bidding.

    1. Hi, nobody said that this is new. In fact, if you read Minibloq’s documentation, the first version of “Minibloques” (it’s ancestor) was released in 1997 for Windows 3.1: http://blog.minibloq.org/p/documentation.html
      But Lego’s soft is not open source, nor Arduino-compatible, and it is not suitable for other hardware than their own. And if you take a look to Minibloq’s features, some of them, like real-time code generation, or the contextual blocks pickers, are nearly unique among todays d&d hardware programming environments.

  3. I can’t wait to try this out. I’m and EE student and was just talking to the department head the other day, she was brainstorming ways to demo electronics to little kids, if this works well i’ll show it to her, somebody already mentioned the conductive playdough

    any idea of a release date

  4. I hope they can write software better than they can spell…

    (PS I was going write “programme” rather than “write software” but I didn’t want you to think I was a pedant ;-) )

  5. Look into Great Cow Graphical Basic. Pretty much the same thing, it is primarily aimed at PIC microcontrollers but a whole heap of the Megas and the Tinys are supported with more added coming. Free download, free to use, open source, and, having played extensively with the Lego Mindstorms as a kid, it is very nearly as easy to use as that. Everything is in drag and drop boxes, checkboxes, drop down menus… And there is a text editor that you can switch back and forth between the icons and the text code, can use segments of code in several languages, basic, asm etc, and it will all compile properly. Check it out, its great! Also has a handy setup to allow for bootloaders and addressing so it wont write over it. So easy to use. I will stop ranting now, i will just mention that i am in no way associated with GCGB(great cow graphical basic) I am just an average guy who is new to the world of microcontrollers, i bought my first one a month and a half ago, and can now use lcd screens, uart, icsp, eprom and other things that always seemed waaay over my head before. Might be easy for most of you, but when just starting or knowing nothing about them, or for kids even, this program lets you get right into it and do some pretty cool stuff even if it isnt the most efficient program possible.

    I will be keeping an eye on this one, also looks uite interesting and i like that the dropboxes are on the relevant icon itself, would make keeping the settings and variables organised much easier :) Any plans to add PIC support to it? :p

  6. I don’t know about anyone else, but the first thing I thought of when I saw the picture was some sort of graphical ladder logic (don’t ask me why). I don’t know why ladder logic isn’t used for basic programming. It is pretty simple to understand, it /can/ be structured, and it MAKES SENSE in conjunction with microcontrollers (at least to me).

    So, does anyone else have any experience with ladder logic?

  7. @Brian Neeley – I thought the same thing, having programmed a lot of PLC’s, but I wouldn’t necessarily suggest it for the under ten crowd – it’s kind of clunky and limited. This looks promising, and has pretty colors!

    There is a ladder logic compiler – check out http://cq.cx/ladder.pl. I haven’t tried it though… looks pretty limited.

  8. I’m not sure I think 5 and 6 year olds should be pushed to learn this stuff. Sure, it’s great if they want to, but there are some many other enjoyable things that could and arguably ought to be doing instead: like playing outside and reading books, and other activities that don’t involve computer screens.

  9. why not just do a BASIC compiler so they actually learn a extensible work-flow? If they can do this drag and drop stuff and handle electrical stuff they can code BASIC..unless they are retarded..

    Also..Arduino…learning curve..electrical engineer..bwahahaha

    This is like saying you need a certification to screw in a light bulb…

  10. If anyone’s actually used the graphical programming language for the new Mindstorms NXT then I’m sure they can attest to how horribly hard it is to do anything useful with it. You’re basically limited to hard coding instructions, for could have an IF statement but nesting IFs quickly becomes impossible. FOR and WHILE loops seemed to be completely non-existent.
    I hope these guys do better than so I can get my little brother to work messing with some of the finished arduino powered projects I have lying around.

  11. @Tom: With BASIC the kid could actually acuire extensible skills. Here they can only do limited solutions for a single medium.

    It’s why such solutions have never taken off. M.I.T. and other have done it for x86 already. The time/effort could of made something really useful though.

  12. The first thing I thought was ‘oh not again’.
    Well I hope this kicks off a bit better than the other attempts (such as mindstorms which is pretty tricky to get your head around for anything remotely complex).

  13. First off, I have to say that I’m an electrical engineer who programs all sorts of micros for a living and I have done this for quite a while now. Finding bugs in a compiler by looking at the assembly it generated is something I do from time to time.

    Yet I’d drop text-based programming and never look back the instant a decent Visual Programming Language would come along. I’m not omniscient of course, but I don’t know of any truly usable one today. I see no reason why in principle a VPL couldn’t be equally powerful as a text-based one, or why it could not offer building blocks with varying complexity and low-level access. It remains to be seen whether it could reach the levels of productivity of an experienced programmer today, but I’d sure like to try it.

    With most languages, the problem of newcomers (and not only) is not so much they can’t envision a program flow, it’s much more that they don’t know what the syntax for it is (and it doesn’t help that error messages never have anything in common with what you actually did wrong). They need to be intimately familiar with compiler/linker slang, down to the last underscore, and browse large APIs to access hardware (and let’s not even talk about how horribly inefficient driver libraries even now are in general, compared to hand-initializing/handling just what you need by direct register access; also, using together libraries from different sources you can bet they have conflicting ideas about using some part of the hardware at some point). A good VPL could solve all that. And I’ll never stop waiting for a real one…

  14. Not sure how i feel about this

    Its easy to say its a good thing that it encourages kids to play with robots or whatever, but is the separation from code a good thing?
    I started learning basic for spectrum when i was 6 or 7, and i cant help but think that the abstraction between program flow and understanding computer interpretation of the syntax.

    i fear a future of programmers who have no idea how the underlying hardware operates. I appreciate some may think this isn’t important, and argue that this abstraction already exists between certain high level languages.

    Gee i dont know. Its cool and all, but if you need this kind of thing to encourage kids to program then maybe they aren’t really destined for programming.
    I don’t know many coders who didn’t try and use cli out of curiosity.

  15. I run an after school robotics program for students as young as 12. We use the Arduino IDE, Scratch and Modkit. Most prefer the regular IDE, but some like the GUI based environments. This looks like another good addition to the tool kit. I really don’t care what kind of tool they use, because it does not matter. The important part is that they are creating with the tools and learning a ton of stuff. Just wondering, how many of you learned to program in your early teens? Did it give you an advantage later on? Thanks for posting another great tool.

  16. The really, really, really sick thing is that in 1985 I had this same idea except it would have been called “Visual Assembler”. Still, I’m glad to see that my old idea has progressed to what I had dreamed it would be…I still wish I’d have patented the idea though..Microsoft would owe me sooo much money right now.

  17. While it’s true that the experience of programming with blocks doesn’t directly teach how to write C/VB/Delphi/insertOtherLanguageHere, it does provide an important introduction to logical thinking. Time and again, the biggest obstacle for fellow students in programming classes hasn’t been the syntax – 9 times out of 10 it’s struggling to understand how to break up a big task into smaller components.

    The idea here is not (or rather, shouldn’t be – I can’t speak for the developers) to teach “programming” to kids. Rather, it should be to introduce them into the world of breaking up tasks into logical components (if/else, loops, etc). An added benefit is that those concepts are hardly exclusive to programming disciplines.

  18. From CS classes I notice what really divide classmates into good skilled and failing . Those who saw whole backbone of language itself, how one thing based on another and logic behind this chains and rules had no problem with even syntax they unfamiliar since they can guess it more then often rightly basing on general picture in their minds.
    More separation from origin will only make it harder to see whole thing at once

  19. When it comes to hardware, I can wire anything to anything. Learning code is my problem. Maybe this will help.

    I agree, learning raw code is best but there are many like me who learn by reverse engineering or copy pasting existing code. I’ll use the GUI to make code, then look at it and try to figure out why it works.

    I work on CNC and I’m surprised how many programmers don’t know machine code. They don’t have to nowadays but the ones who do know the code make the best programs.

  20. Hi everyone! I’m Julián, from RobotGroup, and Minibloq. First, thanks for talking about our work. Second: Please sorry for my English (both here and in the blog, I’m translating personally there, from Spanish). I would like to comment a few things, regarding some interesting ideas/comments I saw here, and about other tools that Minibloq is being compared with:

    1. Modkit: This is different from it, in many ways. The first one is that this is comes with sources, and it’s made with open-source tools (mainly GCC+wxWidgets), and the second is that Minibloq is native (actually it is even being tested running from pendrives in small neetbooks). So it does not need an Internet conection to run.

    2. Scratch: This is different too, because the Scratch version for Arduino (at least as far as I know) uses a protocol to control the board in real time, so it’s not always suitable for programming mobile robots, unless you have a wireless conection. Minibloq, generates, compiles and sends to the MCU’s flash native code, compiled with GCC (the same compiler Arduino uses).

    3. NXT-G: I worked with it, and with RIS, and with other graphical environments. I think they are good tools for the function they were designed, which is making easier for kids and beginners the introduction to the equipment these tools are deployed with. Minibloq, by other hand comes with sources, is free, and has some GUI things lost on those environments, such as being a user-configurable multi target system (not only for Arduino, because the backend is configurable with XML files). Oh, and Minibloq, has Zoom, and dockable windows, so yes: the user can see his whole program :)

    4. BASIC: Well, Minibloq is structured. It does no have global variables, for instance (because I don’ like them), and it’s code (both control and data flow) are similar to the generated code (being it C/C++, Pascal, Java or Python -this is because Minibloq is not limited to one language-).

    5. 12Blocks: I like it, but as far as I know, it’s not free (except for a trial version) neither open-source. Please correct me if I’m wrong about this.

    6. Minibloq capabilities and limitations: In it’s first release, it will be small, because I’m working very hard to get it as soon as possible. But there is a roadmap, and people helping, and we even are planning to integrate it with DuinOS (the port of FreeRTOS for Arduino we at RG.Labs released in 2009) to get multitasking. So I think it will become very powerfull with time.

    7. Bubble: We developed a small library, called Bubble, for wxWidgets, that could be integrated on any wxWidgets app (or other C/C++ app with more work if it’s no wxWdigets based) to get Minibloq-like scripting there. You can even generate G-Code with this in an CNC app.

    8. Kids, programming, education: I don’ know if this is the best thing for teaching programming. It’s just another tool. But I can say that a lot of commercial kits and robots use this kind of visual stuff (some are better, some, well…). We work a lot with kids, and I was teacher in schools too, and at least in my contry, some times we have only 40 minutes a week to teach robotics, to 6- 10 years old kids, and there, I always wanted to have a graphical tool to program our Arduino-Compatible robots, because the forgotten “;”, and errors like those, really made us to waste our precious classroom time.

    9. Not all people will use this to learn/teach programming: Some persons (I know a lot of them) are comming to physical computing devices just to “add life” to their creations. And I saw a lot of beatiful things made by a lot of creative people who were really thinking on what they want to express, or create, and these tools may help to improve their experience with physical computing devices such as Arduino, Multiplo, etc..

    Well, the release is comming soon, next month if everything goes Ok (after a kikckstarter campaign). I hope this may help to teachers, students and beginners, but time, and the users, will have the last word.


  21. Which 3 variables? Minibloq has no limit regarding the quantity of variables that the user can declare (except for the target’s memory, but that would be the same for the Arduino-IDE). You can use 1000 or more variables if your RAM is enough…

Leave a Reply


WordPress.com Logo


Twitter picture


Facebook photo


Google+ photo


Connecting to %s