Additional profile information on Alfred Thompson at Google+
Kathleen McGrath on the Visual Basic team posted some interesting links for people who know Visual Basic and want to learn something about ASP .NET for web development.
There is a new MSDN article called A Visual Basic Developer's Introduction to ASP.NET 2.0 and some webcasts and multimedia presentations at Learn ASP.NET that are aimed at beginners. I'm going to be spending some time with them myself. I need to get better up to speed with ASP .NET myself.
Recently there was a tread on the Advanced Placemen Computer Science (AP CS) teacher mailing list about students who were teaching themselves to program using programmable graphing calculators. There were some strong feelings about this trend and they were not positive.
The limitations of these calculators in the way the programming language was structured was given as being a big part of the problem because it taught bad development practices. For example students had their code print out results rather than develop methods (functions) that returned values.
There may be some truth to that of course. But I wonder if the real problem is just the fact that students are teaching themselves in a vacuum. Just as a lawyer who defends himself is said to have an idiot for a client I wonder if someone who teaches themselves often has a poor teacher.
I do think that someone can learn a lot on their own using books, mentors and other resources. But I don't think one can do a good job of learning programming using just a language reference guide and a few bits of sample code. That is how I believe most or at least many self-taught programmers are learning how to program. Even with a great programming language there is more to programming than just knowing the syntax of the language and some basic concepts. There is a lot of theory and best practices that are very hard to reinvent from scratch. Someone learning to program on their own is likely to fit programming into their own limited experiences at problems solving and algorithm development. They are not going to reinvent a whole set of best practices which they might easily learn in an organized class with a well-trained and experienced teacher and a textbook.
Of course I have run into many self-taught professional programmers in my career. But I think that it is safe to say that they have learned a lot from other, more experienced and professionally trained programmers, from books, from reading a lot of other code and from long periods of trial and error. Most of them would have been better still if they had more formal training. In fact many of the best started out learning informally but added formal training later in their careers.
I think that most students who are learning how to program using programmable calculators are learning bad practices not just because of the limited capability of their calculators but because they are learning without proper guidance. People do write great code in assembly language which is far more limited than calculator languages but they do so with some training and guidance. We offer training in computing and programming late in the educational process. We could teach students to program in middle school. Problem solving and computational thinking could come even earlier. But because we don't do that some students are going to try to figure it out on their own using less than ideal tools. We should not blame the tools but the system which has let these students down.
I've been getting questions about C# (pronounced Sea Sharp or C Sharp) textbooks for high school courses lately. There are a lot of C# books out there but I think most of them are aimed either at professional developers or college level programs. Teachers are teaching C# in high schools though and I can't say that I blame them. C# is a great language. The advent of the XNA Studio Express which runs on top of Visual C# Express and uses C# as the development language is only going to increase interest in C# among students.
I have asked a couple of high school teachers I know and respect for their opinions. One school did a pretty exhaustive search and is using C# Software Solutions by John Lewis from Addison Wesley. I talked to another teacher who is using Microsoft Visual C# .NET Step By Step: Version 2003 by John Sharp & Jon Jagger from Microsoft Press.
Another teacher is not using classroom sets but teaches from his own notes. He is using several books as references including:
I know that Course Technology and Pearson Technology also have C# books that would probably work for high school students. I'm sure that others do as well. Since I haven't looked at them myself (if any publishers want to send me review copies I will write up some reviews) and no one has recommended them to me personally I am not sure what to say about them.
I'd really love to hear from other teachers who are teaching C# and get more opinions about C# books. What have you found that is good, bad or indifferent? What are you looking for in a C# textbook?