Additional profile information on Alfred Thompson at Google+
Brian Scarbeau asks "Should html be taught in a web design course?" The comments at his blog are all a resounding "yes" which surprises me. While I do agree that there is a lot of value in learning the underlying HTML in a first course I expected others to disagree. Am I really that main stream?
I expected people to say that the focus would be on design or perhaps on concepts independent of HTML. Or perhaps people would reject the use of HTML in an editor with a preference for tools that hide it all.
Just how important is knowing HTML these days? Look at how much one can do without it. Major mashups with Popfly. Personal site customization with Facebook, My Spaces and many easily skinable sites for people of all ages. Tools for creating websites that are drag and drop designers seem to be increasing in pervasiveness. Do students really need to know HTML?
Honestly I think they do because of the language being so foundational. But with so much possible without knowing raw HTML couldn't it really wait until a later course? Leave a comment with your opinion here. Or drop it over at Brian's blog - especially if you disagree about needing to teach HTML.
"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.
Recently eWeek had a great article entitled "Programming Grads Meet a Skills Gap in the Real World" that I think every computer science/software engineering/computer engineering teacher at any level you read. Agree or disagree it is a powerful and important story. Not long ago the VP of a large development group told me that it takes an average of a year and a half to take a graduate from a top ranked computer science (college) program and make them a fully productive member of the development team.
Think about that for a minute. A year and a half after graduating with a degree in computer science or closely related field. That's a long time. And these graduates are not being hired at cheap rates either.
In the article John Montgomery (his team at Microsoft created the Popfly mashup tool I have written about before) lists six things that he'd like to see computer science programs teach. The quotes items are from John.
So what do you think of this list? I know that a lot of educators resist the notion of university as a place to prepare workers for industry but it seems to me that all of these skills are required for researchers and graduate students. Wouldn't adding more of this to the curriculum help everyone? I think so.
BTW what do you think of the rest of the article?