Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!panda!talcott!harvard!seismo!rochester!ritcv!ccivax!rb From: rb@ccivax.UUCP (rex ballard) Newsgroups: net.cse Subject: Re: CS degrees, are they useful? Message-ID: <452@ccivax.UUCP> Date: Fri, 7-Mar-86 14:15:23 EST Article-I.D.: ccivax.452 Posted: Fri Mar 7 14:15:23 1986 Date-Received: Mon, 10-Mar-86 00:07:44 EST References: <6350@cca.UUCP> <6420@cca.UUCP> <1074@terak.UUCP> Reply-To: rb@ccivax.UUCP (What's in a name ?) Organization: CCI Telephony Systems Group, Rochester NY Lines: 72 Summary: A BA defends CS Premise: Scientist - One who observes, identifies, and classifies patterns and defines the principles, laws and rules to describe his observations. Engineer - One who applies these rules, laws, and principles to solve problems. He also standardizes the practices. Artist - one who perverts these rules, laws, and principles to solve problems. (which the Scientist new material to describe). There is no such thing a "Pure Scientist" or a "Pure Engineer" or a "Pure Artist". CS has an important role, to identify which patterns may be most cost effective and define them in terms that will be useful to engineers and artists. K&R were "artists" when they used some (at that time) unconventional design and programming techniques, in addition to the conventional ones, to produce UNIX and C. Later, Computer Scientists defined terms and principles which described these innovations. Engineers then had a terminology and principles which could be applied to new applications. When a company has a product that incorporates new principles, it is valuable to have a computer scientist describe "why" it works. Example: Joe writes a multi-processor system that works very efficiently, he used several unconventional techniques to design the system and keep processors co-ordinated, it is fast but very complicated to write for. Later, someone wants to simplify the interface to Joe's system by putting UNIX on the multiprocessors. Unfortunately, because UNIX does not have the "inherant" ability to coordinate multiple processors, the UNIX version ends up slower. Joe's implementation is added to the UNIX version and is now not only slower, but also unmanagable. Here is a situation where a CS can look at why Joe's implementation works so well on the original and figure out what properties need to be implemented in UNIX to make the new version both fast and easy to use, or what UNIX properties could be put into the original to make it fast and easy to use. Without the Scientist, the engineer will get "religeous", saying "that's the way it has to be done", just try discussing high level language implementations based on FORTH with a FORTH fanatic. SmallTalk, FORTH, and Chip-8 (for those who remember the COSMAC chip), have very similar characteristics, but scientific comparisons are required to identify the strengths and weaknesses in order to created new and better languages. Without the Scientist, the "artist" will "innovate" in ways that will be wasteful. UNIX was originally written in assembler, the original FORTH could only load source code, wasted code space for "headers", and used an inefficient "inner loop interpreter". Without the engineer's standards, the artist will waste time on "proprietary" implementations which could be more effectively be done by following standards. Ideally, we (computer professionals) should have all three characteristics as part of our training. One area may be dominant, but it is necessary to be able to "switch hats" occaisionally. An artist has to be able to read a "man page" and write documentation that describes the principles behind his innovation. An engineer has to be able to separate the "wheat from the chaff" when looking at or writing a standard and he needs to be able to "improvise" solutions to unconventional problems. A scientist has to be able to recognize unusual expression of a "standard" and be able to "improvise" new examination techniques. We should also be willing and able to recognize our weaknesses and when to consult with others who have different strengths. A business major is not taught "Law", but "when to see the lawyer". A management major is taught "when to see the accountant" rather than every possible accounting practice.