Path: utzoo!attcan!uunet!aplcen!uakari.primate.wisc.edu!zaphod.mps.ohio-state.edu!sunybcs!uhura.cc.rochester.edu!rochester!rit!mjl From: mjl@cs.rit.edu Newsgroups: comp.edu Subject: Re: CS education Message-ID: <1434@cs.rit.edu> Date: 11 Dec 89 15:17:10 GMT References: <7334@hubcap.clemson.edu> <7335@hubcap.clemson.edu> <5899@ubc-cs.UUCP> <16391@duke.cs.duke.edu> Sender: news@cs.rit.edu Reply-To: mjl@prague.UUCP (Michael Lutz) Organization: Rochester Institute of Technology, Rochester, NY Lines: 60 In article <16391@duke.cs.duke.edu> crm@romeo.UUCP (Charlie Martin) writes: > >What it ought to do is result in courses like "Operating Systems >Concepts" that explain the ideas, and teach people the language or the >field, so they can find and read those manuals. It also ought to result >in courses that emphsize the existance of the literature, and require >people to read it, to search through it, and to be able to use it >effectively. > >Given the skills Bill talks about, he and I would almost agree: given >that people know how to read the literature effectively, they can find >out anything else they need to know. > >I would argue that they need a broader background than Bill imagines. Try this one on for size. At RIT, we have four required junior level courses: Operating Systems, Programming Language Concepts, Data Communications, and Introduction to Computer Science Theory. (This isn't as constricting as it may sound because we are on a quarter system.) The goal of each of these courses is to present concepts that we believe are of general, long lasting significance. In the case of the language concepts course, a subgoal is to make students view design & implementation from perspectives that are radically different from the imperative style they've used to that point. With the exception of the languages course, *none* of these require programming. Even in PLC the assignments are kept small, so students can concentrate on the conceptual models rather than issues of size and complexity. The OS course uses operating systems as a convenient vehicle for the discussion of resource management, concurrency, security, etc. "Convenient" here means that our students are fairly sophisticated users by the time they take the course, so it is easy to find familiar examples to motivate the topics we're interested in. We rarely do full case studies in class (though students typically write a paper that achieves the same result). We do employ examples from common systems like Unix, MS/DOS, and VMS to show contrasting approaches and engineering tradeoffs. Of course we have follow on courses in each area so that students interested in the area can explore it in greater depth. Generally these follow on courses require design and implementation (as in Operating Systems Lab, Language Processors, and Distributed Systems Lab). We also have a Software Engineering track for those interested in the problems of large scale systems of any type. The core courses give breadth, whereas the senior level specialty courses give modest depth. We believe that this approach, combined with mandatory co-op, gives our students solid preparation for either graduate school or for the start of a career in software development. Comments? (as if I have to ask :-) Mike Lutz Rochester Institute of Technology mjl@cs.rit.edu ...!rutgers!rochester!rit!mjl Mike Lutz Rochester Institute of Technology, Rochester NY UUCP: {rutgers,cornell}!rochester!rit!mjl INTERNET: mjlics@ultb.isc.rit.edu