Forgot your password?
typodupeerror
Programming Education Math IT Technology

Forget Math to Become a Great Computer Scientist? 942

Posted by Zonk
from the this-is-why-i-wasn't-a-good-programmer dept.
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?"
This discussion has been archived. No new comments can be posted.

Forget Math to Become a Great Computer Scientist?

Comments Filter:
  • Damn straight! (Score:4, Insightful)

    by Anonymous Coward on Sunday July 08, 2007 @07:08AM (#19787965)
    Who needs math? Bogosort is a good a sort algorithm as any. Hey, without math, how would you be able to tell?
    • by eclectro (227083) on Sunday July 08, 2007 @08:59AM (#19788595)
      No maths means more girls. Hey, I'm all for it.
      • Re:Damn straight! (Score:4, Insightful)

        by Firethorn (177587) on Sunday July 08, 2007 @10:51AM (#19789377) Homepage Journal
        From my experience, it might mean less girls.

        My last honors math class had 3 boys in it, out of twenty.
        • by sanman2 (928866) on Sunday July 08, 2007 @11:08AM (#19789541)
          Bah -- "more", "less" -- these concepts are so mathematically antiquated.
    • Re: (Score:3, Insightful)

      by Fordiman (689627)
      Does boolean arithmetic count as math? I would say so.

      I dunno. The guy's argument from the article seems kinda flawed.

      "A logic circuit is not a sequence of operations."

      No, it's a subset of a sequence of operations. It's a component that fits into a deterministic set thereof, and *should* be calculated via boolean or classical arithmetic.

      "An operating system is not supposed to terminate, nor does it yield a singular solution."

      Then what's "Shut Down" do? And while it doesn't yield a singular solution, it
      • Re:Damn straight! (Score:5, Informative)

        by NickFortune (613926) on Sunday July 08, 2007 @02:30PM (#19791157) Homepage Journal

        No, seriously. It seems that his entire argument is directed towards changing semantics to take the emphasis off of the mathematical underpinnings of computer science. Rar.

        I think he's astroturfing for the pro-patents lobby.

        One of the reasons you can't patent software in the EU (and probably many other places) is that algorithms are essentially mathematical constructs, and maths is generally regarded as unpatentable.

        So maybe one of the big software houses has decided that the next time they go to court over patents, it might be useful to have a scholarly book saying how algorithms are not in fact math based, and should therefore be patentable.

        It would also explain the odd references to circuit boards - which are another arguing point in the patent debate. If it has a physical expression, the argument goes, then it can't be maths.

    • Re:Damn straight! (Score:5, Insightful)

      by WGR (32993) on Sunday July 08, 2007 @12:06PM (#19790013) Journal
      Figuring out which sort to use is very seldom what a computer software creator does.

      mathematics as a base for CS was great in the 50's and 60's, but the real problems in computer software are people problems, not algorithmic ones. Once you program a calculation correctly, it generally stays that way.

      But determining the optimal layout of a form to benefit the users of the system requires observing people and their needs. Understanding what parts of a program are going to be changed because of changing user needs is more important in program design than deciding whether you need a heap sort or insertion sort. Yes, you should know the difference, but you seldom need to program it, just choose the correct one from the system library.

      CS graduates tend to design programs for machine efficiency, not human efficiency. But it is humans that are expensive, not machines.
    • Science is about asking questions that havent been suitable answered for your purposes yet. IE how can we losslessly edit lossy image formats. Or how can we optimize the new database once we have installed solid state drives? Or how do we prevent a lockup with this new 128 core chip with 5 dedicated lock bits..

      Engineering is about building things once you understand the concept behind them. So building a jpg viewer/writer isnt science anymore, it was back circa 1980. Dont get me wrong, building one in

  • by Anonymous Coward on Sunday July 08, 2007 @07:09AM (#19787979)
    Maths IS needed for computer science. Just be sure not to confuse Computer Science with Software Engineering. Software engineering is only a part of the computer science sphere.

    • by timeOday (582209) on Sunday July 08, 2007 @10:02AM (#19789029)

      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?
      • by allthingscode (642676) on Sunday July 08, 2007 @10:35AM (#19789231)
        What most people do in computer programming is like carpentry, and for that all you need to do is memorize how to write a few loops and and which methods to call. But then, every once in a while, you need something truly earthshaking, like solving string subsequence matching (comparing DNA sequences) in O(n**2) rather than O(2**n), and then you have to run to the people who can do the math. Another example is when people thought the best way to do AI was to mimic the neuron, but then, by applying some rigorous math, you end up with Support Vector Machines.
        • by Verity_Crux (523278) <notacommieNO@SPAMgmail.com> on Sunday July 08, 2007 @01:00PM (#19790455)
          ...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.
      • Re: (Score:3, Insightful)

        by Strilanc (1077197)
        Quicksort is randomized, has fantastic cache performance, and its worst case behavior is very unlikely. There are plenty of other randomized algorithms with bad worst-cases but which work better the majority of the time. That's what makes randomized algorithms so sexy.
  • by cyborg_zx (893396) on Sunday July 08, 2007 @07:09AM (#19787981)
    Do the lessons of VB6 teach us nothing?

    COMPUTING IS HARD. You can't dumb it down just because it would be nice to do so. And I'm sorry but mathematics is just the way in which meaning is expressed for machines. There's no free lunch here. And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.
    • by garcia (6573) on Sunday July 08, 2007 @07:56AM (#19788261) Homepage
      Do the lessons of VB6 teach us nothing?

      People have been fucking saying this about various versions of BASIC since the beginning. Instead of trashing it, what did BASIC's various incarnations teach us?

      It taught us that Microsoft could roll what amounts to a scripting language into its Office line and make the programs ever more powerful without having to relearn something completely new and difficult. An education in just about any language, a book or a list of commands, and some time and you will have a fully functional module or two that saves you a ton of time and energy.

      I honestly think a lot of the hostility, here, towards VB has to do with the fact that now pretty much anyone can write code and that it's from Microsoft. If you're somehow saying that if they used C/C++ or even Perl that their code would somehow be wonderful or safe, you're insane.

      COMPUTING IS HARD. You can't dumb it down just because it would be nice to do so. And I'm sorry but mathematics is just the way in which meaning is expressed for machines. There's no free lunch here. And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

      I agree and while most applications require this, if you look at VB as a way to either get people started coding or to do quick things because it's built into the system instead of concerning yourself with the necessity of math-based algorithms, it serves its need.

      I'm no math whiz but I can write code (in languages other than VB) and so can plenty of others. Enough putting people down and being on your high-horse because you write in such and such. Math is important to CS and so is easy access to be able to write code.
      • by cyborg_zx (893396) on Sunday July 08, 2007 @08:09AM (#19788339)
        The point is that VB is fine if you want to basically do completely trivial things with what you've already got - basic component connection. As soon as you want to do something non-trivial it all falls apart. The language design is simply worse. It's not that you cannot fuck up royally in C/C++ it's just that some stuff can be really hard to do elegantly in VB6. The newer versions have rectified this somewhat but having a rigorous approach to language design is something worth investing in - even if it's 'too mathematical' for some people's tastes.

        It's just not that easy to do some of the cool stuff we want to do. No amount of wishing it were different is ever going to change that.
      • by Anonymous Coward on Sunday July 08, 2007 @08:16AM (#19788371)
        fact that now pretty much anyone can write code

        No, the hostility is because now pretty much anyone THINKS he can write code, which lowers the valuation of people who actually can do it. That lowers software quality on two fronts: People who can program are forced to write lower quality code because they need to write more to compete with too many amateurs (in the derogatory sense of the word) and people who can't really program write code that doesn't handle errors properly and fails, often silently and undetectedly, when the input deviates from the expected.
        • by Anonymous Coward on Sunday July 08, 2007 @08:46AM (#19788505)
          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."
          • Re: (Score:3, Insightful)

            by Dr_Barnowl (709838)

            DO PEOPLE NEVER LEARN!?!!

            No, apparently not.

            I work for a major UK public service, working on tools and content surrounding an international standard. A lot of the code is VB6 and VBA. And the bulk of it has "On Error Resume Next" at the top of every routine. One of our contractors has an IDE plugin that inserts this piece of code automatically (the very idea of this is enough to make me froth at the mouth).. The rationale is twofold ;

            • Unhandled errors off the top of the stack and terminate the program, which doesn't give you a cha
          • by jgrahn (181062) on Sunday July 08, 2007 @12:40PM (#19790293)

            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.

            I wouldn't use the word "painless". Error handling will always be painful in the general case. It's like going to the dentist. It's painful, but if you don't do it, you can predict endless, total pain later on. But I think you knew that.

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

            A haha haha haha. That's just great.

            But I suspect your real problem is that noone replied: "Good for you. Now go on and use version control, or the guards will see you out". You're describing a situation where critical systems are written by people with an unprofessional attitude to their work (not using the tools they should know they need), and noone (except for an AC on Slashdot) appears to check their work.

            I hate micro-management as much as the next guy, but somehow it's more attractive than no management at all.

      • by QuoteMstr (55051) <dan.colascione@gmail.com> on Sunday July 08, 2007 @08:22AM (#19788389)
        Let me make this clear: your ability to write code in no way makes you a computer scientist. It's like saying that the ability to operate a forklift makes you a structural engineer. Stop it already.

        That said, I'm sure you're good at what you do. I bet you can write good code in VB, as well as many other languages. This isn't a personal insult. VB, PHP, and other brutish languages are equally bad in my eyes.

        These languages are brutish because they oversimplify key concepts. That oversimplification also makes them attractive to new programmers, and new programmers universally write terrible code. The languages themselves aren't bad, the coders are. That said, more experienced coders will generally choose more capable languages, so most of the time, a program written in a brutish language will be a bad one.

        We need fewer programmers, not more. Maybe professional certification would help somewhat.

        (Incidentally, we were lucky that Javascript became the de-facto client-side web language. We could have done far, far worse, and although we can change server languages, we can't change a user's web browser!)
        • by GTMoogle (968547) on Sunday July 08, 2007 @08:58AM (#19788583)
          Who needs fewer programmers? Some programmers would have higher salaries. Some companies would have better code. Many video games might not exist. Would linux? Firefox? Would computers be as useful today if all those crappy enterprise VB applications had consumed all the programming power that currently invests itself in more generally useful areas?

          I agree professional certification may help improve software in critical areas. Hell, at my workplace we sometimes hire EEs over CS if they're capable of learning to code. CS certification would probably improve our applicant pool (but we probably couldn't afford to hire them). It seems to me that it would also have many deleterious effects if it the requirement for it was applied with too wide a brush.
    • by Stradivarius (7490) on Sunday July 08, 2007 @08:04AM (#19788319)
      I believe the author's point isn't that you don't need to know any mathematics, or that it doesn't have an important role to play in CS. He's simply arguing that some of the main issues in computer science are not fundamentally mathematical problems (even if they require some mathematics).

      If you buy that argument, then treating CS as if it were merely simply another branch of mathematics will not help solve those problems.

      Of course, this also takes us into the perennial debate between where to draw the line between "computer science" and "software engineering". One could certainly define away the author's problem by saying that his examples are software engineering issues rather than computer science issues. And it's true that it's software engineering has been driving a lot of the theory with respect to expressiveness (design patterns and the like). But that view also seems to really impoverish computer science - if all you leave the field of computer science is the stereotypical mathematics, why not just become an applied mathematics major?
    • by Dogtanian (588974) on Sunday July 08, 2007 @08:40AM (#19788483) Homepage

      COMPUTING IS HARD.
      Are you Teen Talk Barbie by any chance?
    • And I'm sorry but mathematics is just the way in which meaning is expressed for machines.

      But not for humans.

      And he's wrong about algorithms too - since a non-terminating algorithm is always expressible by deconstruction into a series of terminating algorithms.

      I have no idea what you just said, and I've been coding for years.

      I agree that computing is hard. Well, I find it easy, but I agree that, in general, if you're going to use a computer, you're going to learn some logic, and I will not help you to avoid thinking.

      But 99% of the apps I write require little to no knowledge of mathematics, beyond basic algebra and arithmetic, and maybe a few binary tricks. In particular, Calculus was a required course for CS in college, and I have never used Calculus in my computing, even programming. Ever.

      I have not read that book, but I would argue that a big reason computer science is stunted is this absurd relation to mathematics. You need better-than-average communication skills if you're ever going to work on a team -- at least to comment your code. You need philosophy -- yes, philosophy! -- at least as much as you need math, and a decent logic class would be even more useful. And you need research skills a bit beyond justfuckinggoogleit.com, if you're going to RTFM -- considering you may have to go looking for a manual, or even the right software to begin with.

      • by smallfries (601545) on Sunday July 08, 2007 @01:08PM (#19790509) Homepage

        I have no idea what you just said, and I've been coding for years.


        The book (which I haven't read, but have come across enough crank bullshit over the years to quote verbatim) is based on the idea that algorithms are the wrong model for program. It's a poor misguided idea based on a trivial technicality - an algorithm (by definition) takes an input, performs a computation, and produces an output. Program do not, and are generally called reactive as they maintain a dialogue with their environment of many inputs and output. It's a technical triviality because as the GP points out you can take a series of algorithms and substitute them as the "guts" between each of the I/O operations. Nothing much is lost in this modelling. If you really need to analyse the bits that are missing then just make an I/OP operation an atomic part of the model. Process calculi (used for concurrent and parallel) systems take this approach. If you really want to appease the anal fanatic cranks (like the book author) then just explain that all of their reactive components are parts of a large algorithm that encompasses their operation and their "environment".

        But now to my point. I bet that you know more maths that you think that you do. It's just that the type of maths that you learnt is not the type they teach you in school. It has nothing to do with real numbers, or calculus. It's a branch called discrete maths that is the heart of computer science. You know how to use trees and graphs? They form a big part of discrete maths. How about changing state as your code executes? That's actually a branch called monad theory. Or do you know more than one language? You said you did CS in college so I'll guess that you're familiar with parsing / compiler writing / language design. A mathematician would probably call that abstract algebra (or at least it's a close fit).

        So you know much more dry dusty old math than you suspect - but for the past fifty years these parts of maths have been called CS. Something that is lost on the book author....
  • by Rakshasa Taisab (244699) on Sunday July 08, 2007 @07:10AM (#19787987) Homepage
    Taking CS without math is like taking engineering without any physics.

    WTF is the the author smoking?.. There are of course parts of CS that are less involved in math, but it is still overall a fundamental part.
    • Re: (Score:3, Insightful)

      by jsebrech (525647)
      Taking CS without math is like taking engineering without any physics.

      But you don't engineer a bridge by thinking about the interaction of individual atoms, not because that isn't the "right" way of doing it, but because it takes too long and is too expensive.

      The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field. Mathematics are on such a low level of abstraction that they are mostly use
      • by GreatBunzinni (642500) on Sunday July 08, 2007 @09:32AM (#19788827)

        But you don't engineer a bridge by thinking about the interaction of individual atoms, not because that isn't the "right" way of doing it, but because it takes too long and is too expensive.

        Well, actually you do and in multiple aspects too. Whether to design and evaluate the longevity of the applied materials, to the interaction between components, those aspects must be considered in multi-milion dollar projects where bridge building is included.

        Besides that, civil and structural engineers also have to consider the mechanics of materials and also wave propagation. What field of science covers that? Physics, of course.

        The article makes a good point saying that the obsession with mathematics at the exclusion of all else in computational theory is not necessarily a good thing for the IT field.

        No it doesn't. The only point it makes is that the author does not have a clue about what mathematics is. Mathematics isn't algebra or calculus. Math isn't adding up numbers or multiplying things. Mathematics is structured deductive reasoning, which builds up from a solid starting point (axioms) and serves to represent, communicate and help with the construction of ideas. Those tasks are the basis of computer science, whether you are writing an operating system, designing a database, building a network or even creating a new language/protocol. If you take math out of the picture, you simply cannot do anything in CS, whether you actually know you are applying mathematical concepts or not.

  • Porn (Score:5, Insightful)

    by Dwedit (232252) on Sunday July 08, 2007 @07:10AM (#19787989) Homepage
  • by Anonymous Coward on Sunday July 08, 2007 @07:10AM (#19787993)
    Good luck on doing a kernel, file system, network stack, crypto, image processing, window manager, animation or 3D without math or algorithms. I look forward to reviewing some of this guys code.
    • > Good luck on doing a kernel, file system, network stack, crypto, image processing,
      > window manager, animation or 3D without math or algorithms.

      And when, may I ask, did you last do any of these things? Only a miniscule portion of us are working on the kernel, file system, or network stack (and none of them involve any math beyond simple algebra). Only one or two of us has ever written a window manager, and that's the way it should be. Only NSA people work with crypto on a regular basis; the rest of u
      • Re: (Score:3, Interesting)

        3D is all done in hardware these day

        I hate to break this to you, but no. Drawing in 3D is often heavily supported by hardware and coded using libraries like OpenGL or Direct3D. But how do you think these libraries know where to put things? Someone's doing all the modelling to decide what to draw, and the requirements for this can be quite specialised if you're working in a field like CAD, or games development, or special effects. And who did you think newer versions of the libraries themselves grow on t

    • by nomadic (141991) <.nomadicworld. .at. .gmail.com.> on Sunday July 08, 2007 @10:41AM (#19789291) Homepage
      I look forward to reviewing some of this guys code.

      Knock yourself out. [theseusresearch.com] Whether you agree or disagree with this guy, it's obvious his credentials put him at a level above 95% of the people criticizing him here.
  • Computer science ? (Score:3, Interesting)

    by ivan_w (1115485) on Sunday July 08, 2007 @07:11AM (#19787995) Homepage
    This is all fine.. But it doesn't explain something I have long thrived to understand :

    What is computer science ?

    Computer engineering.. yeah.. I can understand that.. But man.. Computer SCIENCE ?

    That's like saying 'car science', 'cooking science' or 'go at the bar and have a drink science' !

    --Ivan
    • by joel.neely (165789) on Sunday July 08, 2007 @08:04AM (#19788315)
      The term itself is a product of the academic environment, similar to the equally dubious "Library Science" and "Management Science". For what it's worth, the European term "informatics" would have been better, but never caught on.

      That said, I believe there's a useful set of relationships well understood in other fields:

      Science = The search for fundamental knowledge and predictive models;
      Engineering = The creative application of the results of science;
      Technology = The routine application of the results of engineering.

      giving us, for example:

      Science: Physics
      Engineering: Electrical engineering
      Technology: TV Repair, Cable TV Installation

      The punch line is that application of this model to computing works as follows:

      Science: Mathematics
      Engineering: Programming, Informatics, "Computer Science"
      Technology: Coding, Computer Installation, Home Computer Repair, etc.

      Mathematics IS the science in "Computer Science".

      Anyone who has studied advanced Mathematics knows that Math is not about numbers; think of mathematical logic, Boolean algebra, abstract algebra, set theory, topology, category theory, etc. ad infinitum. Dijkstra defined Mathematics as "the art of precise reasoning". In the same sense, "computation" doesn't mean "number crunching", but more generally the automated manipulation of information.

      It is true that there are legitimate concerns in today's computational landscape (networking, concurrency, etc.) which didn't figure in the mathematical/engineering world view of the 1940s, but that's simply a sign that the field has grown up (i.e. grown beyond the limited perspectives of its founders). That's also true in many other applications of Mathematics. For example, early research in differential equations paid much more attention to linear differential equations (because they were more tractable). However, we now know that most "interesting" systems in the real world involve non-linearity.

      Science, Engineering, and Technology share with living systems an important rule: "Grow or die!" Fortunately, the field of computing has grown.
  • Sadly mistaken (Score:3, Interesting)

    by Rumagent (86695) on Sunday July 08, 2007 @07:15AM (#19788023)
    Isn't that pretty much the same as arguing that a surgeon doesn't have to know about anatomy? What we do is inherently mathematical - there exists no other way of defining and understanding complexity, computability and so on.

    I agree that you do not need a good understanding of mathematics to create a homepage, but for anything remotely interesting you do.
  • by DeadlyEmbrace (740321) on Sunday July 08, 2007 @07:15AM (#19788025)
    I attained a Computer Science BS in 1986. At the time everyone was getting Math minors. I opted for a communication minor instead. I've worked in high-tech engineering environments with real-time programming for many years. What I found is that I've never needed the intense mathematics attained by those with math minors. I needed to be able to implement equations that staff mathmaticians would develop. Though math is a fundamental of computer science, I believe the ability to logically assess a situation from multiple perspectives; communicate your approach with the customer; and then implement a maintainable solution is the key components required for computer scientists.
    • Re: (Score:3, Insightful)

      by j0nb0y (107699)
      I think you're confusing software engineering with computer science.

      Math isn't important to software engineering, but it is of great importance to computer science.
      • by Coryoth (254751) on Sunday July 08, 2007 @11:22AM (#19789669) Homepage Journal

        Math isn't important to software engineering, but it is of great importance to computer science.
        Math is important to software engineering, it's just that you can get by without it. However, if you want assurances of correctness then type theory and proof theory are actually rather important; if you want to do concurrency well then process algebras are a good way to do it right, and with assurances that you are getting it right. You can get by quite happily without these things. You can, however, do an even better job with them.
  • by aleph taw (1113487) on Sunday July 08, 2007 @07:15AM (#19788029)
    This guy just doesn't seem to understand what math is. Substituting theory of computation with his "theory of expressions" just shifts focus on another field of math.
    • Re: (Score:3, Funny)

      by jbengt (874751)
      1. Define the math of computer science as algorithms.
      2. Narrowly define algorithms so that they don't include all computer expressions.
      3. Proclaim that computer science doesn't need math.
      4. ????
      5. Profit!!
  • by adamwright (536224) on Sunday July 08, 2007 @07:19AM (#19788053) Homepage
    Mainly, he claims to want to create a "comprehensive theory of process expression". Fair enough, but as soon as you want to extract usable, reliable results from your "comprehensive theory", you've really just created a branch of mathematics. Maths is not just numbers and calculus, but any systematic treatment of relations in a symbolic fashion - unless he plans a lot of fairly useless hand waving, "Oh, my process is expressed as *insert long winded ambiguous English description", he will be working within the remit of mathematics. Heck, one of my areas of study is the development of processes (studied through the use of process calculi) - a highly mathematical tool.

    He also ignores the vast array of work on non-deterministic algorithms, stating that "Any program utilising random input to carry out its process, such...is not an algorithm". Sure, it's not a deterministic algorithm, but even if you artificially restrict your definition of algorithm to just be deterministic, it's a useful tool in analysing such problems.

    Finally, statements such as "Computer science does not need a theory of computation" are just so bizarre as to be funny. I suggest he forgets all he knows about formal computational theory, and I'll contract "Theseus Research" to write me a program to determine the halting problem for an arbitrary program. I wonder what his bid will be, given that he doesn't need a theory of computation (that would tell him you can't do it, at least with our models of computation - and probably with any).

    Now, all of this is not to say you can't make progress in computer science without the mathematics that's currently been developed - however, you will either spend a lot of time achieving unreliable results, be reinventing the wheel, or just be creating a new branch of mathematics.
  • by 3seas (184403) on Sunday July 08, 2007 @07:21AM (#19788063) Journal
    ....Abstraction.

    And computer science, the software side, is really the science of abstraction physics.

    http://threeseas.net/abstraction_physics.html [threeseas.net]

    At some point in the higher levels of abstraction creation and use you use the lower mathematical level as more or less a carrier wave of the higher level abstraction, than for the purpose of performing a mathematical calculation. The analogy is that of using radio waves to carry the music you hear over the radio, but the carrier wave is discardedafter it has done it job. Likewise, the mathematics of computers boils down to binary flipping of transistor swiches upon which the higher level of mathematics is carried upon.

    With a correct approach to the abstraction manipulation machine computers really are, we can accomplish a lot more, similar to the difference between using the limitation of roman numerals in math vs. the decimal system with its zero place holder.
    • Re: (Score:3, Informative)

      by 3seas (184403)
      What the short review seem to be saying is that the author recognizes its not just math.

      How in depth the book goes I do not know, but I do know I've been on about the abstraction perspective for near two decades and communicating it to everyone I can including to those in positions at universities.

      I have noticed these last few years there are others beginning to grasp the bigger picture, such as J. Wing of CMU and her "Computational Thinking" perspective http://www.cs.cmu.edu/computational_thinking.html [cmu.edu] per
  • Yes and no (Score:3, Interesting)

    by QX-Mat (460729) on Sunday July 08, 2007 @07:23AM (#19788083)
    I feel that there are a lot of software engineering areas where you don't need much in the way of maths experience - just logical thinking. Most real world math related implementations I've done haven't relied on a high level of maths... linear interpolation and solving quadratics are probably as "tricky" as math goes outside of academia... but...

    That's not the end of it. I've also done a lot of image manipulation work, and you NEED a good math background when you step over simple 2d convolution filters. Knowing your physics also helps - being able to identify trends and patterns in wave forms, and then applying the necessary maths is a great help. When dging into aliasing and reconstruction now, not just filtering, a high math proficiency is a must.

    I've taken to game programming recently. If you know your maths, the physics comes easily. If you know your maths, specially advance vector and matrix theory (with integration and differentiation being prerequisites), things become a breeze. I didnt know enough. And I still struggled from time to time today. Experience is helping me, but sometimes I wish I had a math background to roll on.

    I guess my ramblings are leading to a poor conclusion. Without maths you're limited in what you can do - but you're only limited by lateral field... In most cases you can take an specific soft eng field and go to town without hitting maths. I'm a very good software engineering and reverser, and I gotten here without having a math background. When I wanted to expand into games programming and image processing, things became much harder without the math.

    With all that said, I'm very very guilty of obscuring simple procedures with valid but pointless math - and I know for a fact there's too much pointless formal theory in computer science now. The pointless formal theory is actually what push me away from doing a masters in computer science, and find something more vocational and rewarding!

    Matt
  • Teh Maths (Score:5, Insightful)

    by ShakaUVM (157947) on Sunday July 08, 2007 @07:34AM (#19788143) Homepage Journal
    This is something I've thought a lot about. There have been any number of times that math has helped me in my software development efforts. Things like trig to predict the path of a moving target in Robowars (back when I was in high school) to various vector and angle related maths in CustomTF for Quake 1 (www.customtf.com) to partial derivatives to calculate the slope on a surface. I've also needed math for various economics related things over the years, and probability and statistics have also been exceptionally useful to me. Currently I'm having to decipher a guy's code which is all eigenmath, so my linear algebra course is saving me from having to hire someone just to explain all the math to me.

    But the kicker is that you can't just tell a student that they should "study vector math" because one day they'll write a Quake Mod, because, truth be told, they probably won't. It's the trouble with all examples you give when students ask how math will be useful -- I could pull any number of examples from my life, but the problem is, they probably won't happen in a student's life. Instead, they'll have their own trials. The best you can tell someone is to study all the math they can, because some day it *might* be useful, and they'll want to have that tool in their toolkit.

    And that's just not a very satisfying answer to students who want to make sure that they'll be damn well using what you're teaching in the future.

    But believe me, I thought I'd never have an application for eigenvectors, and now not only do I have to clean out my brain on the topic, but I have to parse someone else's code (PhD thesis code no less) and add functionality to it. Two other friends of mine got stuck on legacy Fortran apps which are essentially mathematical solvers (one for differential equations, the other for huge linear algebra problems), and both of them are extremely happy they paid attention in their respective math classes.

    So, yeah. To CSE students out there: take math. Pay attention. It could very well save your neck some day at a job, and if it doesn't, at least try to make it interesting to yourself to think of applications where you might use them. All math through the first two years in college can find applications for it quite easily.
    • Re: (Score:3, Insightful)

      by Targon (17348)
      You could say then, that math is used in so many different areas in life, that it is foolish to try to ignore it.

      On the subject at hand though, the real key to why math is needed in Computer Science is due to the analytical nature of the subject. If you do not know how to solve problems, then you will hit many dead-ends in Computer Science. Math isn't just about solving mathematical problems, it is about looking at a problem and working out a solution. Computer Science is about looking at a problem an
  • by QuoteMstr (55051) <dan.colascione@gmail.com> on Sunday July 08, 2007 @08:04AM (#19788313)
    Algorithms exist whether you think about them or not, but if you don't think about them, you'll accidentally create terrible ones.

    Just as few telescope makers are astrophysicists, most programmers aren't computer scientists. The author himself is evidently not one. Instead, he is one of the more vocal members of an angry, ignorant mob trying to burn down the edifice of computer science. Its members do not understand it, so they fear it and try to destroy it --- look what's happened to computer science at universities!

    It was bad enough when courses about a programming language replaced ones about algorithms and data structures (I'm looking at you, Java and D-flat). It was bad enough when pure profit became the raison d'etre of computer science departments. It was bad enough when I noticed my peers start to joke about how they didn't care about this "maths bullshit" and just wanted to earn more money. It was bad enough when the object, not the bit, became the fundamental unit of information.

    But what this author advocates is still worse. He's proposing that we replace the study of computer science with a vocational programming, and call that emaciated husk "computer science." We already have a "theory of process expression", and that's the rigorous of algorithms and data structures. We've constructed that over the past 50-odd years, and it's served us quite well.

    That field has given us not only staples, like A* pathfinding, but a whole vocabulary with which we can talk about algorithms -- how do you say that a scheduler is O(log N) the number of processes except to, well, say it's O(log N)? You can't talk about computer science without talking about algorithms.

    The author's fearful denunciation of algorithms is only one manifestation of the anti-intellectualism that's sweeping computer science. "We don't need to understand the underpinnings of how things work", the angry mob chants, "but only implement the right interfaces and everything will happen automatically."

    The members of this angry mob sometimes manage to cobble something of a program together, but it's more like a huge rock pile than a colonnade. It often barely works, uses too much memory, doesn't handle corner cases, and is likely to crash. (See worsethanfailure.com.) Members of this mob even think that if the same algorithm is expressed in two different languages, it's two different processes. People like this ask painful questions like, "i know quicksort in C# but can someone teach it to me in PHP?"

    Argh.

    Even "new" developments in programming are just new claptraps for old ideas, with fashions that come and go over the years. The only really new things are algorithms, and increasingly, we're calling people who couldn't independently create bubble sort "computer scientists." It's ridiculous. Call computer science what it is, and create a separate label and department for people who can program, but not discover new things.

    It's this idea that one doesn't need to understand or think to be successful that's at the center of the article, and it's not just affecting computer science. Look around you. I wonder whether we'll fall into an old science fiction cliché and regress so far that we are unable to understand or recreate the technology of our ancestors.
  • CS - MA = IS (Score:3, Insightful)

    by MobyDisk (75490) on Sunday July 08, 2007 @08:48AM (#19788525) Homepage
    Computer Science - Math = Information Systems
    It covers networking, scripting, database management, web design, hardware, etc. It's computer science without the science.

    Also, Computer Science != Programming:

    "Computer science does not need a theory of computation; it needs a comprehensive theory of process expression."
    That's not computer science, that's programming. The author is confusing the two. I know many great self-taught programmers who can't tell me what O(n) means. They get a feel for what data structures to use, but rarely create their own. There's plenty of use for such people - it's probably the majority of programmers. But it isn't CS.
  • Lemme guess (Score:5, Insightful)

    by Opportunist (166417) on Sunday July 08, 2007 @08:49AM (#19788533)
    The author really sucks at math but heard that there's big bucks in the computer stuff, right?

    Computers are (by their very definition as well as by the word used to describe them) mathematical machines. A computer can essentially do NOTHING BUT calculate. It can in its core add, subtract, shift and move data around. How is this supposed to work without math?
  • by syn1kk (1082305) on Sunday July 08, 2007 @08:49AM (#19788535)
    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 [wikipedia.org] ) for a transmitter.
  • by wrook (134116) on Sunday July 08, 2007 @10:13AM (#19789085) Homepage
    I really don't care what you do with Computer Science. There is a lot of research that requires math, as others have pointed out. And a lot of it is really valuable. Equally there is a lot of research bundled under "computer science" (because it uses computers I guess) that requires no math. Whatever.

    What I'd like is an arts program that concentrates on programming. I'd like something that stresses *reading* and *writing*. I want people to learn how to *communicate* in these programming languages; not just with the computer, but also with their fellow programmers. I'd like people to do research in language design where they ask the question, "How can I allow the programmer to be more expressive about their intent?" I'd like classes on collaborative design. I could go on forever.

    I was at the art gallery the other day and wandered into the modern art section. They had a display of a particular type of performance art where someone would write out a description of an artwork on 3x5 index cards. A bunch of other artists would take the description and make the art. Along with the index cards and pictures of the finished work, there were a couple of letters. The letters were describing the disappointment the original artists had in the finished work. They even went so far as to accuse the artists following the instructions as being "incompetent".

    I described this to a programmer colleague of mine. His response was, "Wow... I didn't know I was a performance artist". I can count the number of times in the last 20 years that I've had to do hard math in my job as a programmer on my fingers. But questions like, "How the hell did you think *that* was readable", "How can I turn a bunch of requirements into something that isn't crap", "How do I get 10 guys working on a project and have a single vision", etc, etc, etc; those questions I ask every day.

    Sure computer science is important and personally I think math is a part of that. But, someday I hope someone will realize that programming is an *artistic* endeavor and we need to do a crap load of research in that area.
  • Disagree (Score:3, Insightful)

    by Spazmania (174582) on Sunday July 08, 2007 @10:37AM (#19789259) Homepage
    Its not so much that computer science isn't related to math. Its more that CS students are assigned the wrong math courses.

    Algebra is an obvious key to understanding computation. Discrete mathematics including probability and combinatorics tend to pop up in computing problems over a wide range of disciplines.

    On the other hand, it would not be unfair to suggest that computing is more useful to calculus than calculus is to computer science. Continuous mathematics, like calculus, show up rarely if ever in most computer science specialties.

    Fant also seems to be stuck on the word "algorithm." Computer scientists have a very different definition of an algorithm than mathematicians. LISP was the only moderately successful attempt to introduce computer scientists to the mathematical notion of an algorithm. I'll take the groans and dearth of hands raised to the question, "Is LISP your primary programming language?" as proof of just how little regard computer scienctists have for the mathematical notion of an algorithm.

  • by Zarf (5735) on Sunday July 08, 2007 @12:21PM (#19790129) Journal
    From the article:

    "The notion of the algorithm," he concludes "simply does not provide conceptual enlightenment for the questions that most computer scientists are concerned with."

    The assertion that computer science is not math is similar to the assertion made in the book "The World is Flat" saying the world is now "flatter" than it used to be. In the case of the flat world, Friedman (the author of "The World is Flat") claims the world is flat to create a sense of shock that he can then use to get his message about globalization across. In the case of "computer science is not math" Fant here is trying first to shock as a method of capturing attention...

    Most Americans use math in the singular. The Brits say maths. That is because there are multiple branches of mathematics. What we are discovering is that the tie between arithmetic and calculus and computer science is falsely reinforced. The fact is there are other branches of mathematics that are more important to computer science. There are also many new branches of mathematics that need to be developed in order to solve the new kinds of problems we are trying to solve in modern computer science.

    I am really bothered by programmers who, when I interview them, say they have been writing software for years and can't remember ever having to use math.

    I know they can't possibly mean that... or they don't know what math is...

    I know that in several years of programming you must have at least been tempted to write an if statement or at least one loop of some kind.

    The if statement uses a form of algebra called boolean algebra. It was named after George Boole [wikipedia.org] who was very much a mathematician. I know that there are many programmers today who use the if statement and this form of mathematics makes up a large part of many programmer's jobs. I guess it must be falling out of fashion.

    I know how to perform boolean algebraic operations on a white board and I have many times been confronted with a gigantic morass of if and else if statements and using simple truth tables and a little boolean math have reduced enormous sets of ifs down to just a few.

    The new computer science needs to focus on solving problems involving processes. Processes are like algorithms in that they have a set of instructions but they are unlike algorithms in that they also have many temporal components and may exhibit parallelism, asynchronous invocations, and may not have a finite product. These are the types of problems addressed in newer mathematic disciplines that are trying to see information processes not as tied to computing machinery but as tied to the natural world.

    Computer Science may point to a new kind of science that describes an underlying natural computational order of the universe. We are starting to observe computational processes everywhere, in the brains of animals, to the interactions of ecosystems, to quantum mechanics. We may lack the right mathematics to describe these things and we may have to invent new kinds of math but that doesn't mean that math becomes unimportant. An understanding of math can help when studying logic and so too would it help in studying any new disciplines that we may need to invent.

    New kinds of math are invented every day to describe new kinds of problems. To say you don't need math to study any formal science let alone computer science is just silly. It is just something shocking to say that grabs attention... and the article nearly contradicts itself by the end... and it's only 7 paragraphs. The distinction Fant makes is nearly academic. Just as the distinction between a Statistician, a Geometer ( a mathematician who studies geometry ), and a Logician is academic. Yet that is not what the readers of the headline will read... Fant is arguing to make computer science a new kind of science much as Wolfram has. Yet it would be sil

  • by Animats (122034) on Sunday July 08, 2007 @12:57PM (#19790423) Homepage

    What math do you need in computer science today? It's a tough call. But today, I'd study number-crunching rather than discrite math.

    I have a classical computer science education - automata theory, number theory, combinatorics, mathematical logic - all discrite math. That's what CS was supposed to be about in the 1980s. It's hasn't been enormously useful, and I'm writing this as someone who ran a successful project to develop a proof of correctness system. Mathematical logic gets used a little, but tree-like algorithms are more important. I'm not sure automata theory is useful for much of anything. It's one of those things, like proofs in plane geometry, taught in schools because it was the first theory in the field.

    Number-crunching, probability, and statistics seem to be more useful today. If you do anything in graphics, you have to have the 3D transformation math down cold. I've had to do tensor calculus and integration of non-linear differential equations (I used to do physics engines for animation) and that required plowing through difficult math books and getting consulting from university math departments. Bayesian statistics have become very important - it's used in spam filters, search engines, computer vision, and most things that have to intelligently reduce messy real-world data. I didn't get enough of that at Stanford.

    On the other hand, where are you going to use this stuff? Outside of Google, Microsoft, and universities, who does real CS research any more? All the good research centers (DEC WRL, HP Labs, IBM Almaden, PARC, etc.) are gone, or a shadow of what they once were.

  • Math == Latin (Score:3, Insightful)

    by Tom (822) on Sunday July 08, 2007 @05:36PM (#19792615) Homepage Journal
    The article completely ignores the most important part about math: It's a language. A very good language, even. More modern than any of our natural languages, capable of expressing non-Newtonian, non-Euclidian and non-Aristotelian facts of the world we today know to be true but still struggle to fit into our mother tongues.

    Also, it is what Latin used to be in the middle ages - the common language of people all over the world. Scientists from different continents may be barely able to communicate in their respective mother languages or in english, but if they write down their formulas, they both know exactly what the other is talking about.

    But no, the most important part is that math still evolves, and rapidly. As so many other critics, the author of the article appears to have a very limited understanding of math.

"The value of marriage is not that adults produce children, but that children produce adults." -- Peter De Vries

Working...