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.
The Christian Science Monitor has an editorial about the decline in Computer Science enrollment. [Link from Kevin Briody] They point out that the number of students taking the Advanced Placement Computer Science (APCS) exam is down as is the number of people majoring in CS in college. The drop in women is even worse. This is scary to me.
People, especially students, have the wrong idea about computer science. They think it is boring work done by people locked in windowless cubicles. They think computer science doesn’t matter.
But they are wrong. OK sure some people work in cubicles but that’s about as far as it goes. Increasingly projects involve more interaction with people and not less. Developers today need to share ideas and plans with their peers. It is more social today. You need communication skills. And what developers do can make a difference.
There is a bigger message though. Bill Gates has been quoted as saying that after medicine computer science has the biggest opportunities to make a positive difference for society. I happen to think he’s right. When I talk to high school students (which I do a lot but would like to do even more) I tell them to think not about money, though the money in computer science is good, not about jobs, though there really are lots of CS jobs, but to think about the chance to change the world for the better.
I think that computer science teachers as the high school and younger level are important for the future of the US and the world. It is up to them to communicate an excitement for the opportunities that computer science provides. As the motto for the Computer Science Teachers Association (CSTA) goes, “CS Rocks!”
We have to let kids know the truth. We have to let school boards know that CS education is important. We have to start making a difference. If you are a teacher and I can help you please let me know.
BTW if you are a K-12 computer science teacher you will want to look into the Computer Science Teachers Association.