Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site duke.UUCP Path: utzoo!watmath!clyde!bonnie!akgua!mcnc!duke!jma From: jma@duke.UUCP (Jon M. Allingham) Newsgroups: net.cse Subject: Re: what's computer science Message-ID: <6501@duke.UUCP> Date: Wed, 23-Oct-85 16:05:38 EDT Article-I.D.: duke.6501 Posted: Wed Oct 23 16:05:38 1985 Date-Received: Fri, 25-Oct-85 03:46:54 EDT References: <823@dataio.Dataio.UUCP> <6358@duke.UUCP> <827@dataio.Dataio.UUCP> <2392@sunybcs.UUCP> Reply-To: jma@duke.UUCP (Jon M. Allingham) Organization: Duke University Lines: 49 Summary: >> That brings up my biggest complaint against undergraduate computer science >> educations is that they teach you "programming"... they teach you how to edit >> a file under VMS... they teach you how to write in assembly language... >> they teach you what a barrel shifter is... they teach (etc.), but they >> don't require any theory classes. > >> They don't require a class on design and analysis of algorithms. They >> don't teach the thoery of LALR parsers, they don't teach... Obviously you didn't research your subject very well, some Universities do teach these things. I received my BS in Information and Computer Science from the Georgia Institute of Technology in 1984. Over 50% of the required hours were in Computer Science and among other things they included a course in (1) Data Structures, including analysis of memory usage and algorithm speed (2) Theory of Computing (3) Analysis of Algorithms plus a smattering of formal logic scattered over many courses. Students were expected take 6 courses to make to areas of specialization which for me included a compiler's course that showed, among other things, how & why LALR parsing works. Since we were expected to program many of these things ( eg a 2500 line database query system, ~5000 line compiler, an OS etc, we had to know the particulars of the machines we used, but there was no real emphasis on how things are done on a particular machine. We did a lot more than this, these are just specific replies to your (mis-) statement. Also, it is not unreasonable to assume that if you learn the principles of compiler writing, OS systems, etc you can learn to do them on other systems besides the one you happened to use. >One trouble with theory in computer science is that it doesn't last. I'd >estimate that half the theoretical work that's been done in computer science >is obsolete. >And another trouble is that theory has not contributed much to computer >science; it almost always comes after practice. Had Algol and Pascal >been failures, theory would have quietly buried the corpses. Yes, but a lot of the theory is still fundamental and can be used to demonstrate lots of interesting things. I you can understand current 'theory' you have a better chance of understanding state-of-the-art theories. e.g. If you can learn the principles of Analysis of Algorithms for a range of current problems, you can probably apply what you know to new algorithms. Jon Allingham AT&T Bell Laboratories, (currently at Duke University)