Xref: utzoo comp.edu:2705 comp.software-eng:2530 Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!hellgate.utah.edu!helios.ee.lbl.gov!ucsd!ucsdhub!hp-sdd!ncr-sd!ncrcae!hubcap!billwolf%hazel.cs.clemson.edu From: billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe, 2847 ) Newsgroups: comp.edu,comp.software-eng Subject: Re: CS education Message-ID: <7183@hubcap.clemson.edu> Date: 25 Nov 89 22:15:01 GMT References: <1989Nov21.172751.3078@world.std.com> Sender: news@hubcap.clemson.edu Reply-To: billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu Lines: 74 From madd@world.std.com (jim frost): >>> 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. The course on data structures should give the student a basic understanding of list ADTs as well as many others; applying this or any other data abstraction must be left to application courses, the exact nature of which will be student-specific. > 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. I would strongly disagree with this; I took a course in algorithm design and analysis as an undergraduate, and I consider it to have been the single most valuable course in the entire curriculum. > They teach common techniques for dealing with space/time tradeoffs. The data structures course (if good) will cover this quite thoroughly. > They deal with asynchronous event handling which shows up in VERY few > other courses but is commonplace in real-life. And should be equally commonplace in CS programs. One of the major practical problems associated with eliminating OS requirements is that, generally speaking, advanced courses in concurrent software development are not yet being offered -- I consider this to be a rather major shortcoming of the current CS educational system. > They teach heavy modularization (or they should) due to the easy > segregation of operating system subsystems. Appropriately taught in the first software engineering course, along with the different levels of coupling and cohesion. > If you can find me some other topic which deals with all or most of > these topics, then I'll believe you. How about some other course structure? > 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. As you correctly point out, operating systems are an example of an application domain in which many software development problems can realistically interact. My contention is that there are many such application domains, and it would behoove us to present the student with software development problems which are relevant to the problem domain(s) in which the student intends to specialize. In this way, we will give practical reinforcement to the introductory material on software development AND practical reinforcement of the introductory material for a relevant application domain; I submit that the combination has a strong synergistic effect on the student. The result is a strong positive (vs. negative) motivation, a very high transfer and retention rate, and a much more enjoyable experience on both sides of the educational interface. Bill Wolfe, wtwolfe@hubcap.clemson.edu Brought to you by Super Global Mega Corp .com