SIGCSE 2007 in Covington, Kentucky is going to be an exciting place for Greenfoot activity. Michael is leading a workshop on Greenfoot, and we will have some space (free iPod!) at the Sun Microsystems booth in the exhibition space for presenting Greenfoot and talking to people who are interested in this really cool software.

What might be (free iPod!) of interest to people who will be attending the conference is that there will also be a Greenfoot programming competition! We’re not sure if there will be any prizes yet (iPod!), but we’re hoping we can come up with something. (OK, OK, I’ll cut the suspense. At the least we’ll have some Greenfoot mugs and t-shirts.) The competition will require you to use some of your decentralized Java chops to develop agents who can “get their agent on” better than (did I say iPod Nano?) anyone else’s agents.

In particular… we’re going to give you Greeps. These little aliens just love tomatoes, and your job is to make sure they’re well fed. I’d show you a screen shot… but I don’t want to give too much away right now. I suppose I could let you see what the Greeps look like, though:

20070304-Greeps

I had to blow that image up a bit, and it doesn’t (really! a nano!) look as good as it should… but I think you get the idea that these are some evil, vicious… tomato eating… cute… aliens that are set to take over the wo… ravage gardens everywhere.

So join us at SIGCSE, and check out the programming competition. Perhaps we’ll even have some kind of MP3 player as one of the prizes… ;)

Most of you don’t actually see Poul Henriksen on a regular basis don’t know that he has been claiming this release would come out “any day now” for, like, the last two weeks. But, today is today, and here it is!

Straight from the announce list:

Greenfoot 1.1 is available for download now.

http://www.greenfoot.org/

This version of Greenfoot adds various improvements, both the
performance and stability, as well as some new features.

The most noticeable of the new features is the support for sound. To
demonstrate the sound support (and exciting game programming in
general), we have also released a new scenario, named asteroids.

Both are available form the Greenfoot web site.

For those of you who are planning to attend the SIGCSE’07 conference
in March: We will be holding a Greenfoot workshop at the SIGCSE
conference. Come and join us!

The Greenfoot Team

Oooh! And I got to use the “releases” category, too!

This rambles a bit, but it gets there in the end. And I enjoyed reminiscing, so please excuse me if I take the liberty of using a few virtual column inches to walk down memory lane.

The BBC has a short story on the OLPC project. I liked this quote:

“In fact, one of the saddest but most common conditions in elementary school computer labs (when they exist in the developing world), is the children are being trained to use Word, Excel and PowerPoint,” Mr Negroponte said.

“I consider that criminal, because children should be making things, communicating, exploring, sharing, not running office automation tools.”

