- Scratch is a free, introductory programming language for kids eight and up. Scratch 2.0 runs in a Flash-enabled web-browser; previous versions run natively on Windows, Mac OS X, Linux and the Raspberry Pi.
- ScratchEd, a site for educators using Scratch
- Scratch Curriculum – 20 1 hour lessons to teach Scratch to a class
- Scratch: Programming For All – article explaining the big ideas behind Scratch.
Snap! (formerly “Build Your Own Blocks”)
- Snap!, an advanced variation of Scratch (which works on the iPad, by the way)
See the Beauty and Joy of Computing, a computer science curriculum developed at Berkely, using Snap!
- Enchanting is a Scratch mod for programming LEGO Mindstorms NXT robots.
In the Real World
Enchanting, of course, works with LEGO Mindstorms NXT robots, and, for power users, it can also talk to Scratch (v1.4) programs!
Get Your Feet Wet
- Make an interactive Christmas card following the hour of code instructions (an initiative started by code.org).
- Start a new Scratch project and follow the tips.
- Find some existing Scratch projects (like these) and click on ‘see inside’. (If you like, modify the code, or create a remix of it!)
- Especially if you are using an older version of Scratch, do try the Scratch Cards.
- Search the site for different things of interest, and check out the fora.
- Do note that most of the documentation for Scratch is for version 1.4, not the new 2.0 version.
- 40 Math Shapes Challenges
- Additional challenges and even more.
Please note that not all programs work on all robots. (You can hardly tell a driving robot to move its legs, or ask a robot without a colour sensor what colour it sees!) Also, many that do need to be adapted or reconfigured. For instance, if you have an ultrasonic sensor on port 4, and it expects one on port 1, you need to change where the program thinks the sensor is plugged in, or you need to change where the sensor is actually plugged in on the physical robot, so that the two match.
- Enchanting Cards are a great way to get started. They have a simple program and indicate what it’ll do. Try them out on your robot!
- Enchanting includes several sample programs. Choose File -> Open and click on “Examples” to try them out.
- Try out this step-by-step interactive book with videos on Enchanting from Monash University in Australia. [Note that the iBook takes a long time to download.]
- These are several video tutorials, some for older versions, on the Enchanting site.
- (You could also try to modify existing Scratch projects and try to run them on the robots).
More Robotics Resources
Please see my previous article, Robotics Resources . Note that “local” means near Cardston (or in the extended Lethbridge area).
- LUMACS is an outreach group at the University of Lethbridge that teaches Scratch and robotics.
- The University of Alberta offers a course called EDIT 486/EDPY 597- Interactive Multimedia: Video Gaming for Teaching and Learning for people going into teaching or working towards a Master’s Degree.
- There is a Computer Science Teachers Association of Alberta and then put on PD events in Calgary.
Even More Resources
- ScratchScience – articles on developing a Scratch science curriculum.
- Scratch Studio – Science! – projects demonstrating science in Scratch.
- Free Games created with Scratch
- Computer Science Unplugged – teach CS principals without computers
- Computer Science for Fun!
More Things To Mention
Scratch is used in Universities! For example, they use it at the University of Lethbridge, the University of Alberta, Harvard (Scratch for Budding Computer Scientists), Berkely (Beauty and Joy of Computing), and elsewhere.
Some universities are accepting a high school computer science course as a science prerequisite (on par with biology, chemistry, or physics), and I believe some are thinking of accepting knowledge of a computer programming as knowledge of a second language.
I have some ideas for a next major version of Enchanting, and would love some ideas and input at this formative stage.
Why? Why a new major version?
I’ve found that, while Enchanting is easier (and more powerful) than alternatives for programming the NXT, kids still do not understand what is going on, and why a program works or does not work. My aim is to fix this. I want kids to understand programming, and enjoy it, and be active in creating and using technologies, and not just passive consumers of the same.
I have found a great essay by Bret Victor called “Learnable Programming”. I want to incorporate several of these ideas into Enchanting.
In particular, I want students to be able to pause a program, and to be able to scan back in time and see how the sensor and variable values have changed, and which paths the program took in execution. I can see that if there is a (really simple) simulator component (like NXT-on-Stage, but probably as a separate application), it would be possible to allow a user to pause a program, tweak a value, and see how that affects a robot’s progress. (In particular, this could be interesting for seeing how different values affect a line follower, or for tweaking a PID controller). See this video, from 12:00 minutes to 14:40, for an idea of what I mean.
The other reasons I want to create a new version of Enchanting include:
- there are new devices out that would be nice to support. (I’m most interested in the BrickPi, but I did pick up an EV3, as there is a lot of demand for its support).
- there are some misfeatures in the current Enchanting that’ll be very difficult to fix:
- Enchanting does not communicate changes in lists between the UI and the robot.
- There are various connection issues that are difficult to reproduce, diagnose, and fix.
- The fact that you can only have one Enchanting program on the robot at a time.
- The code/compile/upload/test loop is too long and hinders understanding.
I’ve been contemplating how on earth I might achieve these aims.
The best idea I’ve come up with is that an Enchanting application, running on the robot, is sent code from the computer (or loads it from a file), and runs it, interpreting each command as it gets to it. It would be sort or like an emulator, a virtual machine, or an interpreter. When a command is run, any resulting value or state change is retained, so that it can be displayed in the user interface. [It might even be nice if two people can connect to the robot simultaneously and code together. That is much easier said than done, though.]
When a user has paused a program, they get a list of which commands were run, and when, and what the result was. The program is very interactive. I am learning towards supporting WiFi connections only. Perhaps bluetooth (ugh!) or USB connections might be possible at some point. I think the first target machine will be the BrickPi, but perhaps a simulator or EV3 are possibilities. I do think the NXT will come later.
Here are some of my preliminary thoughts on the design of the interpreter engine:
There is lots to figure out.
Oh, did I mention that I am presenting in Edmonton to teachers and computer technicians from across Alberta, Canada, on Enchanting in late November, and have an unreasonable dream that I’ll have something to show them of this new version?
I do wonder about changing some technologies.
- Programming in Squeak Smalltalk is great, but few people desire to spend the time to learn it, and it makes it harder to help with the project. It may prove fruitful to use Snap! v4, written using HTML5 technologies, as a basis. (I just can’t help but think of all the work I’ve put in to modifying Scratch that would have to be redone. And the result could not even pretend to run the UI on a Raspberry Pi [which would be nice]. But being able to run it from an iPad or a mobile device is a big plus.)
- I’m actually not a big fan of Java, either. I will be more than delighted if I don’t have to include a Java Development Kit with a future version of Enchanting. I’d been toying with programming some things in C++, but, am seeing that if I want to be nimble, it would be ridiculous to rewrite the great things that are working now and can be reused. (Time to set up an IDE right, as I can test the VM code on a computer.)
- And, github is all the rage these days. Perhaps hosting code there would help. (I do so love bzr, though).
Lastly, I wonder if having multiple sprites that you can program is confusing. I’ve never thought so before I read what the Learnable Programming essay says about having a powerful metaphor.
I’d love to hear some thoughts, and to know if others are interested to keep up or help as this evolves.
Here are resources for people looking to teach robotics, especially those who came to my presentation at the SWATCA teacher’s convention on Hands On Robotics.
Here is a PDF version of my slides; note that is lacks all audio and video clips.
Also take a look at ScratchEd, a site for people teaching children to use Scratch.
Sign up for the Robotics In Education mailing list.
Come to the 2013 SABRE Games, next Thursday (Feb 28, 2013). (Come to watch; or bring some young roboticists to participate!)
If you have a LEGO Mindstorms NXT set, try out Enchanting.
Check It Out
There are some great books in the Jim and Mary Kearl Library of Cardston that you can sign out easily from your local Chinook Arch library (and ought to be able to get via inter-library loan from any public library in Alberta, or perhaps Canada).
[There are a great many other excellent books on robotics; check out an online bookstore near you.]
Listen to some great podcasts.
Here are some interesting videos.
- Mitch Resnick: Reading, Writing, and Programming
- Chris Rogers: Teaching STEM with a Camera and a Brick or Two
- Frank Noschese: Learning Science by Doing Science
- Conrad Wolfram: Teaching kids real math with computers
- Dan Meyer: Math class needs a makeover
Keep In Touch
Here are my contact details.
You can also follow me on Twitter — @ClintonWB.
I also run a mailing list called SABRE Announcements. You can sign up on the left.
- LUMACS – outreach program at the U of L that does robotics.
- The NXT Step (This is the premier blog on the NXT).
- NXTPrograms has fabulous building instructions for all three NXT kits.
- Stem Robotics 101 “is both a turn-key curriculum for novice Robotics teachers and a collaboration tool for veteran Robotics teachers.”
- LEGO Engineering has a number of robotics-related activities, and it run by Tufts University Center for Engineering Education and Outreach.
- Kids Engineer! has some great curricular resources, interesting blog articles, and aims “[t]o understand and promote engineering education in elementary schools.”
- Here is LEGO’s official page for LEGO Mindstorms.
Competitions and Events
- I run the SABRE games locally.
- With other groups, we’ve run Robofest locally for several years.
- Calgary hosts the Western Canadian Robotics Games every May, and they meet every Saturday at the Aerospace Museum.
- Do be sure to check out the Mini Maker Faire in Calgary next year.
- FIRST Alberta run events like the FIRST LEGO League (FLL), Jr. FLL, FIRST Tech Challenge and FIRST Robotics Competition — with an event for every age range.
- NAIT is running a VEX competition.
- The Western Canada RoboCup Jr. event runs in Kelowna every year.
(There are lots and lots of other events, and it is easy to host your own).
- Robotics Through Inquiry (with materials from AISI Learning Leaders in Calgary)
- All I Really Need to Know (About Creative Thinking) I Learned (By Studying How Children Learn) in Kindergarten
- Also see the LifeLong Kindergarten Group ‘s homepage.
- Focus On Inquiry (by Alberta Education)
- Logo Summer Institute 2013 in New York, July 8-12.
- 2Learn.ca has also offered courses on robotics.
Where To Buy
- Educational kits can be ordered through Spectrum Educational Supplies. (You might also check out LEGO Education, but they do not sell outside of the USA).
- Retail kits can be purchased from many places, such as RobotShop.ca, Amazon, Target, Toys R Us, and from LEGO directly.
- Parts are best purchased at BrickLink or eBay.
If you are looking for interesting sensors, check out
Other Interesting Technologies
Just a short list — as there are so many!