Path: utzoo!mnetor!uunet!husc6!bloom-beacon!mit-eddie!uw-beaver!ssc-vax!dickey From: dickey@ssc-vax.UUCP (Frederick J Dickey) Newsgroups: comp.edu Subject: Re: conceptual basis of CS Message-ID: <1899@ssc-vax.UUCP> Date: 4 May 88 13:44:32 GMT References: <4823@june.cs.washington.edu> Organization: Boeing Aerospace Corp., Seattle WA Lines: 35 Keywords: fundamental concepts Summary: programs = algorithms + data structures In article <4823@june.cs.washington.edu>, jsnyder@june.cs.washington.edu (John Snyder) writes: > I recently set myself the task of making a list of 5-10 fundamental > concepts of computer science. The sort of idea I was after had to > (1) be such that current CS theory/practice would be inconceivable > without it and (2) it crops up (maybe in various disguises) in all > or many areas of computer science. > > I would really like to see your list, perhaps with a brief comment It strikes me that a very, very fundamental concept of CS is the notion that computers perform manipulations on data. This seems to manifest itself in various guises. For example, Wirth's Programs = Algorithms + Data structures, (hope I got it right). Essentially the same view is taken in AI Expert system = Inference engine + Knowledge representation, except that different terminology is used for basically the same thing. Digital computer architecture has the notion Instruction = Op code + Addresses of data. One of the reasons I claim that this is a fundamental concept of CS is that it is not clear to me that it is the only possible view of a computer, and thus it is a distinguishing characteristic of CS. For example, a computer might be viewed as a device that transforms inputs into outputs. From this viewpoint, it is not clear that you need algorithms and data structures. To elaborate further, consider a "learning" neural net. To program this device one does not design algorithms and data structures, but presents it with a series of input/output relationships. The neural net may have something corresponding to algorithms and data structures internally, but you're not concerned with these. It seems to be the case that a neural engineer is not nearly as concerned with algorithms and data structures as a software engineer.