This is so very true. I look at the UK ICT curriculum (or some of the kinds of “technology” courses available in US secondary schools) and am sad about the material students are subjected to. When I first encountered a computer, I didn’t run office automation tools—in fact, I used simple programs to do simple tasks. To be fair, it was an Apple ][e, and therefore there the level of possible complexity was limited. This machine had a maximum resolution of 560×192 (”Double Hi-Res”) and 1MB of RAM, all running at 1MHz. The MacBook that replaced my stolen Powerbook has a 1280×800 resolution, 2GB of RAM, all running at 2GHz… with two cores…

oregontrail

But I digress; the point I was making was about software complexity. You can probably argue (effectively) that software for the Apple ][e was simpler because it had to be, and that might be true. Oregon Trail was the most complex game I can remember, and it was (largely) a text-based game with the occasional image. Likewise, most of my time spent using the machine was spent writing BASIC programs to plot images, one point (or line) at a time. Sadly, I have none of these left—digital media being what it is—but I remember with great fondness plotting out pictures on graph paper, and then entering the countless BASIC PLOT statements to make pictures on the screen.

If you read papers by members of the BlueJ team, you see that simplicity in software is an explicit design goal. BlueJ has a limited number of menu options, and it’s primary interface has just four buttons (it might be five now—I can’t remember). Greenfoot, descended from BlueJ, inherits some of that simplicity for free, and maintaining that simplicity, while providing expressive programming power, is key.

But, perhaps more importantly, software like Greenfoot gives students a programmatic canvas on which to explore. A typical program in Greenfoot is still more complex than my first BASIC programs that plot pictures on the screen, but we could probably invent a Greenfoot world that had different colored, pixelated actors who I put in place with a long sequence of plot(x,y) methods. Object-oriented? No. Easy, and immediate, visual feedback regarding success or failure? Yes. Simple enough for a 4th grader? No doubt—and with much more room to grow into. I, myself, never really mastered PEEK and POKE in Apple BASIC.

bankstreet

To come back to the beginning—Negroponte bemoaning the fact that kids are learning Word and Powerpoint in schools today. I agree. On the social/economic side, the Microsoft Office suite is expensive, commercial software—we are irresponsible adults for addicting kids to such an expensive product at such an early age. But, even worse (sticking with my drug analogy for a moment): the drug isn’t even fun. Back in the day, I wrote reports on the Apple ][e, I used Bank Street Writer. You could type reports, and that’s it. It was simple to use, and let me do one thing only—write book reports. Compare this to the monstrosity that is Microsoft Word. Better yet, don’t—Bank Street Writer was function given form, and there is no comparison. Perhaps this explains why I like using text editors, or programs like WriteRoom from Hog Bay Software. A full-screen text editor and nothing else. I mean, it even looks like Bank Street Writer running on a ][e.

But more importantly than economic factors, or arguments regarding simplicity and complexity, I think there is a more fundamental and critical point to be made about kids having fun. And having fun, to me, means that children should be creating. (When does childhood end? Ask me again in ten years.) So really, I don’t care if it’s with clay, crayons, or the computer, but providing creative activities and outlets for kids of all ages is the best way to nurture a hungry mind. And if the OLPC opens up creative doors for millions of kids in the world, all the better.

I just hope Greenfoot can run on it.

At the University of Kent I run a series of workshops (along with Christian Jacobsen) called Cool Stuff in Computer Science. These workshops introduce students to… well, cool stuff. Generally, in computer science. As the year progresses, we let their interests drive the workshops. In the beginning, however, we pick things we think will be both entertaining and, perhaps more importantly, open doors to interesting parts of the discipline that they can explore further on their own.

This last week was our first meeting of CSCS this year, and we took a look at Greenfoot. I put together a simple exercise, and gave them two scenarios to explore. The first got them into making agents move, and the second was a bit broader in scope—it was more for them to look at on their own than to drive a particular exercise. For a moment, I want to focus on the first of these two.

It was called “hippos”, and it conatined two kinds of agent: hippos and sheep. It was little more than a reworking of the Wombats scenario, but instead of using cute, furry wombats, it used little gray hippos and white fluffy sheep. Of course, I set these up as ill-tempered, flesh-eating hippos who liked nothing more than a muttony, fluffy snack!

This may seem silly, but when we introduced Greenfoot the year before, we used Wombats. This is a fun scenario, and the students did some interesting things. But this year, they did some wacky things. I mean, really funny stuff. One student introduced rage lemons, which (when a hippo ate one), it would go into a homicidal rage, eating every sheep it could find. Another student wanted the sheep to explode when eaten (introducing a new Actor that was, essentially, the explosion). Yet another quickly discovered exponential growth, as their “love hippos” would procreate beyond control… ultimately, causing Greenfoot to throw an exception.

My point? Greenfoot is a very compelling microworld. And perhaps this is a property of all microworlds, but the “creatures” we populate those worlds with probably effect the kinds of projects students do greatly. In the past, I’ve introduced AIDS dissemination or traffic flow models. This year, I gave them enough to make their Agents move around with very little preamble, and let them be creative. Put another way, I wonder if the simple choice of icons that you use for populating a Greenfoot microworld effects the way students approach the problem?
Given that my Mac was stolen a few weeks ago, I’m not terribly effective at taking screenshots and the like. However, I do have copies of some of their projects, and will make those available here over the next week or two as a series of posts. Largely, this is because I thought that, at a “Cool Stuff in Computer Science” meeting, the students had done some pretty cool stuff.

John Pais wrote the greenfoot-discuss mailing list (sign up here) to announce some neat worlds that implement quizzes in Greenfoot.

screen-quiz

Now, I think this is just wacky. I mean, who knew you could do stuff like this with Greenfoot? I didn’t. Poul and I had a fun time seeing if we could answer questions designed for students at the Advanced Placement Computer Science level. It turns out, Poul doesn’t actually know anything about object oriented programming!

(OK, so I’m kidding. We got the right answers. But it is funnier to think that Poul doesn’t know anything about object-oriented programming. ;) )

You can download John’s world from the Greenfoot scenarios page.

