I had been researching some books on Squeak in September and I found a couple by Mark Guzdial, a professor in the College of Computing at the Georgia Institute of Technology. In his bio. it notes that he is “the inventor of the Media Computation approach to learning introductory computing, which uses contextualized computing education to attract and retain students.”
A topic he’s talked about a couple of times covers why students are turned off to programming. This is an important topic, because there’s been a noted decline in the number of skilled developers in the U.S. If you were to ask most people in the field why there’s been such a drop off, the first response you’re likely to get is “economics”, and “companies are sending those jobs off to India. Why would anyone enter this field now?” For years now, since the bottom dropped out of IT spending in 2001, there’s been a contingent of people in the technology community who have actively discouraged people from entering the programming field. They think they’re doing others a favor. They’re convinced that like farming and manufacturing, Americans just don’t code anymore. There’s no future in it, and it’s going overseas.
Guzdial has a different observation: A significant number of Americans are afraid of programming, or are just not interested. They have an aversion to it. His thinking is they perceive it as being too hard. He talks about his direct first-hand experience with this in two posts: The most recent, “Preparing Students for Java: A Rational Model for K-14 CS”, and one from September called, “Students find programming distasteful” (Update 5-24-2013: These two were from Mark’s Amazon blog, which has since disappeared. He set up a new blog on WordPress, though I don’t think any old posts were brought over.)
“Brin’s argument echoes one that Eric Roberts of Stanford has been making for awhile: That we’ve made the intro languages so hard that students can’t just simply explore algorithmic thinking anymore.”
He goes on to suggest what he thinks is a more rational approach.
In his post from September, he talks about his experience with students trying to drop his class once they find out there’s programming involved, and the similar experience that other professors in other disciplines have when programming is introduced:
“Mike is running a trial section of 140 students. The day that he introduced the programming aspect, a dozen students applied to drop the course. Note that: nearly 10% of the enrollment. They had to talk to Mike to drop, because of the trial nature of the section, and the common reason was that they didn’t want to do any programming in Physics.
Now, I can understand the students who wanted to drop Computational Freakonomics. Students have different expectations of a study abroad course than they do of an on-campus course, and programming clearly wasn’t part of those expectations. But Introductory Physics is a required course for nearly everyone at Georgia Tech. If the trial goes well, they will use this approach for all sections of Physics at Georgia Tech. Students dislike programming so much that they are dropping a required course – I guess in the hope that the trial goes badly and that there’s some future chance of taking physics without a programming component.
Where does this dislike of programming come from? This isn’t about not liking programming as a job choice –this isn’t about avoiding facing a cubicle engaged in long, asocial hours hacking. This is about using programming as a useful tool in a non-CS course. It’s unlikely that most of the students in the Physics class have even had any programming, and yet they’re willing to drop a required course to avoid it.”
Guzdial’s own course, “Computational Freakonomics”, featured programming, but students were disallowed from dropping it, due to how the course was classified. Nevertheless a significant number of students tried to do so when they found out programming was involved. He asked for feedback from the students when the course was done. He said, “the feedback was strongly positive–even on the programming.” The difference was the experience of programming. In the past Guzdial has talked about using the Python language in his courses, so I suspect he used it here. The language was probably a significant factor in the positive experiences of his students. He doesn’t say that. It’s just my guess.
I was a little surprised to hear about this myself. When I was a student in the public schools, there was a push for what was called at the time “computer literacy”. In the late 1970s and very early 1980s, computer programming was considered a part of the literacy curriculum. Schools were buying computers, and so were parents for their children. Every computer came with a programming language, typically BASIC. The Apple II computer even had a “machine monitor” where you could drop down to programming it directly in machine code (hexadecimal) if you wanted to. Every computer had some sort of “introduction to programming” instructional material included with them as well, giving a tutorial on BASIC. The schools I went to had programming courses in BASIC and LOGO.
One of my first experiences with a computer was an Atari 400 that was available for public use at my local library, back in 1981. I was interested in learning how to program, mainly because I saw what other people were programming. It was neat stuff. The library had a software package I could check out, published by Atari, that ran an automated BASIC tutorial. So one day I checked it out, plopped the tape in the tape drive, typed a command on the computer, and off it went. It had an automatic visual display and a voice track, explaining a bit about how the computer worked, and then how to get started programming. I can’t remember exactly, but it probably took 2 or 3 hours to get all the way through it (I may be way off). That alone didn’t help me learn it. I read through a book they had on Atari BASIC, and I got some help from others who stopped in to use other computers there. It took a few months of just slogging away at it before I felt like I really got it.
The literacy curriculum started to change by the mid-1980s when I entered high school. At that point it emphasized how to use a word processor, spreadsheet, and perhaps a database. Programming classes still existed in the schools, but there was less of a feeling of urgency to take them. Programming classes are still taught in public schools today, though I can’t say how popular they are.
When the phenomenon of “programming as literacy” was taking root, people took up programming with enthusiasm. There were several computer magazines that one could find at grocery and book stores that contained what were called “type-in programs”. The complete source code for a project was printed in the magazine, again, typically in BASIC, along with an article explaining what it was. You typed in the code, tried to run it, realized you had made typing mistakes, tried to find your bugs, and correct them. It was very educational. Eventually you hoped that you could get it to work, and enjoy it. Sometimes the program was a game. Sometimes it was a useful application or utility program that you might use many times to make the computing experience easier. This coexisted with commercial software that people could buy. The type-ins were usually simple programs, not commercial quality. They weren’t quite as exciting, had fewer features, and were not as easy to use. The magazines were cheap, though, compared to commercial software: $4 per issue vs. $40 for one piece of low-end commercial software. Each issue contained several type-in programs. For me there was a sense of accomplishment. I learned a bit about each program as I typed it in. It added to my own education on how to program.
It seems to me that back then, people were not afraid of programming. People embraced it as a constructive, perhaps even advantageous learning activity. It was definitely new, and people felt that it was “the wave of the future”, so “don’t get left behind”.
Movies and TV shows even got in on the game. Some talked about hacking a computer at some level. Usually the hacking was “magical”. They didn’t show you a thing about how it was done. It had the feel of someone casting a spell, something mysterious goes on, and then the right thing happens. They didn’t show anyone programming, but there was definitely a sense you got of the characters knowing the machine, and getting it to do what they wanted, which was pretty much what programming was about then. Two movies come to mind that had this as a significant theme: “Tron”, and “Wargames”. There were other movies that had scenes where this came into play, but they were gags. The TV shows that had this that I can think of were “Automan”, “Whiz Kids”, and…well…I guess “Knight Rider”, though that’s a bit of a stretch, I admit. There were a couple movies I remember that tried to make nerdiness look cool: “Real Genius”, and “Weird Science”, though the 2nd one was just hokey.
There were shows galore about computers and programming on PBS then. The ones I can think of are “Computer Chronicles”, and a computer feature series produced by the BBC, and an instructional series produced by the Annenburg/CPB Project (I can’t remember their names). The one by Annenburg went into some depth into how computers operated, and how to actually program them. In the late 80s, a mini-series was produced and shown on PBS, called “The Machine That Changed The World” that talked about computer history.
The enthusiasm waned in the late 1980s. Magazines that used to offer type-ins either changed their format, taking the type-ins out, or eventually went under, as most of them did in the early 1990s.
So what changed? Is it the languages that are being used now? Guzdial suggests that the CS educational system, perhaps as early as middle and high school, is hitting students too hard, too fast. I don’t know quite what he’s talking about. He suggests that Java would be appropriate as an AP course in high school, as opposed to introducing it to students earlier. That makes sense to me, but in my state, Colorado, that’s what we’re doing, last I heard. Maybe other school systems are introducing it sooner?
The conventional wisdom for years in the IT business community has been that students avoid programming because they think it’s uncool. They have a negative perception of nerds, and they don’t want to become one of them. But Guzdial contradicts this notion. It’s not that they’re afraid they’ll become antisocial people sitting in front of a computer all day. They’re just afraid of programming, period. He also points out the irony that there are many in non-CS fields who are learning to program once they get out in the work world (though what he describes them doing sounds more like script programming), in order to automate repetitive tasks. So what’s going on? Anyone have any ideas?