Interesting discussion.
A few observations from my 23 years of programming and 3 years of teaching high school programming.
Sexism: In my prior life as a programmer/manager, about half my team was female. Quality of programming was indistinguishable between the sexes. In some teams the best programmer was female; in others it was male; often it depended on the business knowledge of the programmer rather than on the mechanics of programming.
Language to teach: I opted to teach Java as my introductory programming language. It provides a safe language for beginners: they can’t accidentally do something that trashes their system. It can also be written and run on any of the major high school platforms: PC, Mac or Linux. And yes, all three platforms are represented in my student population. And no, knowledge of multiple platforms does NOT mean that the student is a better programmer!
Beyond that, Java allows all the basic strategies of programming: procedural approach, sequential processing, compiling (OK, so it’s byte code and not a “true” compile. They’re still exposed to the thought process of translating written code into something machine readable.), logic statements, loops, recursion, data types, arrays, sorting, trees, linked lists, file IO, searching through documentation for the code they need. I also require documentation (the bane of many “true” programmers), requirements gathering, testing (string, unit full application), and good design. For my advanced class I also get into project life cycle and maintenance by taking a single application through several cycles of improvement.
Weeding out: My first couple lectures are completely from hand-outs, and the first assignments are based on that information and the class discussion. I then review the programs in class using student code (from that class or another, with the victim’s name removed) so we can see examples of good and bad design and code approaches. I also put my own code up for review, including bad code, so we can go through trouble shooting and debugging. That is the most useful teaching technique I’ve found based on the students’ “ah ha!” response. After several weeks and assignments I talk with all the students about continuing in programming or finding another area of interest. Most don’t need the conversation.
BTW, my favorite first program is to write the directions for making a peanut butter and jelly sandwich. Then I’ll pick one and misinterpret as many of the directions as I can to illustrate the stupidity of the computer, the importance of clear instructions.
English language: Having come from the corporate world of application programming and working with the user community, I emphasize to the students and to our English teachers the importance of clear writing skills. Writing is the most important part of working with users: meeting minutes, email, user documents - if they are unclear to the users, you are just wasting your time and theirs, and your project is doomed. Unless you work for someone who has those skills, but you won’t ever be in charge of many successful projects. But maybe you only ever want to be a bit twiddler, and those of us in management appreciate the bit twiddlers who work for us. (Is that food for flaming, or what?!)
Quality of teaching: There is no doubt that there are good teachers and there are bad teachers. And while there is pressure on elementary teachers, and to a certain extent on high school teachers, to use better methods and techniques, I don’t see the same urgency in the college and higher levels for teachers to keep up with current teaching techniques. In many cases they have there PhD so know what is best for us, and if we can’t get it, well, then we just don’t belong in the field! I’ve been fortunate to have had good or excellent teachers. Not that there are things I wouldn’t have changed! And for the money, there are few better college classes than evening classes at community colleges in the DC area: the students are pros in their fields, looking to improve their skills or expand their knowledge base (no trade mark infringement intended) by taking evening classes. They know what they want and are very demanding, so the best teachers are assigned to their classes.
And yes, I will play with the test and see how it does in my classes. And I’ll watch out for follow up studies, because this has said, “There is something interesting here.”
Well, this has certainly gone on much longer than I intended, but there were a lot of points in the discussion that I wanted to respond to based on my experience.