Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxt!houxm!ihnp4!cuae2!ltuxa!we53!abstl!wucs!wucec2!jdz From: jdz@wucec2.UUCP Newsgroups: net.cse Subject: Re: CS degrees, are they useful? Message-ID: <1434@wucec2.UUCP> Date: Mon, 3-Mar-86 22:03:59 EST Article-I.D.: wucec2.1434 Posted: Mon Mar 3 22:03:59 1986 Date-Received: Fri, 7-Mar-86 06:33:50 EST References: <6350@cca.UUCP> <6420@cca.UUCP> Reply-To: jdz@wucec2.UUCP (Jason D. Zions) Organization: Wash. U. Center for Engineering Computing Lines: 66 In article <6420@cca.UUCP> g-rh@cca.UUCP (Richard Harter) writes: >In article <> ladkin@kestrel.ARPA (Peter Ladkin) writes: >>In article <6350@cca.UUCP>, g-rh@cca.UUCP (Richard Harter) writes: >>> [curriculum for a CS degree] >>> EE/MATH: Statistical theory of communication and linear systems. >>> Math: Calculus, advanced calculus for engineers, linear algebra, >>> mathematical statistics (the hard core stuff, not "statistics for >>> grade school teachers"), and numerical analysis. >> >>This would be almost entirely useless to anyone but a numerical >>analyst. Not true. Any program doing any calculations more complex than pointer and subscript math and counters can use the skills of numerical analysis. Ever watch people sum a floating-point array starting with the largest elements? I agree that statistics might not be as useful, but probability certainly is. Simulation software is a big part of what's out there. Linear algebra helps also. Many of these tools are used before the program is written, during design, to help make decisions about data structures and algorithms to be used. Could be they are never included in the program. >>What about propositional and predicate calculus, complexity >>theory (concrete and asymptotic), graph theory, combinatorics, >>some universal algebra (plus a bit of groups, rings and fields >>for concreteness), Boolean algebra, relational algebra, model >>theory, theory of computation, theory of formal languages, >>recursion theory (Turing machines, recursive functions), >>lambda calculus and denotational semantics? Again, more tools. Some are more useful during design, some have great bearing on actual code produced. (I am not too sure about the universal algebra, though). The lambda calculus is a very powerful abstraction tool; denotational semantics has great use in early design; combinatorics and complexity theory let you know if you're kidding yourself about a solution to your problem. > However I will contend >that for most applications mathematical logic is of no particular >value. Almost every thing that you list is of importance or is >critical for pure computer science and is of no particular value >in end user applications except algebra. Which goes a long way to explaining why most applications are poorly written. (Yeah, I know, cheap shot - sleazy rhetoric - flames to /dev/null) With all these tools mentioned above, there should be no reason to have applications that need total rewrites for small additions, that run far longer than they should need to, that have strange bugs, that use inappropriate algorithms. >On the other hand, if you are going to work in scientific and >engineering applications you should have a working knowledge of >numerical analysis. At a guess I would say that 60% of all >programming is commercial applications, 30% is scientific/ >engineering applications, and 10% is systems. What about the 60% - if you sum your accounts receivable in floating point, you deserve to lose; if you use a bubble sort instead of heapsort or quicksort or any other nlogn sort, you deserve to lose. If you don't know enough about other programming paradigms to know how to use the one you have effectively, you may very well end up losing. -- Jason D. Zions ...!{seismo,cbosgd,ihnp4}!wucs!wucec2!jdz Box 1045 Washington University St. Louis MO 63130 USA (314) 889-6160 Nope, I didn't say nothing. Just random noise.