Additional profile information on Alfred Thompson at Google+
It never ceases to amaze me how many high school computer science teachers have trouble running developer software (IDEs, compilers, etc) because of computers and/or networks that are locked down too tightly. Either students can't get access to the command prompt or the IDE can't access the C drive or perhaps the network access to shares does not allow executables to run. I have even heard of school network administrators objecting outright to programming classes on the grounds that students might learn enough to "mess with" the network or local computers. Imagine that! Students might learn something!
I think at some point one has to trust students. At one school I taught at students were known to bring baseball bats to school. Yes those same tools of violence that are often used in muggings and even murders. But somehow we trusted students to use these weapons only for the sporting event they claimed to be bringing them to school for. Can't we have the same level of trust for using the network? If a student can learn to behave with a baseball bat why not a network account? The network is a tool for learning. We should be able to teach students to use the network responsibly.
I once bought some lockdown software for my computer lab. The students found ways around it and it became a game for them. Having the lockdown software actually made my job harder. I removed the software, announced serious consequences for making a computer difficult to use or making any other unnecessary changes. Vandalism when down dramatically. Students responded to the trust I gave them.
Setting us computers and networks so that teachers can teach and students can learn is the job of the system administrator. Classroom management and supervision is the teachers job. If a network administrator can't set up a network so that it can be used in a class maybe they are in the wrong job.
One last rant, when I was a CS department head and Technology Coordinator (always fun to wear a lot of hats) I felt that if a computer teacher could not handle full network administrator rights than I should probably not hire them. Now I realize that not everyone feels that someone needs those privileges or that level of expertise coming in to the job. I'd think one would want to teach them enough to have those privileges by the time they finished their first year of teaching if only to reduce the work load of the network admins. Or am I just way too extreme?
Kathleen Weaver relates a couple of frustrating conversations in her blog today. The other people in her building don't have much of an idea about what she does. Isn’t asking a computer science teacher if they program is sort of like asking a math teacher if they can calculate lowest common denominators? On the other hand, it isn’t always the case.
Part of the confusion comes from schools that label any teaching of anything that involves using computers as "computer science."
To those of us who take computer science seriously, at the high school level or otherwise, a course in Office Suite applications (Word, Excel, PowerPoint and the like) is not a course in computer science. A social studies course may involve looking at tables of numbers, building graphs and predicting population growth (in other words using math) but we don’t move the course from the social studies department to the math department. That is because most people understand the difference between using math and learning math for its own value. Computer science is not so well understood though.
So what do you tell people when they ask what computer science is or what do you do in computer science courses? It’s easy and it is complicated. The easy part is that, for the most part, in high school computer science we teach students how to write computer programs. The hard part is that there is really much more to it than that. Learning how to program, when done correctly, is about problem solving, critical thinking and looking at the world from a slightly different angle. In short computer science, even in high school, has the potential to make a large difference for students. It’s too bad that more of them don’t get the chance to find that out.
This article by the author David Brin set off a long round of discussion in Slashdot. A one line summary of the article would be "BASIC used to be on every computer a child touched -- but today there's no easy way for kids to get hooked on programming." And in some important ways he is right. In other important ways he's not. But let's start with where he is right.
BASIC did used to be on every computer that a child, or most children anyway, touched. There was BASIC in my old TRS-80, Apple IIs had BASIC, and so did the Commodore Pet. The Olivetti P-6060 (anyone else remember those?) had BASIC on it. DOS computers had Qbasic or GW-BASIC. I could go on and on showing my age and putting young people to sleep but you get the picture. A child could sit down at a computer, type some commands into the computer and watch the computer do sometime. It was easy, it was exciting and it was the same everywhere. Lots of kids got hooked on computers playing with BASIC. Of course not everyone was thrilled with this. Dijkstra is famous for claiming "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration"
Today BASIC is not on many computers at all. At least it is not a standard and the various versions of BASIC that are available are not the same BASIC that many of us grew up with. There are several versions of BASIC that are available for free and children can get them and they can install them but there are not there to discovery easily and by accident. Even worse they are not the simple interpreted BASIC of old. BASIC like most other languages have been optimized for professional developers. While a great many students learn how to program using Visual Basic (available free as Visual Basic Express) it is not quite as easy as the old versions of BASIC were.
While we are talking about Visual Basic Express, there has been some talk about adding it to the operating system as a standard part of the installation. Dan Fernandez does a great job of discussion why the decision was made to not do that. Nothing in the computer field is the same as it was 20 years ago. Back in the old days nothing took up a lot of room but today everything seems to take up a lot of room. Even with large disks the tolerance for filling up that space with things most people will not use is pretty low. The command line compiler for the .NET languages is part of a normal OS installation BTW. That is not well known.
So where is David Brin wrong? I think there are a couple of ways for students to get hooked on programming. Simple, friendly development environments that allow students to explore programming. I'm thinking of tools like Alice, Squeak, and Scratch among others. I especially like Alice and can see a lot of kids getting hooked on programming by using Alice. The only down side of these tools is that they are fairly limited to their own environments. There is also Phrogram which is a very BASIC-like language with a simple IDE that beginners can experiment with. It's not the same as the old versions of BASIC but I'm not convinced that is really a bad thing.
The biggest problem with the old versions of BASIC is that they didn't have a natural upgrade path. Few of these other development environments have a natural upgrade path either and that is a concern. Phrogram is something of an exception there of course. This is a challenging time for hobbyist programmers and young people who want to experiment with programming. This is one reason that I really wish we could get more middle school exploratory courses in programming. I think that good teachers can make a real difference. I believe that the problems Dijkstra saw with BASIC are more the fault of bad teaching (mostly self teaching) rather than the language itself.