From: bu.edu!inmet!bwhite@uunet.uu.net
Subject: Re: Is CM important? (was: Use pragma I
Date: 16 Jul 91 15:07:00 GMT [thread overview]
Message-ID: <20600112@inmet> (raw)
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
<bwhite@inmet.inmet.com>
P.S.
What's a trunkle?
next reply other threads:[~1991-07-16 15:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
1991-07-16 15:07 bu.edu!inmet!bwhite [this message]
-- strict thread matches above, loose matches on Subject: below --
1991-07-17 16:08 Is CM important? (was: Use pragma I Orville R. Weyrich
1991-07-17 19:54 Jim Showalter
1991-07-18 14:03 agate!bionet!uwm.edu!zaphod.mps.ohio-state.edu!ub!galileo.cc.rochester.ed
1991-07-20 10:04 George C. Harrison, Norfolk St ate University
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox