Additional profile information on Alfred Thompson at Google+
The second part of an interview with Bjarne Stroustrup showed up last week. (I talked about part one earlier.) One of the questions he was asked was if we should be "simplifying the process of coding so that more individuals are able to participate in development?" Stroustrup's answer is interesting and in two parts. Both parts are ripe for discussion. The first part of his answer is that "The idea of programming as a semiskilled task, practiced by people with a few months' training, is dangerous." The second part should be very interesting to those of us trying to teach programming - "I don't think it is true that the programming languages are so difficult to learn." He basically says that most other academic subjects are more complex, have more detail and are harder to learn. Interesting.
I go back and forth about the idea of a lot more people being able to do their own programming. There I times when I think just about everyone should be able to develop their own code for specific applications but that they need some easier tools to use. There are other times when I think we have way too many programmers who don't really know what they are doing already. The ideal is probably somewhere in the middle. I do think that we have to make it easier for more people to do more with their computers than they do now. Does that necessarily mean they will or should be programming? That is unclear.
The idea of programming being easier to learn than other academic subjects again is - maybe so maybe not. I do believe that programming language syntax is not all that complex. Really it's not. Compare it to the weird stuff that goes into calculus or the complexity of learning another natural language or even the correct order of events in a history class. What is difficult about programming is the mind set - the thought process that goes into developing a program. That is what takes a while to teach.
That being said the art of teaching programming involves teaching the syntax and language structure at the same time one is teaching the planning and thought process that is involved in actually doing programming. Learning a second or third programming language is often a fairly trivial process for most people. The hard part is constant (mostly) while only the easy part (the syntax) changes. This is why tools like Alice, Squeak and Scratch are so popular - they allow teaching of programming concepts without the complexity of (the easy part) language syntax. Programming maybe the only discipline where we teach the hard part first and then come back to the easy part.
The hard part of programming is not programming languages but programming thinking. We may use other tools to avoid the more involved syntax of most programming languages at the beginning but there is real power in them so eventually people have to learn them. They really shouldn't find the languages all that difficult. It's not rocket science after all. And oh by the way they taught rocket science in my high school 35 years ago.
I maintain that the real problem with learning programming is poor teaching and poor teaching tools. I do not exempt myself from that poor teaching either. I often think that a lot of my students succeeded in spite of my teaching rather than because of it. If I'd done things differently maybe programming would have "clicked" for more of them. Maybe more of them would be writing code to change the world. We should be spending some of the money we are spending on new programming languages and put it into finding new and better ways to teach what really should be a moderately difficult rather than extremely difficult course of study.
What do you think?
I read a resume recently where the job applicant told of his 7 years of professional experience. It read as if he thought that was a long time. I have over four times that much experience and yet I still feel like a newby at times. Things are just changing that quickly. My friend Mr I (who is not as old as I am but he's close) recently talked about how far word processing had come. It is interesting (read the comments too) to see the perspective. if word processors have always been what you see is what you get you may want to take a look.
I remember when laser printers first came out and we had variable fonts in the same document for (pretty much) the first time. Proportional width fonts caused us no end of problems as we did not have WYSIWYG editors. Rather we used various markup languages like Runoff, TROFF, SDML and others.Those of us who used to do fancy "word processing" with text editors and markup languages had a rather easy time adjusting to HTML and the world wide web when it came around. So as much as things do change we build on what we've learned and used before. Knowledge is seldom if ever wasted. So if someone tells you that what you are teaching now will be useless because of change later you just tell them that what students learn now will at the very least help them understand what is coming as it comes along.
I see the the first qualifing round of the North American Imagine Cup Software Design competition closes on Sunday. Technically it is only open to college/university students but it appears that a number of high school students have taken the challenges and made in to the leaderboard. This further convinces me that motivated high school students with coaching from good teachers can do a lot more advanced computer science work than a lot of people give them credit for.
The Software Design competition is one of a set of competitions that make up the Imagine Cup. The Imagine Cup is an international competition for university level students. It includes nine different competitions in three basic areas. These events are a great way for students to test themselves against the world-wide competition that makes up the world of computer science and computer engineering today. And of course there is some money and fame to be won as well. A good number of top ranking finalists in past years have been able to take their projects and turn them into businesses.
The list of events is: