Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!samsung!think!ames!amdahl!fai!kurtl From: kurtl@fai.UUCP (Kurt Luoto) Newsgroups: comp.software-eng Subject: Re: CS education [engineering, mathematics, and computer science] Summary: Examples, please ... Message-ID: <2625@fai.UUCP> Date: 28 Nov 89 18:17:20 GMT References: <1989Nov20.160513.19313@world.std.com> <34804@regenmeister.uucp> Reply-To: kurtl@fai.fai.com (Kurt Luoto) Organization: Fujitsu America, Inc Lines: 84 In article <34804@regenmeister.uucp> fai!amdahl!apple!sun-barr!newstop!sun!regenmeister!chrisp chrisp@regenmeister.uucp (Chris Prael) writes: >From article <1989Nov20.160513.19313@world.std.com>, by madd@world.std.com (jim frost): >> I've found mathematics to be priceless in both practical and >> theoretical computing. > >Some examples would be useful. > >> It certainly can avoid doing things the hard >> way, and we can avoid the mistakes of our predecessors who had to do >> so because of a poor understanding of the problems at hand. > >More mistakes and misunderstandings in computing and its development >can be traced to pseudo-mathematical pretences than can be traced to >mathematical ignorance. Computing is being increasingly retarded by >the uncomprehending aping of mathematics and mathematicians. Bad >imitations of mathematics do more to obscure the problems at hand than >they do to clarify issues. As you say, Chris, some examples would be useful. Such vague broadsides do not clarify your arguments. Certainly uncomprehension and bad imitation of mathematics (or of any other technique or field of study for that matter) will generate misunderstandings and mistakes and will obscure issues. But that speaks only of those who are incompetent. It says nothing one way or the other of the usefulness of mathematics in relation to computing. >As did Dario, your argument raises the >question of how deep or shallow your comprehension of either mathematics >or computing are. Nor do ad hominem attacks make your arguments more convincing. >One thing that becomes particularly clear if one examines the development >of the field over the last forty years is that the pace of innovation has >decreased drastically in the last 20 to 25 years. Kids come out of school >with 25 year old techniques and ideas, believing that this stuff is brand >new. One can blame the slowing partly on the "maturing" of computing as a >field. More serious causes are the increasing reliance on rote >"learning" of techniques and playing at mathematics. Rote learning is precisely the thing that Dijkstra seems to rant against in his writings. I am not about to take Dijkstra's position (there does seem to be a little of the Ivory Tower flavor to his writings). However I have upon occasion seen the results of programmers who had apparently too little mathematical competence. On one project, while doing some maintenance, I ran across an existing module which was supposed to select a set of memory block sizes for a memory allocator. The problem description sounded interesting, so I studied the algorithm in hopes of learning something. As I studied it, I became suspicious. I saw that the algorithm could not do what the problem requirements demanded. I proved it by providing a counter example (a pathological input case) and running it through the code. Note that there were no coding errors, it was the algorithm that was at fault. I also designed, proved, wrote and tested an algorithm that did work. Now the module in question had gone through all the production phases (spec, design, code, test), complete with formal reviews. In fact, it was apparent that the first cut of the original implementor did not work either, and what I was studying was the implementor's second pass at the design. It was apparent that nowhere along the process did implmentor or any of the reviewers have the background that would have led them to spot the inadequacy of the design. Now you could chalk it up to incompetent workers, but I can't shake the feeling that these people never got the proper training in the first place. It also shows that a formal review procedure can fail (i.e. let a bad design go through) if it does not include basics like demonstrating the soundness of an algorithm, which is basically mathematics in application. More than gathering any specific set of techniques or accumulation of facts (theorems, etc), proper mathematical training teaches a way of thinking, a way of approaching problems. I also encourages a certain kind of skepticism (in a narrow sense), a "show-me" attitude in regard to technical statements. Your comments on the decreasing rate of innovation could be viewed as evidence that we need better grounding in mathematics, i.e. real mathematical training for our CS students, as opposed to the "aping" or "playing at" mathematics that you mention. -- ---------------- Kurt W. Luoto kurtl@fai.com or ...!sun!fai!kurtl Brought to you by Super Global Mega Corp .com