For the last 20 years, I’ve had this love-hate relationship with computer programming. I took a high school programming course at the suggestion of a math teacher, and found that I enjoyed it and was relatively good at it. I liked the idea of controlling the machine — deciding what I want it to do, and giving it the commands to do it. I was the puppeteer. I was pulling the strings.
This led to taking a structured programming class as an elective my first year in college, which led to my adding “computer science education” as a major.
Unfortunately, at that time, nobody really had any idea what a computer science education major should know, so they basically just told me to get a minor in systems analysis. I took data structures. That was kind of fun. I learned about stacks and queues and linked lists and trees and all sorts of things I don’t understand anymore. I learned Cobol (why?) and Fortran (why?) before finding out that I had inadvertently skipped the first class and had to go back and learn BASIC. Then it was on to IBM mainframe assembly language.
None of this had any real relevance in the world of education. No schools had IBM mainframes. I might get to teach a little BASIC and Pascal. If I was really fortunate, I could teach C (which, oddly, was about the only language that wasn’t required). The college of education predicted that we were going to leave the university and get jobs teaching high school computer science, where we’d be using the only computers schools had available — the Apple IIe. So in our methods courses, we learned 6502 Assembler, how to build analog-to-digital converts to interface with the Apple II, and how to program in LOGO. (The programming part of LOGO, not just the turtle graphics stuff).
By the end of all this, I had had enough of programming. I got a job teaching middle school computer applications. I was teaching students to use productivity applications. The closest I got to programming was writing spreadsheet formulas. Two years later I switched jobs, and inherited another middle school course that had previously been a programming class. “Irrelevant,” I declared. “The kids don’t need to know this stuff.” I taught productivity tools, some Internet basics, and the concept of hypermedia. The closest I got to programming was teaching them HTML from scratch. Now that I look back on it, I’m amazed at what those kids could do, simply because they didn’t know it was supposed to be hard.
I eventually did get a job teaching high school programming. I taught Visual Basic for two years. I always felt it was an awkward language, and that it doesn’t serve the students very well. I’ve been disappointed twice that they’ve kept the same language in place when revising the courses of study. While I can’t say I didn’t like teaching programming, I also wasn’t too sad when my duties shifted into other directions.
I’ve always advocated for teaching kids to use technology to be productive in non-technical ways. Use email and the Internet as communication tools. Use word processors to make your writing better, to simplify editing, and to make professional-looking documents. Use spreadsheets to organize data, answer “what-if” questions, and draw conclusions based on the numbers. Use presentation tools to augment the message you’re delivering in the presentation. There have been many variations on this theme, but I’ve never strongly advocated for learning about the machine for its own sake. So I’ve never really pushed programming.
Apparently, I’m not alone. According to Carnegie Mellon University, the number of computer science majors declined by more than 60% between 2000 and 20004. In the same time period, the number of females majoring in computer science declined by 80%. Some point to the lack of emphasis on the more technical side of computing as a major contributor to this decline. People like me are de-emphasizing how computers work in favor of an emphasis on how we work with computers.
Two recent projects are aiming to change this. Scratch is a programming environment designed for 8- to 16-year-old students by the MIT Media Lab. In it, kids combine graphics, pictures, video, and audio in new, innovative ways. At the same time, they can snap programming blocks together to control how the elements are displayed, or how the computer user can interact with them. Windows and Mac versions of the free program are available on the project web site. There are also lots of teacher resources and an envrionment for students to share their creations.
For older students, Carnegie Mellon has developed the Alice environment. It can be used to create 3-D animated worlds, with characters that move around and interact. It’s a great way to tell a story, create an interactive game, or make a video to share online. It’s targeted especially toward the middle school and high school crowd, with an emphasis on attracting girls. Like Scratch, it’s easy to use, allowing you to drag and drop the various elements to determine how they interact on the screen.
The thing that’s striking about both of these tools is that they’re teaching programming while doing other things. They’re teaching kids to be good problem solvers, innovative thinkers, and collaborators. That’s meeting half of the 21st Century Skills. If they happen to learn a little programming while they’re at it, and maybe decide that they like telling machines what to do, so much the better.
Over the next few weeks, I’ll be taking a closer look at both of these tools.
Posted on June 27th, 2008 by John Schinker
Filed under: 21:Collaboration, 21:Innovation, Front Page, Online Resources, Opinions, Students, Teachers
![[QR Code]](http://staff.bbhcsd.org/schinkerj/files/2010/06/jschinker_qr_sml1.png)
Leave a Reply