Guest Blog: Alternative Tools for Teaching Computer Science

Posted by:

I had the privilege of attending the iTeachCS 2013 symposium on Friday, June 14, 2013, and at Gerry’s invitation, have decided to write a guest blog post explaining some of my ideas, as they are a little different than what many of you are doing.

How do we teach kids to instruct things to accomplish tasks?

I work as a system administrator for the Westwind School Division (in Cardston, Magrath and Raymond). I teach LEGO Mindstorms NXT robotics classes on the side. I found LEGO’s NXT-G to be frustrating, and have developed Enchanting, based on Scratch, to teach kids robotics, and materials to go with it (and am now going to have to look into making a MOOC about it. 😉 ) To have some vision for the sorts of tools we need, I highly recommend that you look into some of the works of Bret Victor at WorryDream.com. I mentioned a talk he did called “Stop Drawing Dead Fish“. While it is interesting online viagra buy in its own pharmacy in canada right, you really need to read his article on “Learnable Programming” and watch his talk on “Inventing On Principle“. (If his example of Binary Search starting at 16:50 doesn’t convince you our tools are inadequate, I don’t know what will, but you really need to watch at least the first third of the hour-long talk). If I were designing a curriculum arc to help students learn procedural thinking, I would consider the following tools and freely available resources:

  • Scratch (and derivatives)
  • Inform 7
  • SmallTalk
  • perhaps POV-Ray

Scratch

Start with Scratch. It is excellent for kids who can’t type; the things you can do are discoverable, and there are lots of resources (such as ScratchEd). Derivatives of Scratch, especially BYOB/Snap are also worth looking at. BYOB/Snap are used for a computer science course at Berkeley, and supports recursion, clones, and allow for very advanced projects to be created. If you want to mix things up, you might try Cellular or Scribble or perhaps Panther (and if you are using NXT robots, might I suggest Enchanting?). Scratch is suitable for ages 8 and up.

Inform 7

I think using Inform 7, a domain-specific natural-language environment for crafting and testing interactive fiction (a.k.a. “text adventures”), would be an excellent way to go for grade six and up, and would fit naturally in a Language Arts classes. The website is full of guides for teaching and learning the system, with ideas for use by different grades and subjects. Finished projects can be exported and run on regular computers, mobile devices, or over the web. I bet you’d end up with homework people would want to show off!

Smalltalk

You’ve probably only heard of Smalltalk from looking over the history of computer science. Had I not needed to learn it to hack on Scratch, I would’ve entirely missed this excellent language. It is unlike any programming language you are likely familiar with. The syntax is unusual (and directly inspired Objective-C), and, stranger still, your programs are run in a virtual machine image, complete with a full debugging and coding environment that is available whenever you need it. What makes it so awesome is it is a live environment. If you need to debug something, you can inspect variables, manipulate objects, change your code, and back up the call stack a couple of steps and resume. I highly recommend it. The most widely used open-source smalltalk today is called Pharo, which is a fork of Squeak. “Squeak: Learn Programming with Robots” is a now-free book (and site) designed to teach children to program with Smalltalk on the computer, telling on-screen robots what to do; while I haven’t used it, it sounds like the place to start, to me. I also want to recommend “Pharo By Example“. I think an eighth grader could learn Smalltalk. You may also want to look into Amber, Seaside, and eToys

Other ideas

At this point, my suggestions become more typical. You might want to try Processing or Processing.js. Mods may be a good way to go. I’ve heard kids are very interested in modding Minecraft. If you are teaching Javascript, you may also want to teach jQuery. I like Python a lot; pygame might be a fun library to work with. Don’t know what to say about teaching Java or C++. There’s one last idea I’d like to suggest:

Persistence of Vision Raytracer

POV-Ray uses a domain-specific language in which users describe the contents of a scene [I want a sphere here, and a cube here, and a light here, and a camera placed here facing this way] in text and the software then renders (draws) the scene. There is lots of documentation, and many sample images to look at. (Take a look at the old Internet Raytracing Competition to see what experts could do). While I’m tempted to say it might tie in with an art class, it really is more of a left-brained activity than a right. It would require students to visualize a scene in their mind (or on graph paper) and then describe it to the computer. It could make for a really good extension module. If you are using a Intel-based Mac, you’ll want to install POV-Ray and MegaPOV. Feel free to give me a shout if you have comments/questions/etc.: clinton.blackmore (at) westwind.ab.ca or @ClintonWB.

2

About the Author:

Clinton Blackmore has always be interested in learning new things and in helping others find delight in learning new things. He became a video-game programmer with a hope to create educational games that would leverage stealth learning to teach when children’s barriers are down. He now strives to teach his own children how to live honourable lives, works as a Mac system administrator for a school division centered in Cardston, Alberta, teaches robotics on the side, and is the primary developer of Enchanting.

  Related Posts
  • No related posts found.

Comments

  1. mark  June 18, 2013

    thanks clint. I will have a look later today.

    reply
  2. geogre mousavi  February 12, 2014

    Nice blog and the best ways to teach the students about robotics. There is lots of documentation, and many sample images to look at. Computer classes ny

    reply

Add a Comment