Scratch and Enchanting Resources

These resources accompany my talks at the 2013 ATLE Convergence conference in Edmonton — The Surface of Scratch and Hastening The End of Civilization As We Know It.

Scratch Resources

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

Scratch Mods

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

  • Enchanting is a Scratch mod for programming LEGO Mindstorms NXT robots.

Be sure to look at the How do I use it? section, to see the Enchanting Cards, videos, or try out the Monash University BlockBooks Series to learn to use it.

In the Real World

You can have even more fun with a MaKey MaKey.
Scratch 1.4 works with the PicoBoard, and LEGO WeDo Robots.

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

With Scratch

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

With Enchanting

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

Alberta-specific resources

Even More Resources

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.

Posted by Clinton Blackmore - Monday November 18, 2013.
Posted in .
Comment

Thoughts for a new major version of Enchanting

Greetings, everyone.

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:

Prelimary Enchanting 2 VM class diagram

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.

Posted by Clinton Blackmore - Monday September 30, 2013.
Posted in .
Comment

Robotics Resources

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.

Next Actions

Scratch

Try out Scratch. (Happy Scratch Day in Canada today).

Also take a look at ScratchEd, a site for people teaching children to use Scratch.

If you’d like to try something more advanced, look at Build Your Own Blocks. (You might also like these interactive books on BYOB-based programming languages).

Mailing List

Sign up for the Robotics In Education mailing list.

SABRE Games

Come to the 2013 SABRE Games, next Thursday (Feb 28, 2013). (Come to watch; or bring some young roboticists to participate!)

Make Magic

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

Listen to some great podcasts.

Watch

Here are some interesting videos.

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.

Additional Resources

Websites

  • LUMACS – outreach program at the U of L that does robotics.
  • 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.

Competitions and Events

  • With other groups, we’ve run Robofest locally for several years.
  • 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.

(There are lots and lots of other events, and it is easy to host your own).

Presentation

Radical Idea

Papers

PD Courses

  • 2Learn.ca has also offered courses on robotics.

Where To Buy

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

  • Arduino – an easily programmable microcontroller
  • Raspberry Pi – a $35 computer designed for kids to explore programming.
  • VEX – a more advanced robotics kit.
  • fischertechnik – an alternative robotics system.
Posted by Clinton Blackmore - Wednesday February 20, 2013.
Posted in .
Comment