Path: utzoo!attcan!uunet!wuarchive!rex!ames!amdcad!sun!sunfedcomm!regenmeister!chrisp From: chrisp@regenmeister.uucp (Chris Prael) Newsgroups: comp.software-eng Subject: Re: CS education [engineering, mathematics, and computer science] Message-ID: <34795@regenmeister.uucp> Date: 20 Nov 89 19:09:13 GMT References: <1408@cs.rit.edu> Sender: daemon@sunfedcomm Organization: Sun Microsystems, Inc. - Mtn View, CA Lines: 74 From article <1408@cs.rit.edu>, by mjl@cs.rit.edu: > Since I started this thread, let me toss out a few more thoughts. I > think the most important contribution of mathematics to computer > science/software engineering is its mode of inquiry. I'd say that it > is the approach to problem solving -- defining a specification or > reasoning about a program in the context of a rigorous axiomatic > system -- that most closely ties mathematics and computing. My observation and experience is that this relationship is historical in origin. It traces to the fact that most computer science departments were spun off from mathematics departments. I watched the process while I earned my BS in math. From what I saw, it appeared that many of the people who moved from math to computers did it not because they were interested in computers but they were not particularly successful at math. This resulted in "computer science" departments that were really bad imitations of mathematics departments. The repeated paragraph implies that this is still true. There are two other sources of the mathematical misapprehension. The first is that the earliest applications performed with computers were mainly numerical analysis problems. As a result, many thought that the application was the field. The other is the fact the programs are completely abstract. So, it is not surprising that a lay person would assume that because computing and mathematics share the attribute of having no concrete representation they are the same. This confusion is hard to excuse in a professional. > In this respect, a good dose of discrete > mathematics or basic modern algebra is appropriate, not so much because > of the topics per se, but rather because the form of the proofs in > these domains maps most closely onto the formal models of computation. Perhaps this is another way of saying that the formal models of computation have been copied from that of modern algebra. > (Of course, the topics themselves contain gems of abstraction and > generalization, for those willing to do some mining). I found modern algebra to a little too long on recipies and a lot too short on theoretical structure. Far more useful would be time spent on naive set theory, properties of the real line, logic (not the primitive stuff!), and metatheory (theory of theories). These are topics that you can (and must) really chew on! > What bothers me most is that this implies a significantly deeper > understanding of mathematical principles than is required by other > engineering disciplines. Which could be reasonably taken to imply that mathematical principals have as much to do with software engineering as it does with the other engineering disciplines. > Or, to phrase it slightly differently: > Formal methods of software engineering require the engineer > to think like a mathematician. This is untrue of any other > engineering discipline I am aware of. Why the discrepancy? The discrepancy is clearly in the formal methods. They have nothing functional to do with software and nothing functional to do with engineering. An engineer DOES NOT think like a methematician. He/she thinks like an engineer! Trying to ape mathematicians will not make one an engineer. Not does it make one a mathematician. It makes one an imitation mathematician! > Can we address this by creating "boilerplate" mathematics > for software engineering? No! This problem can only be addressed by ending the attempt to be imitation mathematicians. The fact that you are questioning a quarter century of dogma is a major step forward. Take the next step. Chris Prael