Xref: utzoo comp.edu:2694 comp.software-eng:2470 Path: utzoo!attcan!uunet!aplcen!samsung!think!husc6!spdcc!xylogics!world!madd From: madd@world.std.com (jim frost) Newsgroups: comp.edu,comp.software-eng Subject: Re: CS education Message-ID: <1989Nov21.172751.3078@world.std.com> Date: 21 Nov 89 17:27:51 GMT References: <16109@duke.cs.duke.edu> <7147@hubcap.clemson.edu> Organization: Software Tool & Die Lines: 101 billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) writes: >From crm@romeo.cs.duke.edu (Charlie Martin): >> I think first of all that you're raising a straw man: there are more >> degrees of freedom than "we can have OS or more SE but not both." > Given that there are a finite number of semester hours available > in any degree-seeking program, this is precisely the case. In my (limited) classroom experience, roughly half of the required courses were irrelevant to either real life or theoretical computer science. There are a lot of free hours if you kill those courses. Those courses are easy to identify. Find the student that spends the most time on the machine or has a huge personally written source directory. S/he'll probably work for the CS department. Ask him/her what courses were useless. Then find a couple of people with a MA/CS double major who have excellent GPAs and ask the same question. This will give you a feel for which courses were practically-oriented, which were theoretically-oriented, and which did little of either. I believe you'll find that there's a high occurrence of courses which don't really teach anything at all (although their titles may suggest that they do). Often a course which should be very valuable (eg an algorithms course) is not because a professor spends almost the whole course talking about his particular pet algorithm. Worse than that are the courses where the professor can't speak english (or the native language) well enough to teach the students, since there's no way they're going to get anything out of the course. I had far too many of both kinds of courses. Eliminating or improving them would go a long way towards improving education. I'll tell you right now that I know this won't work. Politics, bureacracy, and tenure will screw it up. But it's a good idea. >> I think it would be far more useful to have BOTH a strong OS requirement >> AND a strong background in the issues of software engineering. > Not if OS is irrelevant to the student in question. OS is never irrelevant if the student isn't going to be a theoretician. If the student must work in the real world, s/he will need a lot of the concepts which are discussed AND IMPLEMENTED in an OS course. I wouldn't hire someone who didn't have such experience (or similar experience with compilers) unless they've been in the real world for quite some time. >> Operating systems classes are often the first chance to see a linked >> list used for anything beside exercise 11 in the text. > Only if the operating systems classes are coincidentally > the first classes taken after data structures. Name another standard course (excepting compilers) which makes extensive use of lists and list processing. Algorithms SHOULD, but in practice most algorithms courses are almost purely theoretical (lots of funny-looking symbols but not a for() in the whole place :-). Additionally, an operating system deals with algorithmic complexity (it shows up early on when trying to do things like memory-fitting or scheduling) which are virtually never dealt with realistically in academic courses but are critical for many real-life applications. They teach common techniques for dealing with space/time tradeoffs. They deal with asynchronous event handling which shows up in VERY few other courses but is commonplace in real-life. They teach heavy modularization (or they should) due to the easy segregation of operating system subsystems. And they're large enough to give students an idea of what they're going to have to deal with when they walk out the door. If you can find me some other topic which deals with all or most of these topics, then I'll believe you. > Scheduling algorithms are by no means going to require > an entire semester of operating systems material, so that still leaves > lots of unneeded material which an OS course would needlessly cover. Of course not. But they're only a small subset of the topics at hand. >> (3) Operating systems offer the first chance in most cases to introduce >> things like mutual exclusion and record management (reader-writer >> problems). > This is simply another > attempt to claim that operating systems are good because of > incidental side effects which should instead be taken directly. Operating systems courses are good because they deal with solving real-life problems, LOTS of them. Most of the problems you'll run into in the "real world". And they deal with them all in one place, so students can see how different problems -- all of which can interact (and DO in the "real world") -- can be handled, something which you'll miss if you have separate courses on each individual topic. jim frost software tool & die madd@std.com