Path: utzoo!mnetor!uunet!husc6!bloom-beacon!gatech!bbn!rochester!ur-tut!msir_ltd From: msir_ltd@ur-tut (Mark Sirota) Newsgroups: comp.software-eng Subject: Re: American Programmer Message-ID: <1583@ur-tut.UUCP> Date: 31 Mar 88 10:04:29 GMT References: <555@psu-cs.UUCP> <1434@ur-tut.UUCP> <3415@bunker.UUCP> <3326@zeus.TEK.COM> <461@vsi.UUCP> <5775@bunny.UUCP> Reply-To: msir_ltd@tut.cc.rochester.edu (Mark Sirota) Organization: Univ. of Rochester, Computing Center Lines: 52 It would seem that the gist of this conversation is that college CS departments aren't teaching proper programming skills. I have two major points to make on this: (1) As has been pointed out by several people, you can't just "teach" programming skills; experience is really the only tutor here. (You can teach *techniques*, but I claim that they're not learned until they're used. You can tell a student what to use, but he/she hasn't learned it until he/she has done so.) To get around this, people have suggested writing 10,000 line programs, or continually working on the same program for 4 years. This is fine; it closely mirrors what actually happens out there in the programming world. However, I really don't think it will ever happen in colleges; these things are really too hard to manage. In the real programming world, you spend 8 hours a day (more or less) working on distinct projects, with a goal and deadline in mind, frequently with other people, taking care to make this well-done enough for other people to work on once you're done with this job. In school, you write a program to cater to the audience that will read it, much as you write an English paper. In this case, the audience is usually just the grader. You can usually assume the grader knows the language you're using, so you can skip those silly comments, but in the real world this may not be the case. (Note that this is just one simple example; differences like this abound.) Another example is the introductory programming course - You can tell people what a linked list is, but they're never gonna understand until they use one. What I'm getting at is that work experience is really the only way to properly teach programming skills; classes can only approximate it. (2) Computer Science departments *shouldn't* be teaching programming skills anyway; leave that to the Software Engineering department. Other disciplines haev separate Science and Engineering departments, like Physics/Mechanical Engineering, Chemistry/Chemical Engineering, and the like. Why not have Computer Science/Software Engineering? (Hardware Engineering exists too; it's usually called Computer Engineering, which I don't think is really very fair.) Here at the University of Rochester, the CS department churns out some damn good computer scientists. Most of them can't program to save their lives, and they often hate the programming courses in the curriculum. It is important to recognize the difference between a software engineer (some call it a "programmer" and a computer scientist. -- Mark Sirota msir_ltd%tut.cc.rochester.edu@cs.rochester.edu (rochester!ur-tut!msir_ltd)