bobm@pirates.UUCP (Bobm Atthews) (09/18/90)
In article <12007@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes: >As far as I have been able to tell, the concept of a "good" textbook on >"computer theory" is an oxymoron. Since such books are invariably >written by computer science theoreticians and computer science theoreticians >invariably know almost nothing about computers (as one would expect >from mathematicians) [deleted] John, there are alot of theoreticians out there who know alot about computers. Just because someone has a concentration in one particular area of computer science does not mean he/she is a dolt in others. A good school makes certain that its graduates are proficient in the important areas of computer science. > the textbooks I have seen have all been dismally >uninformed about the realities of computer technology (and even good >theory for that matter). Theory is *the* basis for all other branches in computer science: witness the usefulness of finite and push-down automata in designing compilers and syntax directed editors, the lambda calculus in programming language design and study, complexity theory as the motivator and prime driving force behind probabilistic and approximation algorithms (used in network design, mathematical software, operating system design, etc.) In terms of being "uniformed about the realities of computer technology": from which branch of computer science did the concept of parallel computation get its impetus? It wasn't the hackers or the engineers who first speculated that P<>NP. -- Bob Matthews ...!uunet!pirates!bobm Armstrong State College, Savannah, GA
wilber@aludra.usc.edu (John Wilber) (09/28/90)
In article <409@pirates.UUCP> bobm@pirates.UUCP (Bobm Atthews) writes: >John, there are alot of theoreticians out there who know alot about >computers. I am sure there are some, but I have met only a few. I know this is difficult, but could you back up your claim? My experience has been that if someone tells me he has a PhD in CS, he probably knows all about neural net theory, but couldn't write a hello world program and doesn't know what a bus is. Perhaps your experiences have been different. >Just because someone has a concentration in one particular area >of computer science does not mean he/she is a dolt in others. Agreed, but I would expect the same of history professors. Having a PhD in history doesn't make one an expert in computers either, though there are some historians who are quite adept at using them and even understanding them. The difference is that historians don't go around claiming to be at the heart of computer science as an area of study. >A good >school makes certain that its graduates are proficient in the >important areas of computer science. That sounds nice, but I have not seen it implemented in practice. I would assume that some schools (like CMU and MIT) must have some people around who know something or they couldn't get any of their research projects to work, but I have never seen any direct evidence that schools take anything like an intelligent approach to teaching computer science. Since IMHO most CS professors don't have a good grasp of the important practical facts (there are exceptions of course) it is not surprising that students do not learn the "facts of life" in school. >> the textbooks I have seen have all been dismally >>uninformed about the realities of computer technology (and even good >>theory for that matter). >Theory is *the* basis for all other branches in computer science: Again, that depends on how you define "computer science". If your definition is "that which mathematicians qua computer scientists study", then of course you are right by definition. >witness the usefulness of finite and push-down automata in designing >compilers and syntax directed editors, Sure, but which came first, the theory or the compilers? I have "discovered" new ways of doing things in programs many times before only to later discover that someone had already given it some fancy theoretical name. In any event, I agree that compilers and related things have been one of the areas most directly impacted by straight theory. I have written a couple of compilers and the theory (once all of the theoretical trimmings were removed) was indeed useful. Do you consider the creation of compilers to be a really important issue in computer science today? How many programmers are out there writing compilers? How likely is it that any particular student in a class or ACM member will write one? >the lambda calculus in >programming language design and study, I disagree about the "language design" part. Languages can be designed perfectly well without any knowledge of lambda calculus whatsoever. As for the "study" part, I am sure many people have received research grants and degrees for studying lambda calculus, but I don't see it as anything more than a minor curiosity. It's not useless, but it doesn't deserve to be considered a "center stage" subject. The REAL reason it is studied so heavily is that it allows people to write papers with impressive mathematical symbols all over it and it doesn't require the consideration of real-world problems. >complexity theory as the >motivator and prime driving force behind probabilistic and >approximation algorithms (used in network design, mathematical >software, operating system design, etc.) Have you ever written an operating system? Do you know what the real problems involved are? Complexity theory may make some minor contributions, but again, I think that mathematicians who spend their days extending complexity theory would be much more productive if they came down to earth and worked on solving practical problems. >In terms of being "uniformed about the realities of computer >technology": from which branch of computer science did the >concept of parallel computation get its impetus? Probably from some guy who wanted to get faster results from his computer and decided that hooking lots of them up at the same time would be a good approach. Perhaps you should be "informed" that paralell computation has a fairly small impact on real-world computing these days, and that had all of the mathematicians mysteriously vanished in 1980, the development of parallel computers would not have been set back noticeably. (Who knows, maybe without them more work could have been done in making them work rather than worrying about the theory;-). >It wasn't >the hackers or the engineers who first speculated that P<>NP. And it's not the mathematicians who write any of the programs that make the technology work. I doubt that many of them know or that ANY of them care that P<>NP. You can write anything you want without that knowledge. It seems to me that it is much more important in academic "computer science" that a problem can be expressed in big impressive-looking mathematical symbols than that the solution be useful for anything real. That's a big problem in my book.
hugo@griggs.dartmouth.edu (Peter Su) (09/28/90)
In article <12235@chaph.usc.edu>, wilber@aludra (John Wilber) writes: >I am sure there are some, but I have met only a few. I know this is >difficult, but could you back up your claim? My experience has been that >if someone tells me he has a PhD in CS, he probably knows all about >neural net theory, but couldn't write a hello world program and doesn't >know what a bus is. Perhaps your experiences have been different. > As a graduate student in computer science, I am saddened by the fact that someone who thinks he knows so much about computers knows so little about computer science graduate students. Let me name for you a few people with CS PhD's...and a couple who have the equivalent... 1) Brian Ried -- Author of Scribe 2) Knuth -- Author of TeX 3) Bill Joy -- CEO of Sun Microsystems (he knows what a bus is). 4) John Hennesey -- did the MIPS work at stanford (he knows what a bus is too). 5) Rick Rashid -- Head of the Mach project at CMU 6) Richard Stallman -- Author of Emacs, GCC, etc. 7) Dan Hillis -- designed the original Connection Machine. The point? You don't seem to know many good computer science PhD's. >>Theory is *the* basis for all other branches in computer science: > >Again, that depends on how you define "computer science". If your definition >is "that which mathematicians qua computer scientists study", then of course >you are right by definition. > Both of these statements are narrow and misleading. Computer science is a unique field because it encompasses both mathemetical thinking, and real, practical engineering. Unfortunately, computer scientists don't do either very well yet. But, in order for a person to suceed in this field, and in order for his/her research to be useful, it must break ground in both areas. It is not enough to ponder Turing Machine's, but it not enough just to sit and hack C code either. The name of the game is to find out *how* Turing machines relate to C... >Do you consider the creation of compilers to be a really important issue >in computer science today? How many programmers are out there writing >compilers? How likely is it that any particular student in a class or >ACM member will write one? > Yes I do. Current compilers stink. Figuring out a way to do compilers better would make a lot of people a lot of money. Do you really believe that the current generation of C/Ada/Pascal/Modula compilers is all that is needed for all time? We need compilers that are smarter, faster, generate better code, and work with more architectures. If students are not writing compilers, they should be. >I disagree about the "language design" part. Languages can be designed >perfectly well without any knowledge of lambda calculus whatsoever. >As for the "study" part, I am sure many people have received research grants >and degrees for studying lambda calculus, but I don't see it as anything >more than a minor curiosity. It's not useless, but it doesn't deserve >to be considered a "center stage" subject. The REAL reason it is studied >so heavily is that it allows people to write papers with impressive >mathematical symbols all over it and it doesn't require the consideration >of real-world problems. > >>In terms of being "uniformed about the realities of computer >>technology": from which branch of computer science did the >>concept of parallel computation get its impetus? >>It wasn't >>the hackers or the engineers who first speculated that P<>NP. > >Probably from some guy who wanted to get faster results from his computer >and decided that hooking lots of them up at the same time would be a >good approach. Perhaps you should be "informed" that paralell >computation has a fairly small impact on real-world computing these days, What planet are you from? If parallel computing is so minor, why has Cray made so much money in the past decade? Not to mention Thinking Machines, BBN and the dozens of other companies building parallel architectures that do huge amount of work for scientists all over the country. There is more to CS than writing code for little toy PC's like Macs, NeXT machines, and Suns. Tell me what you know about real machines... On the other hand, I'm not sure what P<>NP has to do with the whole thing either. Non-determinism is one of those theoretical toys that I never quite understood. I'm really not sure what it has to do with parallel computation. The theoretical work done on parallel computation in the past has been pretty esoteric and mindless. In particular, this obsession with the PRAM type machine models is just depressing. PRAM will not tell you anything about the performance of a particular algorithm in the real world because the primitives that it assume just cannot be implemented as yet. > >And it's not the mathematicians who write any of the programs that make >the technology work. I doubt that many of them know or that ANY of them >care that P<>NP. You can write anything you want without that knowledge. > >It seems to me that it is much more important in academic "computer science" >that a problem can be expressed in big impressive-looking mathematical >symbols than that the solution be useful for anything real. That's a >big problem in my book. People should care whether or not P=NP, because a lot of things that people would like computers to be able to do are NP-complete (i.e. scheduling, bin packing, register allocation). If you don't know this, go back and look it up. It might save you a lot of time the next time you have to hack something up and can't think of a good way to do it fast (non-exponential time). I said it before, I'll say it again. A programmer with no clue about what CS theory is about is just about as useless to me as a theoretician who can't hack C. Both are missing essential tools that they need to get the job done. In the first case, theory might tell the programmer something useful before he writes a lot fo code, and thus save him a lot of time. In the second case, knowing something about programming might make the theoretician do more work that is more concrete, and more implementable. Back to work, Pete hugo@sunapee.dartmouth.edu
windley@cs.uidaho.edu (Phil Windley) (09/28/90)
In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:
Sure, but which came first, the theory or the compilers? I have
"discovered" new ways of doing things in programs many times before only
to later discover that someone had already given it some fancy
theoretical name.
That's exactly the point. If you had known the theory you wouldn't have
had to rediscover it. Are you really espousing a model for our discipline
that requires everyone to rediscover the important concepts each time.
Besides, the compilers (actually we're talking about parsers) written
before CFL's were studied were really not much fun to write. Now there are
nice tools like YACC that do most of that drudgery for you. Thank the
theoreticians.
In a lot of ways, you're like a blacksmith in the late 1800's who sees
mechanical engineers encroaching upon his turf and says "I never needed no
calculus to shoe no horse. That's all a bunch of high-falutin' mathematics
that don't have no practical application!" He was right about shoeing the
horse of course, but dead wrong about the usefulness of mathematical
analysis in building mechanical structures. (That's really what you're
railing against: mathematical analysis, not theory).
You'll probably go through your career feeling this way and probably die
feeeling you were right. If I had to bet though, I'd say that 100 years
from now, your great grandchildren will be using mathematics in CS that you
haven't dreamed of.
--
Phil Windley | windley@ted.cs.uidaho.edu
Department of Computer Science |
University of Idaho |
Moscow, ID 83843 | Phone: (208) 885-6501
matloff@heather.ucdavis.edu (Norm Matloff) (09/29/90)
In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes: [I do agree with Peter's point, but just for the sake of accuracy...] >little about computer science graduate students. Let me name for you >a few people with CS PhD's...and a couple who have the equivalent... >2) Knuth -- Author of TeX Ph.D. in Math, I believe. There were none, or most *very* few, degree programs in CS in his day. >3) Bill Joy -- CEO of Sun Microsystems (he knows what a bus is). I don't think he has a Ph.D. He also is not CEO at Sun, though he is a cofounder. >4) John Hennesey -- did the MIPS work at stanford (he knows what a bus >is too). I think his Ph.D. is in EE. >6) Richard Stallman -- Author of Emacs, GCC, etc. Are you sure he has a Ph.D.? Again, I do agree with Peter's point. There is lots of practical work done in academia. On the other hand, the other poster is correct to some extent -- there certainly *are* some Ph.D.s in CS who "don't know what a bus is." I would assert, though, that the same holds for a number of people in the Silicon Valley. Norm
norman@d.cs.okstate.edu (Norman Graham) (09/29/90)
From article <12235@chaph.usc.edu>, by wilber@aludra.usc.edu (John Wilber): > In article <409@pirates.UUCP> bobm@pirates.UUCP (Bobm Atthews) writes: > >>John, there are alot of theoreticians out there who know alot about >>computers. > > I am sure there are some, but I have met only a few. I know this is > difficult, but could you back up your claim? My experience has been that > if someone tells me he has a PhD in CS, he probably knows all about > neural net theory, but couldn't write a hello world program and doesn't > know what a bus is. I know this is difficult, but could you back up your claim (perhaps with some hard data based on a sample set of more than a dozen)? My experience is that most CS PhD's know nothing about neural net theory, but they know, for instance, the issues involved in operating system design; and they certainly do know what a bus is. You should avoid such broad characterizations, especially when they are based solely on your limited world view (which, btw, you seem to consider very broad). > [...] I have never seen any direct evidence that schools take anything > like an intelligent approach to teaching computer science. Since IMHO > most CS professors don't have a good grasp of the important practical > facts (there are exceptions of course) it is not surprising that students > do not learn the "facts of life" in school. Now you have me sitting on the edge of my chair. We're all now waiting for you to describe your 'intelligent approach to teaching computer science'. And while you're writing, please list a few of the 'important practical facts' so we'll know what you're writing about. Who knows, perhaps CS professors everywhere will see the light and learn something about these issues. But please remember that most universities do not intend to be high-tech, high-dollar vo-tech schools with football teams. >>witness the usefulness of finite and push-down automata in designing >>compilers and syntax directed editors, > > Sure, but which came first, the theory or the compilers? In this case (LR, LALR, SLR parsing that is), the theory came first. Parsing was something of a black art before the theory came along. Efficient parsing simply did not exist before theory showed us how to do it. > I have "discovered" > new ways of doing things in programs many times before only to later > discover that someone had already given it some fancy theoretical name. Congratulations. Of course, theoretical study is much more than simply naming objects of discovery. For example, you may want to actually <gasp> perform an analysis of your discovery to determine what properties it may possess, why it possess those properties, and when you can exploit those properties. Then write it up and delight the world with your wisdom. > In any event, I agree that compilers and related things have been one of > the areas most directly impacted by straight theory. I have written > a couple of compilers and the theory (once all of the theoretical trimmings > were removed) was indeed useful. > > Do you consider the creation of compilers to be a really important issue > in computer science today? How many programmers are out there writing > compilers? How likely is it that any particular student in a class or > ACM member will write one? I suppose you are saying 'compiler design is not a really important issue in computer science, so only a very few people need study it.' I believe that the study of certain subjects--such as compiler design, calculus, etc.--will give many students a maturity and insight that they would otherwise lack. >>the lambda calculus in >>programming language design and study, > > I disagree about the "language design" part. Languages can be designed > perfectly well without any knowledge of lambda calculus whatsoever. Yes they can; they have been for the last 30 years. It's best to have in mind some model of computation when designing a new language. In the past, that model has been the physical machine <gasp again>. This model has lead to languages that have become increasingly complex. Each new language includes most or all of the features found in previous languages and adds new features to boot; but the expressive power of these languages has hardly changed. The truth is the newer languages do not increase program reliability or decrease programming costs enough to warrant their adoption. This sad fact suggests we need a 'new' model. Lambda calculus is one such model. > As for the "study" part, I am sure many people have received research grants > and degrees for studying lambda calculus, but I don't see it as anything > more than a minor curiosity. I suggest that you open your eyes; obviously you have not been keeping up with language design issues (semantics of languages, computational models, etc.) or with the implementation strategies for functional languages. And before you brand functional languages as impractical or not applicable to 'real-world problems' consider this: Functional languages and functional programming are not sufficiently mature to warrant industry's en masse migration to them. But they have qualities that industry certainly will be interested in. Many functional programs are 10, 20, or even 30 _times_ shorter than similar imperative programs. And due the clarity resulting from their high-level nature, they are more reliable and easier to maintain. When functional languages are adopted by industry (I guess in 5 or 10 years), they will save millions or perhaps billions of dollars a year in software costs. And of course, there are those who believe functional languages will be the only practical way to take advantage of the parallelism available on massively parallel machines (>1000 processors). Most functional languages can be viewed as syntactic sugar on the lambda calculus. Does lambda calculus still seem like a minor curiosity? > It's not useless, but it doesn't deserve > to be considered a "center stage" subject. The REAL reason it is studied > so heavily is that it allows people to write papers with impressive > mathematical symbols all over it and it doesn't require the consideration > of real-world problems. Now that is perhaps the most ridiculous statement I've seen in the netnews in the last five years. [more drivel on parallel machines deleted] -- Norman Graham <norman@a.cs.okstate.edu> {cbosgd,rutgers}!okstate!norman The opinions expressed herein do not necessarily reflect the views of the state of Oklahoma, Oklahoma State University, OSU's Department of Computer Science, or of the writer himself.
hugo@griggs.dartmouth.edu (Peter Su) (10/01/90)
In article <7746@ucdavis.ucdavis.edu>, matloff@heather (Norm Matloff) writes: >In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes: > > >[I do agree with Peter's point, but just for the sake of accuracy...] > > Everyone is correcting me, so I thought I'd clarify what I said. Here is what I wrote: >>little about computer science graduate students. Let me name for you >>a few people with CS PhD's...and a couple who have the equivalent... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I will admit to being mistaken about Jon Hennesey, EE is not the same as CS. But, he has done a lot of good work in both architecture and in the more theoretical parts of compiler design, which illustrates by point well. >Again, I do agree with Peter's point. There is lots of practical work >done in academia. On the other hand, the other poster is correct to >some extent -- there certainly *are* some Ph.D.s in CS who "don't >know what a bus is." I would assert, though, that the same holds >for a number of people in the Silicon Valley. > > Norm Something to add: I think one should always remember Sturgeon's Law...90% of everything is crap. This applies to industry, academia, computer science, engineering, and certainly goverment. The best one can do is try to stay within the other 10% most of the time. I like to think I do, but sometimes, I'm not so sure. Pete hugo@sunapee.dartmouth.edu
bond@geocub.greco-prog.fr (Johny Bond) (10/02/90)
In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes: > And it's not the mathematicians who write any of the programs that make > the technology work. I doubt that many of them know or that ANY of them > care that P<>NP. You can write anything you want without that knowledge. =============================== I decided to reply to these three lines, but the main reason consist of the preceeding 50 lines of your message ... As a theoretical computer scientist, I hope, not even one from our student will make such an assertion ... J. Bond ============================================================================= Laboratoire Bordelais de Recherche en Informatique Universite Bordeaux I 351 Cours de la Liberation e-mail : bond@nestor.greco-prog.fr 33405 TALENCE fax : (33) 56 84 66 65 FRANCE =============================================================================
erspert@athena.mit.edu (Ellen R. Spertus) (10/02/90)
In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes: >In article <12235@chaph.usc.edu>, wilber@aludra (John Wilber) writes: >> My experience has been that >>if someone tells me he has a PhD in CS, he probably knows all about >>neural net theory, but couldn't write a hello world program and doesn't >>know what a bus is. Perhaps your experiences have been different. > >As a graduate student in computer science, I am saddened by the fact >that someone who thinks he knows so much about computers knows so >little about computer science graduate students. Let me name for you >a few people with CS PhD's...and a couple who have the equivalent... [...] >6) Richard Stallman -- Author of Emacs, GCC, etc. Richard Stallman does not have a CS PhD. I believe his only degree is a bachelor's in physics from Harvard. I do agree with your major point, though. Certainly most people with PhDs in computer science know how to program and know what a bus is. I like to think most undergraduates learn these things --- I certainly did. Anyway, most CS PhDs (at least around here) are not in theory. Most non-theory people spend a lot of time programming, and even the theoreticians know some programming (at least TeX! :-). Institutions usually have a common core for all CS PhD candidates, probably all of which include an architecture course and at least one course with programming assignments. John Wilber should check the curricula of CS PhD programs if he wants to verify his claims. Perhaps the key is "someone [who] tells me he has a PhD in CS". The PhDs that I know (and respect) don't press their credentials on others. Usually it is the most insecure people who wave around their degrees. (Didn't all of you know people in high school who would volunteer their SAT scores in their first meetings with other people?) Ellen Spertus
wilber@aludra.usc.edu (John Wilber) (10/03/90)
In article <260@geocub.greco-prog.fr> bond@geocub.greco-prog.fr (Johny Bond) writes: >In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes: >> And it's not the mathematicians who write any of the programs that make >> the technology work. I doubt that many of them know or that ANY of them >> care that P<>NP. You can write anything you want without that knowledge. > =============================== > As a theoretical computer scientist, I hope, not even one from our student >will make such an assertion ... I don't doubt that as a CS theorist you would hope your students would not make such assertions. The IMPORTANT question is if it is true or not. Are you trapped in such an ivory tower that you cannot tell (at least) that this is not self-evidently false? I stand by my earlier statement.
dovich@cadence.com (Steven J. Dovich; x272) (10/04/90)
In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes: > That sounds nice, but I have not seen it implemented in practice. I would > assume that some schools (like CMU and MIT) must have some people around > who know something or they couldn't get any of their research projects > to work, but I have never seen any direct evidence that schools take anything > like an intelligent approach to teaching computer science. Since IMHO > most CS professors don't have a good grasp of the important practical > facts (there are exceptions of course) it is not surprising that students > do not learn the "facts of life" in school. Before knowledge can be passed on, it needs to be understood. Why are these "facts of life" important? Why not some other set of facts? Are these facts a subjective list or is there some objective framework that justifies their value? "Facts of Life" are axioms, statements designed to completely short-circuit analytical thinking. Their usefulness is in providing a basis from which to reason about larger problems. We need to make sure that there is really something fundamental about such "facts" before we make them axioms. We need to be certain that these axiooms clarify rather than cloud our understanding of the larger problems. Otherwise they distract and mislead us. > ...I have "discovered" > new ways of doing things in programs many times before only to later > discover that someone had already given it some fancy theoretical name. If you reinvent technology that is already published, you have spent your time unwisely. Familiarity with the relevant literature can trim the design issues to that set without prior solutions. This is yet another face of the popular concept of (software) re-use. Don't re-invent the wheel. > And it's not the mathematicians who write any of the programs that make > the technology work. I doubt that many of them know or that ANY of them > care that P<>NP. You can write anything you want without that knowledge. You may be able to tackle a programming task without that kind of knowledge. But for some problems, by the time you complete the task, you will gain at least some of that knowledge (only we usually call it experience). You probably won't solve the P=NP problem, but you will have first-hand experience with the consequences of the answer to that problem. And that is what theory is about. Solving fundamental problems so that engineers can understand the concepts, and figure out what the consequences will be (without having to learn it all from costly experience). > It seems to me that it is much more important in academic "computer science" > that a problem can be expressed in big impressive-looking mathematical > symbols than that the solution be useful for anything real. That's a > big problem in my book. There are probably very few who can effectively develop theory without any application/practical framework to interpret the results. Most theoretical work is started by someone with a practical problem to solve. It is explored and developed by those who want to better understand the implications of the problem, and its solution(s). It is applied to "real-world" problems by those who understand its importance. In summary, theory is how we reason from past experience, to design and build the future. /sjd -- Steven J. Dovich <dovich@cadence.com> Cadence Design Systems/ACAE Div. 2 Lowell Research Center Dr Phone: (508) 934-0272 Lowell, MA 01852-4995
ariel@seer.UUCP (Catherine Hampton) (10/07/90)
I think Stallman's BA is from MIT, not Harvard. At least, I know he attended MIT in the early 1980's. Cathy Hampton. hampton@reed.EDU ariel@seer.UUCP