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 found an interesting little program that creates Sudoku puzzles in Visual Basic .NET. I have to say that I really love it. But not for the reasons one might expect. I don't love it for the amount of cool features it has. Frankly it doesn't have all the bells and whistles that a lot of Sudoku programs I have seen do have. That is, paradoxically, why I love it. If you are looking for something fun to play with, uh, I mean work with and learn from, over the holiday break this may be just the thing.
Let me explain. One of the great learning experiences one can have is taking an existing and functional program and adding features to it. Now while I agree with my college professor who told me over 30 years ago that no program is ever really finished it's nice to have some low hanging fruit. This program has room for all sorts of additional features. What sort of features?
You will be able to work on this program using Visual Basic .NET Express. It was written for Visual Basic 2003 but Express upgraded it nicely for me without any errors. A couple of warnings that we easily fixed because I hate warnings.
Send your students after this one. Try it out yourself. Is it the greatest implementation of Sudoku ever? No it's not. But what it is is an easy to understand, very manageable piece of code that lends itself to extension, expansion, improvement, experimentation and just plain fun. And are those all really good things for over the holidays?
Speaking of holidays - I'm taking next week off. It's time to spend Christmas with my family. Will I be blogging? Probably not very much if at all. I hope you are all getting some time off for the end of the year and enjoy what ever holiday you celebrate.
If you haven't downloaded the v1 release of XNA Game Studio Express yet then this contest may be an incentive. There is just a teaser there now because the contest doesn't open until January. But you or maybe some of your advanced students who are looking for a way to show off their mad game development skills may want to get the software now and start playing with it.
There is information about some XNA tutorials here BTW.
PS: It looks like Tom Indelicato, a friend of mine and an outstanding high school computer science teacher, is looking at using XNA GSE for projects in his Advanced Placement Computer Science class for after the exam.