From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=0.8 required=3.0 tests=BAYES_50 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 16 Jul 91 15:07:00 GMT From: bu.edu!inmet!bwhite@uunet.uu.net Subject: Re: Is CM important? (was: Use pragma I Message-ID: <20600112@inmet> List-Id: On Jul 8, 1991, mattel@auto-trol.com writes in response to Showalter's bleatings that we should drop calculus, algebra, FORTRAN and Ada from the cs curriculum. Dropping FORTRAN and Ada might not be such a bad idea. Though it is hard to imagine how one might program without a programming language, the things people learn in school are pretty much language independent. Since it is possible to learn to write either good or bad programs in any language, it seems that the important reason for studying programs is to tell which are good or bad, and to know how to choose a good program (or perhaps a bad one if you are mad at your boss.) The only way we can choose good programs is by analyzing the programs we write. Perhaps the analysis goes on before the program is written, and perhaps it goes on after the program is written, but in any case we have to analyze the code for correctness and efficiency. The tools for this analysis are largely known, but are not easy to use. Read, for example, chapter 1, vol 1 of Knuth's ACP books to see what efficiency analysis tools are available, and how they are tricky to apply. Read Dijkstra's book "A Discipline of Programming" for correctness analysis tools. It is not possible know how to use these tools without some formal training in the underpinnings of there use. For this you will need calculus and algebra. Specifically: o You will need algebra to do any combinatorics, and combinatorics is extensively used in Knuth-style analysis. Indeed, one recent book on combinatorics stated that such algorithm analysis books as Knuth's books and Purdom and Brown's book are combinatorics books in disguise. o The kind of formula manipulation used to manipulate correctness proofs is algebraic in nature. In particular, the experience gained by studying algebra makes the definitions of model and language more accessible. o There are many other applications of abstract algebra in the corners of computer science, but it is not clear to me that all of them are of general use. People analyze multiprocessor connection networks using Cayley groups. People who do coding and communication error recovery use Galois theory extensively. People have used group theory to prune tree searches by examining symmetries. The presentation of floating point arithmetic used in Karlsruhe arithmeti c is given abstractly (see Kulisch and Miranker, "Computer Arithmetic in Theory and Practice", Academic Press, 1981.) However, these seem like specialized applications. o Most calculus books and courses spend most time with the relatively uninteresting notions of derivatives and integrals. While these are useful in physics and engineering, where things are continuous, they are of less value to the kind of discrete systems we use. However, calculus is the only place people see the definitions of limit and continuity, which definitions are very important. Continuity is important if you want fixed points. This has gone on long enough. Peace, Bill White P.S. What's a trunkle?