In this 2nd of 3 posts about Scratch in the classroom, I’ll look at how Scratch compares to NetLogo. Last summer, I led a computer day camp in conjunction with my Church’s summer fun days. We used NetLogo to teach kids basic Logo programming. I’ve been thinking about how Scratch compares with NetLogo for teaching kids programming and math concepts and will elaborate on my thoughts here.
From the NetLogo website (http://ccl.northwestern.edu/netlogo/docs/):
“NetLogo is a programmable modeling environment for simulating natural and social phenomena. It was authored by Uri Wilensky in 1999 and is in continuous development at the Center for Connected Learning and Computer-Based Modeling.
NetLogo is particularly well suited for modeling complex systems developing over time. Modelers can give instructions to hundreds or thousands of “agents” all operating independently. This makes it possible to explore the connection between the micro-level behavior of individuals and the macro-level patterns that emerge from the interaction of many individuals.”
From the Scratch website (http://scratch.mit.edu/about):
“Scratch is a new programming language that makes it easy to create your own interactive stories, animations, games, music, and art — and share your creations on the web.
Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills. As they create Scratch projects, young people learn important mathematical and computational ideas, while also gaining a deeper understanding of the process of design.”
OK, back to the computer camp. It’s clear that NetLogo was not designed specifically for kids. LCSI’s Microworlds (http://www.microworlds.com/) would have been a better platform. But since our network had about 12 computers (and we had a limited budget), I chose to stick with free programs.
I looked at several free versions of Logo including NetLogo, MSLogo and Elica. I found NetLogo significantly easier to use. But why go with Logo in the first place? One could also use BASIC or Java. The main reason - Logo allows you to get things working on the screen much, much quicker than any traditional programming language. The kids need only know about 3 commands; pd(pen down), fd (forward), and rt (right turn) and they can start using these primitives to draw on the screen - and learn powerful math concepts.
The basic methodology for the computer camp was as follows:
- I supplied cards that had selected commands, syntax, …
- Made sure kids understood that programs that don’t act as expected aren’t bad - or wrong; they just have bugs and need debugging. And almost all programs have bugs!
- We’d read through a help card or two.
- Kids would try out the commands.
- I’d encourage some specific activities.
- Kids would work on projects of their choosing with help from me or my helper.
Various activities included: stick drawings with the turtle, chaining commands together, procedures, total turtle trip theorem, turtle walk, branching, … Activities I specifically encouraged included: draw a square manually, use a procedure to draw a square, use a procedure to draw a triangle, use the square and triangle procedures in another procedure to draw a house (requires debugging). But most of the time, the kids worked on projects of their own choosing. Things the kids really liked included: drawing patterns (boys tired of this faster than girls), using setshape to make the turtle look like something else (like a car driving across the screen), working with multiple turtles (Note - Boys will go to the extreme on this multiple turtle thing. Within minutes of telling them how to generate multiple turtles, the boys’ computers started to hang. I found that boys tend to go from 1 turtle to about 999,999.) Challenges included: typing skills in lower elementary students, syntax issues (you really have to put those spaces in the right places), need to remember to send commands via the turtles or the observer (a NetLogo concept).
I am currently contemplating a Saturday day camp for learning programming with Scratch. I think Scratch can help overcome several of the challenges associated with NetLogo.
- Selecting programming elements from panel instead of remembering or referencing the help cards.
- Dragging and Dropping programming elements instead of typing.
- Shape-based syntax should alleviate many of the syntax issues.
But what am I (I mean, the kids) missing using Scratch instead of Logo? Seymour Papert in Mindstorms - Children, Computers, and Powerful Ideas describes some important concepts that children learn when they start programming - like drawing the figures (squares, shapes, trees, birds) and debugging them (turtle walk) when things don’t quite go right. And don’t forget the important geometric principle of the total turtle trip theorem. As I started working with Scratch I kind of skipped right over a lot of that. Within a few minutes I could make an airplane fly across the screen. Would the kids learn those important basics? (Of course, I could encourage or even try to make the kids do activities similar to those listed above. But one of my goals is to foster intrinsic motivation for an academic endeavor - like programming. And to do that, I really want them to spend their time working on projects that are personally meaningful, not assigned tasks. Somebody - probably Papert or Gary Stager - referred to this as “hard fun”.) At this point in time I think that this won’t be a problem. The kids will quickly run into roadblocks in their programs and need the basics. This personal desire to learn so that they can move forward with their own project will probably create a very effective learning moment. (For example, I started writing a simple Scratch program like the old Pong game. It’s easy to detect impacts between the ball and the side of the screen or a sprite - the player’s paddle - but what do you do then? First try will probably be to have the ball deflect by a fixed angle… Not quite right! Ah! The perfect opportunity to talk about “angle of incidence = angle of reflection” and “number of degrees in a circle”, …)
In conclusion, I consider Scratch a very good choice to use with kids learning programming. This could be done within the classroom, in a computer class, or in a non-academic setting (like the Church class I held last Summer). As for me, I think it’s time to re-read Mindstorms and start formulating some goals for a Scratch camp!
As my background is in engineering, I focused on Scratch as a programming environment in the first 2 posts about Scratch. But I’ve been quite impressed with the flexibility of Scratch - it’s much more than just a programming language. In my final Scratch post (that sounds kind of funny!), I’ll look at other ways Scratch can be used in the classroom. Stay tuned!