Additional profile information on Alfred Thompson at Google+
There are a couple of very useful resources for high school computer science teachers that are not as well known as they should be. If you are a high school teacher I strongly recommend them to you. If you know a high school computer science teacher, please, pass these on.
I’ll blog about more resources from time to time but these are, I think, especially good. The MSDN AA program is really wonderful for acquiring software while the community at MainFunction is just loaded with helpful resources and information. Pass it on!
Getting students (actually just about any programmer) to write comments is an uphill battle. I tried to convince my students of the value of comments by something from my own experience.
I had written a graphics program back in college many years ago. A few years later (OK about 20) I decided to write the same program again. This time I was programming in Visual Basic. FORTRAN seems not to be so easily available any more. I remembered most of the program and knew I could figure the rest out as I went alone. The program was supposed to draw geometric shapes but when I ran it lines went everywhere but where they were supposed to go. I stared at the image on the screen and realized that I’d had a similar problem when I had written the original program. What I could not remember was how I’d fixed it.
Believe it or not I still had a copy of the original code. It was on punch cards (yeah, I go back that far) and I was able to find it in a box that my wife thought I had thrown out. Fortunately I had written comments for the code. I quickly found the problem. I was passing angle information in degrees rather than in radians. A comment explaining the parameter for a function call made this clear. A quick change and the program was working just great.
That’s a good story for justifying commenting code that is non-obvious or to explain something that was not easy to understand. It’s also a good example of why interfaces to methods, modules, classes and the like should be commented. But we all know that those kinds of comments are still too rare.
I recently read a blog entry by Justin Creasy, CTO of Immerge Technologies on the subject of commenting. I recommend Justin’s version but the short version is that his team writes to comments before the code. In short they build the outline of the program using comments during the architecture and design phase of development. This has several advantages. One is that it aids the planning process. Another is that the comments are already there when the code is written. The trick of course is keeping to comments updated as the program changes.
As I write this teacher friends in Texas and Florida are getting ready to go back to school in the next week or so. I’m sure that many other teachers in other states are also getting ready. My wife, a middle/high school librarian, is a few short weeks from going back to work herself. It’s and exciting time filled with promise. Well it is for most teachers. But for teachers of computer science there is some uncertainty on the horizon.
One of the things I am hearing from teachers around the country is that school districts are cutting back on computer science. I know a teacher who used to teach a number of programming classes who is once again a full-time English teacher. Now there is nothing wrong with teaching English. I loved English as a student. But I do not think that dropping programming is a good idea.
Before I was a teacher I did not see a lot of value in teaching programming to high school students, let alone students younger than that. Nine years in the classroom changed my mind. In fact now I not only thing that high schools should offer programming as an elective I think it should be a required course. When I say that someone almost always responds with one of a couple of objections:
I think that all three of these objections miss something important. Programming is about problem solving and critical thinking. The last I look those were important schools for college bound students, students headed straight for the work place or trade schools *and* knowing how to solve problems is often useful when taking a standardized test.
I agree that many programming courses are hard. I would not suggest that a student with no programming preparation should enroll in an Advanced Placement Computer Science course. (Although that is the first programming course in far too many schools.) I can’t imagine someone accepting a student in AP Calculus if they had no prior courses in mathematics. Can you imagine an AP Calculus teacher teaching addition, subtraction, multiplication and division in there class? I don’t think so. And yet many AP CS teachers have to start from scratch. No wonder students find themselves in too deep.
That being said, a programming course can be fun and approachable for any student. Languages like Visual Basic .NET are not scary. Windows Forms, a key part of Visual Studio .NET, allows students to create real Windows programs with very little code and achieve real success early on in a course. There are free resource materials including a complete curriculum available at MainFunction.com. Check out the Curriculum Center.
I’ll have more to say about programming for everyone and teaching critical thinking and planning skills in future blogs. See you soon!