Slashdot Mirror


Forget Math to Become a Great Computer Scientist?

Coryoth writes "A new book is trying to claim that computer science is better off without maths. The author claims that early computing pioneers such as Von Neumann and Alan Turing imposed their pure mathematics background on the field, and that this has hobbled computer science ever since. He rejects the idea of algorithms as a good way to think about software. Can you really do computer science well without mathematics? And would you want to?"

7 of 942 comments (clear)

  1. Re:wahay! by smilindog2000 · · Score: 5, Interesting

    I sometimes run into great algorithm programmers who were poor at math, but they're rare, and usually can be explained away based on what kind of drugs they did in college. For a good algorithms guy, I love hiring good mathematicians and physicists. You can train them into great programmers a lot quicker than the other way around. However, algorithms are really a very small part of the programming space we work in. I choose to work in this space because it suits me, but most programmers never need calculus. To build a tree-based data structure and a GUI to drive it takes about an 8th grade level of knowledge. Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys).

    The summary of the author's points in the article make the book sound dead wrong on several counts, though it could just be the review. Procedural languages are the natural way to code most programs, and here's why: we've been recording recipes as a sequence of steps, with if statements and loops, since the invention of writing. It's become encoded in our genes. That's really all that early computer scientists put in our early languages like FORTRAN. It's all the stuff we've added since then that's up for debate, in my mind. The author makes money by pushing the boundaries of computing model research. I get big programs written by teams by restricting what language features are used, and how. I'd be interesting to debate the ideas, point by point.

    --
    Beer is proof that God loves us, and wants us to be happy.
  2. Re:wahay! by atrocious+cowpat · · Score: 5, Interesting

    "Doing a GUI really well takes creativity I've never had (apparently a lot of guys like me work at M$. I don't know where Apple finds it's GUI guys)."

    Maybe the question should rather be: Why doesn't Microsoft look for the kind of GUI-guys Apple hires. And the answer to that might well be found at the top of each company. A quote from Steve Jobs' Commencement address at Stanford (June 12, 2005):

    "Because I had dropped out [of college] and didn't have to take the normal classes, I decided to take a calligraphy class [...]. It was beautiful, historical, artistically subtle in a way that science can't capture, and I found it fascinating. None of this had even a hope of any practical application in my life. But ten years later, when we were designing the first Macintosh computer, it all came back to me. And we designed it all into the Mac. It was the first computer with beautiful typography. If I had never dropped in on that single course in college, the Mac would have never had multiple typefaces or proportionally spaced fonts. And since Windows just copied the Mac, its likely that no personal computer would have them. If I had never dropped out, I would have never dropped in on this calligraphy class, and personal computers might not have the wonderful typography that they do."

    Read the whole thing, it's quite interesting (if not to say: inspiring).

    --
    sig? Oh, that sig...
  3. Re:As if computer science wasn't stunted enough by Anonymous Coward · · Score: 5, Interesting

    Funny story about work.

    The current back-end system that translates front-end customer orders to actual tangible products often fails silently, and the person who wrote it (who's still with us), thinks that's okay.

    Eventually, management got tired of people not getting their orders, or getting the wrong person's order, and not having a way of detecting that there's any problem. So they hired a new guy to write a new production system.

    Talking to the new guy, he said that the system is almost working, but it fails silently, and he should add error handling if he has time.

    DO PEOPLE NEVER LEARN!?!!

    Error handling isn't optional. Error handling isn't something that gets added into a system. It should be an integral part of the system's design. Furthermore, with exceptions, error handling is painless. There's no excuse for not thinking about it.

    This system is also much more complicated than its predecessor. It needs a dedicated server, uses a long-running daemon process that polls(!) a database for something that really should be a simple event-driven process, and still fails silently!

    Also, another harbinger of doom: "I don't need to use version control. I'm the only one working on the system."

  4. Without math -- you get lost in the code! by syn1kk · · Score: 5, Interesting

    I am a DSP programmer, which basically means that all the stuff I code are mathematical formulas transformed into C code. I mention DSP because writing DSP algorithms forces the programmer to know his math really well... enough so that he can distill the complex math into an efficient C code implementation.

    I remember trying to get my specific algorithm to run under 500 micro seconds and the best I could get was like 10000 micro seconds. My coworker who looked at the underlying math equations for my code easily saw a better solution just by looking at the math equations for 5 minutes. After I changed my code to suit the new math equation I got my code to run at 280 micro seconds.

    The whole point of this example:
    When you approach the solution from a mathematical viewpoint, the mathematical viewpoint lets you see more clearly how to optimize an algorithm. In my case, I got lost looking at the C code and missed the elegant mathematical solution because I did not look at the math equations. So I ended up not being able to "distill the complex math into an efficient C code implementation" to find the elegant solution.

    In my case the elegant-math-derived-solution was about 35 times faster (10000 / 280) than the original solution I had come up with.

    -----

    Bottom line: The syntax and complex notations used for math equations lets you look at a problem from a much higher level of abstraction and this higher level of abstraction is much more conducive to seeing the elegant best solution (solutions that improve your algorithm by an orders of magnitude rather than solutions that improve your algorithm by some linear constant).

    p.s. if you were wondering what I was working on --> the function was a GMSK modulator ( http://en.wikipedia.org/wiki/GMSK ) for a transmitter.

  5. Re:Computer Science != Software Engineering by timeOday · · Score: 4, Interesting

    Maths IS needed for computer science. Just be sure not to confuse Computer Science with Software Engineering.
    I don't think that's what we're talking about. A more interesting question, I think, is whether "true AI," should it come to pass, will be derived from basic principles (i.e. math) or based on heuristics (i.e. not math). After laying the groundwork in the first few years of digital computers, the theory of computing has not progressed very much! There is no proof that encryption is secure. Quicksort, which is O(n^2), generally outperforms the O(nLog(n)) algorithms. There is still not even a proof that P != NP, even though it seems obvious. I think what has been proven is that most problem classes of interest are non-decidable and intractible. But so what? You can still get along quite well in the world without a provably optimal solution most choices. So now theory is concerned with deriving probabilistic bounds on accuracy and runtime for heuristic methods. I would call that nice to have, but is it necessary?
  6. Re:Applied mathematics by coolGuyZak · · Score: 4, Interesting

    Statements like this make a sweeping assumption: that the fundamental theorems of mathematics are not the formalization of concepts hard-wired into the brain. For instance, the existence of prime numbers wouldn't be obvious to an organism that never used integers. Similarly, it may be possible to discover alien life that never had a use for the Pythagorean Theorem (perhaps they don't perceive space?).

    Thus, I believe that your statement is incomplete. Some classes of problems, particularly algorithms, use math by their nature. However, had the discipline branched off of, say, psychology, those classes of problems could be as atrophied as human computer interaction was a few years ago. It is reasonable to assume that CS as a whole would be vastly different. Would architectures resemble the brain? Would they be chemical rather than electrical? Programming languages may be easier to use, but chances are they would lack orthogonality, closure, etc. What would be more entertaining is a computer programmed like Pavlov's Dog...

    In an extreme formulation of this idea, certain elements of computer science may not even exist--imagine algorithm development with my latter example. To consider something a bit closer to home, what if the base discipline of computer science was linguistics?

  7. Re:Computer Science != Software Engineering by Verity_Crux · · Score: 4, Interesting

    ...like solving string subsequence matching (comparing DNA sequences)...

    Last year I worked on just that. The (Smith-Waterman) algorithm is well studied, so I didn't have to derive all the math for it. What I did have to derive is the speedup gained by using our hardware. That required some algebra. I also did Gaussian smoothing on the data. That required some image processing math. Once upon a time I coded PHP/MySQL stuff for various web companies. I had to do two different kinds of math with that: accounting and statistical work including Chi squared, etc. Graphing and displaying all that data was real simple algebra stuff. It wasn't satisfying for me so I looked into more serious science work.

    I found the more serious work. My minor in math is, for the most part insufficient for my current work. In the past year I
    1. Worked out an edge detection algorithm using wavelets. Wavelets use tensor math -- math not covered until the third and fourth year for math majors. I never could get a full grip on the math. Fortunately, I found and ended up using a book that had all the algorithms for it already coded.
    2. Worked on path planning for robots using clothoids and Bezier curves. The algorithms to interpolate my existing data for those are too math-heavy for me. Have you ever tried to find the intersection point of two clothoids or Bezier curves? Find the nearest point on a clothoid to a given point? Or mix the two? It's tough stuff. It's loaded with numeric methods. My BS in computer science and minor in math didn't prepare me for that.
    3. Worked on converting 3D data between various map projections.
    4. Worked on CAD software that allows manipulation of 3D shapes in a 3D environment. It's loaded with trig and linear algebra.

    I could go on with various little details. Suffice it to say that it's darn frustrating when you're supposed to code a fancy wavelet demo and you can't read any book on the topic because it's over your head.

    I had a class in college on algorithms. The teacher was fantastic. He had an excellent skill at pointing out "now that's computer science becomes science." I remember his passion for back-propagation and all the little tricks to it he knew from study and experiment. That was fun.