There’s a lot of microworlds out there. The original microworld was probably LOGO (Wikipedia), with its iconic turtle. Today, there are countless environments in which students can create characters, agents, worlds, universes… all programmable, all creative, all quite cool. Alice comes to mind (a 3D environment in a novel language intended for beginners), as does NetLogo (a massively parallel LOGO). And if you’re open-minded, things like the LEGO Mindstorms is a physical manifestation of these agent-based microworlds… a real, robot agent that kids of all ages can program and play with.

Why, on the Greenfoot weblog, would I be pointing to… the competitors? Humor aside, each of these environments provide a very different way of approaching the same ideas, and as users and educators, we stand to learn a great deal by looking at a broad spectrum of tools. At one level, all of these programmable microworlds provide opportunities for beginners to program in an interesting and engaging environment. At another, they challenge students to think about an interesting class of problems: software agents interacting with each-other, dynamically and (in some cases) unpredictably. This is critical in the real world: programs that interact with databases, webservers, and the like operate in fundamentally the same (unpredictable, agent-based) space.

In the case of Greenfoot, there’s an added benefit that the language encounter Java. Java is widely used in the world today, and the object is a reasonably natural way to represent an individual agent wandering free in the world. What I particularly like is that the notion of an object (an abstract concept that is often difficult to explain to a novice programmer) gains a visible analogue in Greenfoot: “that (ant, wombat, thing on the screen there) is represented by an object.” Students can inspect those objects (just like in BlueJ) and see how their agent’s state changes as it wanders about in the world. That, I think, is quite cool.

seagull-beach

Since I’m actually at the beach, I’m going to stop my musings on “why I like Greenfoot”… as I should be out enjoying the sun! However, I’ll continue these thoughts from time-to-time. If nothing else pulls me away, I have to make sure that the fish stew I’ve planned for this evening continues as planned. We have a nice, long-grain brown rice, 2lbs of fresh shrimp, 3.5lbs of assorted, firm white fish (all fresh off the boat!), lots of fresh tomatoes, and good garlic bread and salad to go with. Yummy.

The Marine Biology Case Study

Given that I’m on the shore, it’s a perfect time to mention the Marine Biology Case Study, which is now available as a Greenfoot microworld. This was an example project used by the US College Board for the AP Computer Science course; now, it’s far more interactive and interesting to play with. If I can’t wrangle a guest blogger here to walk us through the case study, I’ll dive in and do my own exploration. Marine biology and beaches: two great things that go great together. :)

_photos_uncategorized_turtle_shell

There is no such thing as “intuitive” when it comes to software. I’m not sure about obvious, however. ;)

By way of BoingBoing, I have discovered Bilibo.

From the website:

Bilibo’s unique form arouses curiosity, stimulates the senses, engages the imagination, and encourages creativity. Both boys and girls can find virtually unlimited ways to play with Bilibos – from rocking, spinning, and sitting to hiding under, carrying with, and peeking through. At home, at the park, at the beach, in the water, and even in the snow, Bilibo provides hours of open-ended play.

This toy is amazing: it is obvious in both form and function, yet has no specific form or function unto itself. Only through a child’s creativity can the shell become… well, anything.

I hope Greenfoot becomes as obvious—or not—as this toy.

I want you all to know that programming for all to see like this is kinda like wandering through a crowded farmers market in your pajamas. Everyone can see how many mistakes you make, and that you’ve got a robe that’s just a bit too small, and you still like fuzzy slippers with funny little monsters on them.

My point is, don’t make fun of my first Greenfoot world. I’m proud of it, even if it doesn’t have wombats in it.

I called it LumpWorld.

To start, I fired up my freshly downloaded copy of Greenfoot. You may need to get Java 5 before you can get started; it’s a big download, so you’ll want to start downloading it slightly before you started reading this post.

First things first; I opened up Greenfoot, and I created a New project (File -> New). I called it “LumpWorld”, because… well, I figured my first world really wouldn’t do anything. So, everything in it would kinda be like a lump.


lump-01

Now remember Matt’s Mantra: documentation is for C programmers. I figure that I’ve hung around the BlueJ guys enough that I can just figure out how to use Greenfoot. So, I right-clicked on Actor, and chose New subclass. When given the opportunity, I called it “Lump”.


lump-02

(Question to self: If you’ve never programmed before, does New subclass mean anything whatsoever? Perhaps this should be New Protoge, or New understudy?)

What I was surprised by was the next dialog: I get to choose a picture for my Greenfoot Actor! Sweet. Now, I could go digging around my hard drive for something really lumpish, but for now, I’ll use a mushroom. They’re kinda lumpy.


lump-03

My Lump now has a picture, but it isn’t ready to go on-stage. To do that, I need to hit the Compile All button. This checks my code, and then gets my Lump ready to run around in the Greenfoot World.


lump-04

I have to admit, I was getting excited at this point. I right-clicked on Lump, and said New Lump(). I thought “Sweet. Mushrooms everywhere!” Turns out, though, I was wrong.


lump-05

I can’t put my mushroom down! You see, I’ve just created a new Lump, but not a new world. This may not be obvious, but I apparently need to have both a World and an Actor to play in it. And here I thought “… all the world’s a stage,” or something like that…


lump-06

If I right-click on World, I can select New Subclass again. Here, I’ve called my new World “LumpWorld”. To use it, I have to Compile All again.

Now, things change a bit! This was nice: I now have an empty world in which to place my lumpy mushrooms. Pretty cool.


lump-08

I know it seems silly, but this struck me as a really nice behavior. So far, I’ve written absolutely no code, but the environment is doing reasonable things for me… like giving me a titled, blank canvas to work on. Oh, the universes I will conjure!

(*cough* OK. It’s getting late. I get a bit loopy when I’m tired.)

At this point, I can right-click on Lump, and place one or more mushrooms in the world. Keep in mind, they’re not really mushrooms—they’re Lumps, but they happen to have an icon that looks like a mushroom. (In the future, I’ll try and use icons that look like the thing I’m creating. At least for a little while.)


lump-10

Bling! A world full of mushrooms! If you’re keen, you can run your world now:


lump-11

And nothing happens! Why? Because we haven’t made the Lump actor do anything. But making our Lump objects do nifty and exciting things is going to have to be for another time… because right now, I need to catch a bus to Chicago.

What is Greenfoot? Well, you read one of the papers written about Greenfoot, but that’s not fun. (They’re good papers though; you should read them. :) ) Besides, it’s such a visual environment, we should be able to do better than that!

The screenshots give you a good idea as to the diversity of microworlds you can explore, in Java, using Greenfoot. My purpose in starting this weblog was to explore, in public, discoveries made while programming in the environment, as well as my thoughts about how I could imagine teaching and learning with it in the classroom. In my explorations, I’ll try and augment the screenshots we have with some video clips, to give you a sense of just how neat these virtual worlds are when they’re in motion. (You could, of course, download Greenfoot and explore this for yourself…)

Keep in mind that Greenfoot is currently a moving target; however, the Greenfoot team is working hard to put the shine on every aspect of the software, and bring it to a full version 1.0 release. We’re pretty excited, because right now Poul Henriksen, Michael Kölling, and Davin McCall (visiting from Deakin University in Australia) are all at Kent, meaning that things are moving along very quickly. While it is true that BlueJ is now maintained by a distributed team (at both Kent and Deakin), there are huge advantages during the early stages of a project to having everyone in the same place!

(In case that was confusing, Poul and Michael are usually at Kent, except for when they’re traveling, in which case, they’re not. But it is not surprising that they’re at the University of Kent. Or perhaps it is. But it isn’t meant to be surprising. Did that make sense?)

So when will Greenfoot be officially released? The “Big 1.0″? Perhaps you should keep reading this weblog, and find out… :)

The Wikipedia, the source of all knowledge likely but questionable, has this to say regarding the word walkabout:

Walkabout refers to the belief of non-indigenous Australians that Aborigines were prone to “go walkabout” (a pidgin or perhaps quasi-pidgin expression) meaning that they would stop doing their jobs and wander through the bush for weeks at a time.

This has lead to a jocular modern usage, whereby someone who has unexpectedly wandered off to destination uncertain is said to have ‘gone walkabout’. It can also apply to a missing item, for example, “Have you seen my stapler, Doreen? It’s gone walkabout again.”

“Whereby someone who has unexpectedly wandered off to destination uncertain.” I like this a lot; my intention is to wander off to destinations uncertain with Greenfoot, and begin exploring how we can use this wonderful piece of software for teaching and learning Java. And, if I have anything to say about it, we’ll certainly have some fun along the way. :)