[net.cse] More on Math and CS

mangoe@umcp-cs.UUCP (Charley Wingate) (03/08/86)

In article <1074@terak.UUCP> doug@terak.UUCP writes:

>Wanna know what's missing in the usual curricula for a CS degree?
>They usually leave the CS grad with the belief that he understands
>programming.  Wrong; he understands Computer Science.

That certainly isn't true here at UMCP.  One has a considerable amount of
freedom in arranging things, and typically, people specialize in a few of
the anointed five fields.

>There is no "science" in most applied computing.  Professional
>programmers seldom spend any time on CS concerns.  The applications that
>need to be programmed aren't exotic; they just need to be written.  In
>most cases, the algorithm is blatantly obvious.  All that needs to be
>done is to select a reasonably appropriate data structure, then crank
>out the code to do the job.

This is contrary to MY work experience, working on a very large (but very
ordinary) sort of personnel program.  What most professional programmers do,
as far as I can tell, is take some vague requirements, re-tread the only
data structure they know, and piece an algorithm together, all without any
regard to any kind of software engineering practice.

I submit that programming is in and of itself a discipline within CS.  Here,
it is found by mating languages and software engineering with "Information
Processing".  People who are interested in programming numerical
applications also take Numerical Analysis.

>Look at this list of CS topics suggested so far:

>> Statistical theory of communication and linear systems,
>> calculus,
>> advanced calculus for engineers,
>> linear algebra,
>> mathematical statistics
>> numerical analysis,
>> propositional and predicate calculus,
>> complexity theory (concrete and asymptotic),
>> graph theory,
>> combinatorics,
>> universal algebra,
>> Boolean algebra,
>> relational algebra,
>> model theory,
>> theory of computation,
>> theory of formal languages,
>> recursion theory,
>> lambda calculus,
>> denotational semantics.

Well, I will agree that a lot of this is not in and of itself of use to CS
people.  Almost everything on the list is only useful for various
applications.  People who aren't writing "scientific" programs, for
instance, don't have a lot of use for calculus, numerical analysis, or
universal algebra.  People who don't have any interest in computing theory
can also despense with all the related math.  People who aren't interested
in writing compilers or programming in Lisp won't have much use for lambda
calculus, and it's not clear that ANYONE has any use for denotational
semantics.  What it comes down to is that only about a quarter of the list
is of general interest to CS students.


>I'm not saying that a CS curriculum should teach programming.  What I'm
>saying is that the students should be kept aware that CS and programming
>are two different things.  (Oh, by the way, this implies that I believe
>that a CS degree is not particularly useful for a programmer.)

That means that there is a long list of CS topics which now need to go in a
new curriculum, such as:

    Analysis of algorithms
    Computer archetecture
    Software engineering
    Data structures
    Basic language theory

C. Wingate
    

doug@terak.UUCP (Doug Pardee) (03/10/86)

> What most professional programmers do,
> as far as I can tell, is take some vague requirements, re-tread the only
> data structure they know, and piece an algorithm together, all without any
> regard to any kind of software engineering practice.

What kind of software engineering practice is taught in CS curricula
that is both   a) of value in practical programming in more than a
limited field, and  b) not something that a person is likely to pick
up on his own?

I whole-heartedly agree that many (most?) professional programmers are
terribly weak on designing appropriate data structures.  So there's
one point.  But I can't think of another.

> Almost everything on the list is only useful for various applications.
> ... People who don't have any interest in computing theory
> can also despense with all the related math...

But "Computing theory" isn't programming.  If a person has an interest
in computing theory, then he is interested in a career in Computer
Science, not a career in programming.

This further illustrates my contention that a Computer Science degree
does not prepare a person for a career in programming, any more than a
Math degree prepares him for a career in accounting.

[Anyone for the notion of a Software Engineering curriculum and degree?]
-- 
Doug Pardee -- CalComp -- {hardy,savax,seismo,decvax,ihnp4}!terak!doug

ladkin@kestrel.ARPA (Peter Ladkin) (03/11/86)

In article <147@umcp-cs.UUCP>, mangoe@umcp-cs.UUCP (Charley Wingate) writes:
> [...]  People who aren't writing "scientific" programs, for
> instance, don't have a lot of use for [..] universal algebra.  

Goguen et al. and the term-rewriting people are
working on abstract data types. I don't know any application
of universal algebra in scientific computing.

> [...] it's not clear that ANYONE has any use for denotational
> semantics.  

The only full working compiler that has been actually
verified was specified using ................... guess!
(Polak, LNCS 124)

> only about a quarter of the list
> is of general interest to CS students.

Do you really believe this? 

Peter Ladkin

liberte@uiucdcsb.CS.UIUC.EDU (03/14/86)

Regarding the discussion on Linear Algebra:

I did not have to take Linear Algebra for my BS degree in CS, but I did
try it while I was a math major.  It was fun to write APL algorithms
to do the mechanical operations until I told the professor who responded:
"Why bother - it's already been done."  Then the increasingly abstract
treatment drove me from math to compute science.

I just discovered a book that might be appeal to some: "Linear Algebra
and Geometry" by David Bloom, published by Cambridge University Press.
A paragraph from the preface:

	At this point I asked myself: if linear algebra and geometry can
	be so well integrated mathematically, why not integrate them
	pedagogically?  Specifically, instead of two one-term courses, why not
	teach one full-year course in which the relations between linear 
	algebra and geometry could be explored to their fullest extent?
	Here, it seemed, might lie an opportunity to illustrate the unity
	of mathematics and to counteract the prevalent tendency toward
	compartmentalization of knowledge.

I would encourage such attempts at integration for, indeed, what good
is knowledge if it is not related to other knowledge?  Also, I have
found from personal experience that the best way to learn something
is to actually apply the information in some way so that it becomes
personal knowledge.

Dan LaLiberte
liberte@b.cs.uiuc.edu
liberte@uiuc.csnet
ihnp4!uiucdcs!liberte