Additional profile information on Alfred Thompson at Google+
"The goal of much of software engineering is to remove all the fun out of programming." So says Colin Potts of Georgia Tech as quoted by Mark Guzdial also of Georgia Tech. Well if that doesn't scare one away from software engineering and computer science what will! (Before I forget, Mark Guzdial's two part series on Software Engineering and the decline in CS enrollment is well worth reading - part 1 & part 2)
Mark Guzdial sees that attitude as contributing to a lack of interest in programming that is contributing to a lack of interest in computer science. Way too many people think that computer programming is what computer science is all about. Even setting aside for the minute that they are wrong about that - computer science is a lot more than just programming - what programming and fun?
Like Mark who admits to enjoying programming I really enjoy it. Oh sure there are boring and tedious parts to some programming that I could do without. My view of what software engineering is (or should be) and my view of what computer science should be are colored by the fact that it was programming that first attracted me to the field. There I said it.
Now when I was young and didn't have a life I powered through the boring pieces to get to the fun. Now days I want to get right to the fun. Fortunately people - computer scientists and software engineers - are working on that. They're not working on it enough in our research colleges and universities though. Rather they are working on it at companies like Microsoft. Colleges and universities are spending too much time making programming hard for students.
Mark suggests in his blog that we not teach a C-based language in a first programming course. That would include C, C++, C# and of course Java the current darling of the computer science education crowd. Now before I go on let me say that I do think that someone going into computer science for research or for work should absolutely learn a couple of C-family languages. So should someone who wants a career in industry. But not in the first course. Oh good grief no!
The first course should be about the fun and creativity of computational thinking and getting the computer to do what you want it to do. Let's get as much of the tedium out of it as possible. That is the main reason I have promoted Visual Basic as a first programming language for a dozen years or so. It is also why innovative teachers are using tools like Alice and Scratch as an introduction to programming before moving on to "real" programming languages.
For professionals I believe that tools like LINQ for data handling show promise for doing for data manipulation what Windows Forms has done for graphical user interface design. That is to say the tedium is far reduced. Which reminds me. A lot of first courses are all console based - still - in the 21st century. Why? Well because in to many language the tools for creating interactive screens are too tedious. Who wants to write code that explicitly spells out how large a window is (and in what unit of measure?), the precise coordinates of each object on the window along with its size and other properties. Why not just drag and drop objects interactively and let the IDE do the tedious parts?
I see the role of software engineering to be removing the tedium so that programmers (not a dirty word in my lexicon) can have fun writing their code. I believe there is plenty of room for creative work in computer programming. I wish universities/colleges and even high schools taught more of the fun stuff.
Earlier I reported on a teacher who was seeing some interesting and positive results by letting students use tools (computer software tools) that are often blocked or banned in schools. Today we learn the other side of this coin.
Ben Chun reports in his blog how his attempt to demonstrate how DNS works to translate domain names to IP addresses was foiled by the fact that his students are locked out of the command prompt. This is a pretty typical lock down I have found. Anyone know "a DNS/reverse-DNS lookup utility that is free, doesn’t require administrative privileges to install (and preferably doesn’t need to be installed), and can do both forward and reverse DNS lookups." If so drop by his blog and leave him a comment.
On a related note a friend of mine told me about a school local to him where they are using very old software to teach C++ programming. The tech people are afraid that if they allow students to learn how to program on the modern computers that are attached to the network students will "hack into the OS core and do evil things." Yeah, sure, ok. Can I get their resumes? Thanks!
What has happened that we are so afraid to teach students things that are useful and powerful? Are schools dropping machine shop out of fear that students will make knives and zip guns? Are we dropping baseball out of fear that students will use the bats to beat each other senseless? Are we dropping chemistry for fear that kids will open their own Meth labs?
And yet somehow schools feel the need to place a governor on the learning of technology. I have to wonder - who is the problem? Is it the students who want to learn or is it adults who don't want to learn?
You really have to be careful about letting students use computer/network chat programs in school. I mean you hear it all the time. If you let them run chat programs they'll do all sorts of talking behind your back. Who knows what they'll be talking about. You can't have that sort of thing going on. No no no. One person at a time talking and most of the time that should be the teacher who of course knows everything. You've heard all that right? I have.
But as the Cool Cat Teacher Vicki Davis found out recently one real risk is that students might learn something. Something you want them to learn.
Take a look at this blog post. Read the post but the short version is that she set up a chat room for the students in her class to chat about what was going on in class. What happened was that the kids learned more. They asked each other questions and answered them. Students who seldom spoke up or participated in class discussions participated in the chat version of the discussion. And the teacher had a better idea of what the students did and did not understand.
Really does it get much better than that? I hardly think so. Oh it wasn't perfect and there are still issues to work out in the process but it looks pretty good so far.