Skip to main content

Students Programming for the Future

Visalia Direct: Virtual Valley
January 2007 Issue
December 11, 2007
(1040 words)


Students Programming for the Future

Twenty-five years ago history was made. The Commodore 64, the first home computer to sell more than a million units, shipped just in time for the Christmas season of 1982. A year earlier, I had received what might still be the most important gift I have every received: a Commodore VIC-20.

Thanks to Apple, Atari, Commodore, and a dozen smaller computer manufacturers, the late 1970s and early 1980s were an amazing time in computing history. By 1993, Commodore was bankrupt, Atari was sold off in pieces, and Apple was struggling to compete against IBM and a legion of “PC clones.”

I am extremely glad I grew up during the personal computer revolution. A generation earlier, I might have built crystal radios and box cameras. Instead, I was learning to manipulate bits and bytes to produce sounds and images. I was thrilled the first time my VIC-20 played a “song” I had converted to BASIC code. (It was “House of the Rising Sun,” from a “Hits of 1973” songbook.)

With my fond memories of learning to program, it is natural to assume that I believe teaching programming to most students would be a great thing. When I speak to parents and teachers about technology and education, I am inevitably asked not if we should teach programming, but when and how.

“Aren’t there even better tools today?” I was recently asked by an elementary school teacher.
I suggested a focus on skills, like word processing or even using graphics software like Adobe Photoshop. Students are more likely to use Microsoft PowerPoint, Word, and Excel than to write the next great video game.

The teacher challenged me with a great question: “Didn’t learning calculus help you even if you don’t use it daily?” Her suggestion was that learning to program helped me in ways that might help other students.

I admit that learning calculus did have some benefits. Calculus was about analyzing a problem, breaking it into pieces, and then finding the solution to what had appeared incredibly complex. I learned that the most complex problems are really collections of easier problems.

Did learning programming teach me similarly valuable lessons? Absolutely. This teacher was right: learning to program was more than learning BASIC, Pascal, or assembly language.

In those early years, you could learn to program by copying lines of BASIC from various magazines. BYTE, PC Magazine, Compute, InCider, and numerous other publications included “program listings” you could type, save, and modify. Typing the programs in order to play games or use applications taught me a lot, not only about programming but also about patience and logic.

Inevitably, I’d make mistakes when typing three pages of computer code. Learning to debug a computer program means learning how to analyze problems. A willingness to admit error, and to correct the error, is something more people need. Eventually, I was coding my own games and applications.

This wasn’t a skill learned in a classroom, or by reading books that started with simple (and useless) examples. I learned to program by copying games I wanted to play. I had a motivation that most classroom exercises can’t match: I was willing to work a week in order to play a version of Pac-Man or Donkey Kong on my computer.

I can get students excited about software applications because the results are something of interest to the. Students learn to use Adobe Illustrator because they want to create pictures, not because they are interested in Bezier curves or advanced color theory.

The programming course I took in high school didn’t lead to “fun results” and didn’t excite me in the least. Getting a computer to print “Hello World” ten times is not exciting. Sorting a list of words? Sorry, but that’s not fascinating.

Thankfully, this teacher’s question propelled me on a search for the best tools and techniques to teach programming. It turns out there are some great tools.

LEGO Mindstorms (http://mindstorms.lego.com/) are fully programmable robots made with a mix of familiar LEGO bricks and new robotic pieces. You can buy vision sensors, sound chips, robotic hands, and more. Now, that’s fun. Teachers are using these LEGO robots to teach everything from math to English.

The LEGO Digital Designer is available for free at the LEGO Web site. You can build both traditional and Mindstorm projects onscreen. I had my students use “LDD” to create toys and write about their creations. These students, some of whom struggle with English, were so excited that they produced fantastic manuals for their toys.

Programming a LEGO robot reminded me of LOGO, a computer language famous for its “turtle” that drew shapes on screen. I thought LOGO was dead, but I was wrong. The Massachusetts Institute of Technology has created StarLogo: The Next Generation. StarLogo is free, with lots of sample lessons and activities for the classroom (http://education.mit.edu/starlogo-tng/).

As dubious as I was, it turns out that StarLogo is fun! I spent a couple of hours creating “breeds” of turtles to guide. This felt more like SimTurtle than programming. Instead of writing code, you “drag-and-drop” commands, which snap together like LEGO bricks. Despite how much fun I was having, I was also creating “real” computer programs. Elementary and even high school students used to “virtual pets” seem to enjoy StarLogo. You can’t beat the price, either.

Having as much fun as I did 25 years ago, I sough more fun ways to use programming the classroom. Stumbling into SqueakLand was another pleasant surprise (http://www.squeakland.org/). Students use Squeak to create “virtual toys” in the Smalltalk programming language. There are “squeaker” Web pages where students share their creations world-wide.

I am impressed with what students are creating. Squeak toys, created by students as young as eight and nine, are simple but wonderfully creative. My favorite toy was a dancing flamingo created by a young girl named Lauren. I’m willing to bet that Lauren had more fun creating the flamingo than I did printing “Hello World.”

The “good old days” of computer programming aren’t dead, after all.

Based on my own classroom experiences, maybe programming does have a place in our classrooms. My students used math and English skills that will help them no matter what career paths they follow.

Comments

Popular posts from this blog

MarsEdit and Blogging

MarsEdit (Photo credit: Wikipedia ) Mailing posts to blogs, a practice I adopted in 2005, allows a blogger like me to store copies of draft posts within email. If Blogger , WordPress, or the blogging platform of the moment crashes or for some other reason eats my posts, at least I have the original drafts of most entries. I find having such a nicely organized archive convenient — much easier than remembering to archive posts from Blogger or WordPress to my computer. With this post, I am testing MarsEdit from Red Sweater Software based on recent reviews, including an overview on 9to5Mac . Composing posts an email offers a fast way to prepare draft blogs, but the email does not always work well if you want to include basic formatting, images, and links to online resources. Submitting to Blogger via Apple Mail often produced complex HTML with unnecessary font and paragraph formatting styles. Problems with rich text led me to convert blog entries to plaintext in Apple Mail

Learning to Program

Late last night I installed the update to Apple's OS X programming tool suite, Xcode 4. This summer, in my "free" time I intend to work my way through my old copy of Teach Yourself C and the several Objective-C books I own. While I do play with various languages and tools, from AppleScript to PHP, I've never managed to master Objective-C — which is something I want to do. As I've written several times, knowing simple coding techniques is a practical skill and one that helps learn problem solving strategies. Even my use of AppleScript and Visual Basic for Applications (VBA) on a regular basis helps remind me to tackle problems in distinct steps, with clear objectives from step to step. There are many free programming tools that students should be encouraged to try. On OS X, the first two tools I suggest to non-technical students are Automator and AppleScript. These tools allow you to automate tasks on OS X, similar to the batch files of DOS or the macros of Wor

Learning to Code: Comments Count

I like comments in computer programming source code. I've never been the programmer to claim, "My code doesn't need comments." Maybe it is because I've always worked on so many projects that I need comments  to remind me what I was thinking when I entered the source code into the text editor. Most programmers end up in a similar situation. They look at a function and wonder, "Why did I do it this way?" Tangent : I also like comments in my "human" writing projects. One of the sad consequences of moving to digital media is that we might lose all the little marginalia authors and editors leave on manuscript drafts. That thought, the desire to preserve my notes, is worthy of its own blog post — so watch for a post on writing software and notes. Here are my rules for comments: Source code files should begin with identifying comments and an update log. Functions, subroutines, and blocks of code should have at least one descriptive comment.