Institute for Personal Robots in Education Blog

Teaching Computer Science with Robotics vs. Teaching Robotics

Deepak Kumar and I had a good Skype conversation yesterday (Thursday 13 July) about getting started with the curriculum design for the introductory course. We plan to trial the course this January, so we have a lot of ground to cover in a short time.

The really important point that we both agree on is the IPRE courses are about learning Computer Science not learning Robotics. Deepak explicitly said that robotics and cognitive science should take a back seat in these courses. Our goal is to teach computer science -- using robotics and cognitive science as inspiration, but also drawing on computational science and other domains. We're using robots as a strategy for learning and teaching -- a place to draw interesting examples and a way to make the computing concrete and tangible.

We've agreed on a process, too -- we start out with the interesting exercises/homework that we're going to ask the students to do, then teach to give the students the ability to do those interesting things. We did that with the Media Computation effort. The decision to have students make visual collages in the intro course came early on, and that helped us define the media content to cover early on (e.g., how to do gray scale, how to do composition of images). The decision to use linked lists to create woven music in the data structures class similarly defined how and when we'd cover linked lists.

The real challenge is coming up with motivating projects at the beginning of the course that only rely on the very simplest computing ideas. We were really lucky in the media context -- there were lots of good things that we could do with very simple loops, e.g.

def decreaseRed(aPicture):
   for pixel in getPixels(aPicture):
      value = getRed(pixel)
      value = value * 0.5
      setRed(pixel,value)

There are no conditionals here. Because the Python for loop is really a foreach loop, students don't really even have to understand iteration deeply here. But this little example does something dramatic, interesting, and arguably useful to a picture, and gives students the chance to practice some fundamental CS ideas: Defining functions, variables and assignment, giving commands to a computer, and laying out steps of a process in order.

We've got some ideas for those early activities. Deepak and Doug have had good success using Braitenburg Vehicles as a way of exploring interesting robotics activities with very simple programs. With a handful of lines of code, they can create behaviors that are interesting to explore.

But we also have some non-traditional-robotics ideas to try at this early level, too. Deepak has an interesting idea about studying computational science ideas by having students take measurements from their light sensors under different conditions, in order to graph and more deeply understand the performance of the sensors that they're using. I'd like to try some media and distributed processing (ala StarLogo) ideas. For example, if we have a bunch of robots with microphones and speakers in a cluster, we can have them all run a loop like this:

def listenAndRepeat(numberOfTimes):
   for num in range(0,numberOfTimes):
      sound = captureSound(1000)  #milliseconds
      wait(random(500)) #Wait up to 1/2 second
      play(sound)  #say it back

Now CLAP!CLAP!CLAP! Suddenly, there's applause as all the robots hear the sound and feed it back, and robots hear the feedback and feed that back. It's a really simple example to explore some interesting computing ideas.

It's going to be an exciting few months laying all of this out!

Some initial thoughts on Personal Robots

Fri, 2006-07-14 11:45

Mark gave a nice example of emergent "clapping" behavior for a bunch of robots. I have seen something similar demonstrated by Fred Martin (formerly at MIT Media Lab and now at U-Mass, Lowell). I think he called it a "firefly" demo. The ideas were the same except in this case the robots (whose hardware was all suspended in a tennis ball size transparent glob of plastic) lit up their LEDs. The robots were all placed in a circle and after a while all of them synchronized their lighting up in different ways....kind of like watching fireflies on summer nights.

Fred has also developed a bunch of Braitenberg like robot behavior exercises that are simple enough but convey more than just a sense of programming instructions. The resulting behaviors are intriguing enough for observers who then tend to describe them in amazingly anthopomorphic ways. We've used many of these exercises here at Bryn Mawr and we'll be sure to incorporate some of them in our materials.

The first thing that I'd really want to incorporate in our implementation is to really go after the idea of "Personal Robot". I.e. we should design the robot's body/frame/packaging so that it can be easily amenable to personalization by way of painting, coloring, stickers, and other fun crafty things that are available (sticky shiny stars anyone?). Here's an idea for a first week's assignment then:

Give your robot a personality by customizing it in whichever way you'd like (provide some pictures of examples), give it a name. Explore basic robot movement behaviors (including a way of downloading and playing a short tune...Funky Town anyone?) and design a set of "dance" moves for your robot using the basic movement behaviors in sync with the tune.

Such an exercise will give them an introduction to the robot, some of its features (movements etc) and the structure of a simple program.

Back to the basic philosophy of our approach. Mark said it right, this is not about Robtics and AI or Cognitive Science, it is about learning computing in the context of these and other fields of computer science.

Projects and personalization!

Fri, 2006-09-22 16:40
Fred Martin (not verified)

Everyone.... I very much like the approach Mark is describing of developing the collection of exciting robot behaviors with small programs, that students can understand and then extend. The content/curriculum follows from the well-constructed set of examples. Yes.

I also agree with Deepak re: appearance of the robots. Yes, they should be customizable and fun! Lights and bells and whistles, please! Music and dance on robots is a great way to get into the more imperative stuff! (Better than the traverse-a-square activity.)

Taking a cue from toys my 5-year-old plays with ... the robot should come with a kit of stickers and pipe cleaners and fuzzy balls! (Check out the new PicoCricket kit... http://www.picocricket.com/).

For older kids, think cell phones. A lot of people decorate theirs for fun. Students should really be encouraged to make the robot their own.

It is very interesting to

Sat, 2009-04-04 07:18
Anonymous
It is very interesting to learn about building robots. What are the algorithms that allow useful sensorimotor behaviors to be learned? livecams

Post new comment

  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
More information about formatting options