Path: utzoo!attcan!uunet!lll-winken!ames!mailrus!cornell!uw-beaver!blake!mcglk From: mcglk@blake.acs.washington.edu (Ken McGlothlen) Newsgroups: comp.edu Subject: Teaching computer science. Message-ID: <576@blake.acs.washington.edu> Date: 17 Jan 89 19:37:52 GMT Reply-To: mcglk@blake.acs.washington.edu (Ken McGlothlen) Organization: Me? Organized? Lines: 70 Here at the University of Washington, we have a rather interesting situation. I spend part of my time playing impromptu computer tutor for a number of students taking computer courses. This doesn't typically bother me very much, but there are two courses in particular, taught by the same teacher, which has caused me quite a bit of concern-- especially as I'm considering a teaching career myself. The professor in question, at one point, was using Modula-2 to teach introductory programming. I don't really have an opinion one way or the other as to whether this is an appropriate language to use for an introductory course--*I* wouldn't use it, but the prof in question really likes it, and he opted to inflict it on his students. So far, so good. The headache began when the professor opted to force each of his students to use his personal set of library functions *instead* of the standard Modula-2 libraries. Apparently, the prof "didn't like" the original libraries, and wrote a number of small procedures which called the real procedures, using a different set of parameters, names, and so on. He took points off for different commenting styles (you had to use *his*), different (though perfectly valid) indentation styles, and using the standard Modula-2 routines instead of his personal library. At the end of the course, if anyone wanted to use Modula-2 for anything, they had to unlearn some of the ridiculous stuff they had picked up in his class. Now, the professor in question has opted to teach in Ada. You can just imagine what's going on now. Not only has this teacher supplied a completely nonstandard library, but has gone so far as to mark a point off for adding one to a variable (c := c + 1) instead of calling one of his library routines (as in lib.inc(c);). The comments and indentation once again have to follow his personal style (no great advantage, and several small disadvantages, in my humble opinion), and his method of teaching doesn't tend to emphasize some of the things *I* was brought up with--like efficient, readable code. In fact, it barely looks like recognizable Ada by the time you wade through all the odd library calls. The approach tends to confuse almost every student I've come in contact with. Several of them have learned horrendous coding habits, others have gotten some of the strangest ideas of what efficient code really means, and I've been finding that the libraries that the students are forced to use are missing a few key features--for instance, there doesn't seem to be any way to append to a file. Perhaps the teacher never has a need for an append--but Lord knows that if you call the Ada routine which allows this, you get marked off for it. Maybe I'm just a little out of date. This can't possibly be a sound approach to teaching a computer course, can it? Or is it actually suggested somewhere that this is a good pattern to follow? As it is, I spend a lot of time patching up misconceptions, and watching students of this teacher become really frustrated with programming, and computers in general. The few who really *want* to learn this stuff get rather frustrated, because (a) they aren't using the real language, and (b) they can't use their common sense to increment a variable, or even call the correct routines to allow them to do what they wish more efficiently. It pains me somewhat. I'm rather enthusiastic about computers, but then I've had a few really wonderful teachers in my time (thank you Dean Gienger, wherever you are). Seeing this happen just irks me somewhat. If I'm wrong--if this *is* a good approach--could someone please set me straight, and tell me why? --Ken McGlothlen mcglk@blake.acs.washington.edu