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