Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: (OT) Should math (or adv. math) be required in CIS degrees?

by Anonymous Monk
on Jul 26, 2002 at 00:00 UTC ( [id://185385]=note: print w/replies, xml ) Need Help??


in reply to (OT) Should math (or adv. math) be required in CIS degrees?

I will disagree with everyone else.

I think that most of Calculus is useless for computer programming. Furthermore any subject which is taught because it teaches "analytical thinking" deserves to suffer the fate of Latin and Euclidean geometry. (If you have to think about what Proposition 1.47 is, then you didn't learn classical Euclidean geometry, no matter what delusions you may have to the contrary.)

As for other areas of advanced math? Each area should stand or fall on its own merits. Linear algebra, graph theory, number theory and combinatorics all make sense for programming, if only to give people some background for understanding how scalability works. (Which is definitely applicable if you are trying to understand why your web application server is falling over!) Differential equations, analysis (complex and real), topology and the like generally are not as applicable to CS.

  • Comment on Re: (OT) Should math (or adv. math) be required in CIS degrees?

Replies are listed 'Best First'.
Re(2): (OT) Should math (or adv. math) be required in CIS degrees?
by FoxtrotUniform (Prior) on Jul 26, 2002 at 02:58 UTC
      I think that most of Calculus is useless for computer programming.

    That's nice.

    The entire field of machine learning is pretty much entirely applied calculus. Integer and real calcului are also rather important when it comes to solving constraint-satisfaction and constraint-optimization problems. Really abstruse, ivory-tower stuff with no real application to the real world. Like job scheduling. Oh, wait.... Many code optimization problems are NP-hard, like register sufficiency, code generation with unlimited registers, program equivalence or inequivalence, etfc... these kinds of problems are often best solved with constraint-optimization techniques. Is writing an optimizing compiler too theoretical and academic for you?

      Furthermore any subject which is taught because it teaches "analytical thinking" deserves to suffer the fate of Latin and Euclidean geometry.

    Why?

    Update: coreolyn, I didn't mean to imply that math was the only solution to the problem of teaching people to think analytically and abstractly, although I believe it's a good solution. The point is, though, that "good" software engineering practices are useless unless you know when and how and why to apply them, and you can't learn that merely by learning the syntax and semantics of a programming language. It's like knowing how to play an instrument, but not how to play in a given key or put together a chord progression.

    --
    The hell with paco, vote for Erudil!
    :wq

      I agree with most of your examples. (The notable exception being constraint satisfaction, whose dose of Calculus can be largely replaced with an appeal to common sense.) And to your examples I would add that numerical modelling (applicable in lots of places) often uses calculus very intensely. Lots of areas in programming use calculus, shouldn't we conclude that Calculus should be core for CS?

      Not necessarily.

      It isn't hard to see that every area of knowledge could apply to any other area in some way. But no academic program can hope to teach more than a fraction of that information, and so needs to not only direct the firehose of knowledge at students, but also filter it. Trying to not filter is merely choosing to filter based on running out of time, and excess verbiage leaking out of apathetic brains.

      Given this reality, it is possible to validly disagree on which useful topics make the cut, but it isn't possible to disagree that something potentially useful will be cut. And when that choice comes, subjects that can offer no other reason for their being taught other than that they teach analytical thinking do not deserve to be spared the chopping block. After all, there are many places where students can be exposed to analytical thinking. Include one that does something else for you as well.

      Man do you sound like my brother... and niether of us can figure how the other functions to this day.

      While your in there solving constraint-satisfaction problems, some of us are left to make these systems work for people that can't spell scheduling. Your math skills enhance your relationship to the machine in the way that works best for you.

      Granted calling Calculus useless in a monestary full of math monks is like spreading your cheeks for the Bulls in Pompolona and it begs a response, however to imply that there is only mathmatical resolution to the problems surrounding application development is stretching things as well.

      coreolyn (Probably more directed at my real brother so please don't take offense ;)
Re: Re: (OT) Should math (or adv. math) be required in CIS degrees?
by talexb (Chancellor) on Jul 26, 2002 at 18:47 UTC
      I think that most of Calculus is useless for computer programming. Furthermore any subject which is taught because it teaches "analytical thinking" deserves to suffer the fate of Latin and Euclidean geometry.
    From your comment, I infer that you think learning Latin is a waste of time. I disagree.

    If you're in the field of law, medecine, or science, you probably use Latin every day. If you're learning English, French, Italian or Spanish, Latin gives you a great basis for starting a vocabulary.

    Note that I included English in the list .. the English language is quite a mongrel, with words from lots of other languages inside it. Well-rounded developers should be able to document their work and communicate with others. That requires a decent vocabulary, something that learning Latin definitely helps with.

    --t. alex

    "Mud, mud, glorious mud. Nothing quite like it for cooling the blood!"
    --Michael Flanders and Donald Swann

      I am glad you disagree. Your disagreement hasn't changed my opinion.

      First of all learning Latin had a definite use. In an era where every educated person learned Latin, not knowing it shut you out of many areas. And even today if you need to access historical records, it is critical to know Latin. But as I said elsewhere, saying that a subject has a use doesn't mean that it is useful enough that everyone should go out and learn it. Quite the contrary, because of constraints on time we do not learn many useful subjects, and should choose wisely.

      It also doesn't mean that your examples are well-chosen.

      Law I cannot comment on, knowing Latin may be useful there. But people I have known in various sciences and medicine have told me point blank that learning Latin is not very useful for what they do. Yes, they use Latin-derived words. But most of what they have to know isn't those words, and learning the ones that they need to know is such a small part of what they do that it would make no sense to learn Latin first.

      So I have to decide whether to believe a random stranger on the net making sweeping claims about various professions versus accepting what PhDs and MDs have told me about what they do. I would that all my decisions were that easy!

      Going further, what you say about various Romance languages (and about English - which got a lot of vocabulary from French in particular) is definitely true. However it is a disingenuous argument since learning any Romance language for the same effort both teaches you a language used by millions alive today and gives you the same head start on other related languages. Which makes Latin an inefficient path to that result.

      And that is why Latin is no longer a basic part of our general education. Most of the reading and writing people do is in their own vernacular language(s), scholarly discourse takes place almost exclusively in them, and even Christian worship is no longer generally conducted in Latin (a process that took from Martin Luther to the late 1960's). Given this, learning Latin simply doesn't make very much sense for most people. It held on for a long time based on inertia and general acceptance that somehow someone who didn't know Latin wasn't really educated. Learning Latin taught, so the argument went, "analytic thought". Those declensions had to be good for something!

      That proved not to be enough. So eventually Latin was discarded, more useful topics replaced it, and life went on. As with the loss of Euclid's Elements as a basic textbook a few decades earlier, something was lost and on the whole rather more was gained.

      PS I know that spelling flames are silly, but I have to admit to finding it ironic when someone who is telling me the importance of developing a better vocabulary gets the spelling of "medicine" wrong...

        Well-rounded developers should be able to document their work and communicate with others. That requires a decent vocabulary, something that learning Latin definitely helps with.

      yes, people who use calculus in PERL scripts are the same people who would document their code in Latin.

      neither are necessary or even desired. people with CIS degrees are the people working on help desks and doing data entry. they are not developing cutting edge encryption algorithms.

      fine, when you're going for your doctorate learn calculus and latin. but for a BA in CS why not skip the higher math and try to teach them how to debug and optimise code. so that everything that they write for the first couple of years after getting their degree doesn't have to be re-written by someone with more experience.

          yes, people who use calculus in PERL scripts are the same people who would document their code in Latin.

        Congratulations, you've completely missed the point. We should teach CS majors calculus not so they can write numeric-integration code (which they'd be better off getting from Numerical Recipes instead), but so they learn how to analyze and solve problems in the context of formal rule sets. Programming fits that description.

        I've taught undergraduate programming labs for the past three years: very concrete, applied stuff (the course is an introduction to software engineering; we teach them how to write programs, not how to write code that compiles). The classes are very eclectic: many CS majors (some interested in theory, some in practice), many engineers, and a strong minority of other Science, Arts and Business majors. The students who've taken courses involving more abstract formal reasoning (Math, Philosophy, Physics, etc) are consistently better able to understand the concepts and do much better on the coursework than the ones who focus on nuts and bolts. The best student I've had in that course was an English major with a minor in Philosophy.

          people with CIS degrees are the people working on help desks and doing data entry.

        Then what are they doing at a university?

          for a BA in CS why not skip the higher math and try to teach them how to debug and optimise code.

        You can't teach someone how to debug or optimize code. (Glub knows I've tried.) The best you can do is teach them how to think logically and abstractly about the code, which involves teaching them how to think logically and abstractly.

        Math tends to be better at that than software engineering.

        (CS theory/algorithmics is also good, but that's just another math course, really.)

          so that everything that they write for the first couple of years after getting their degree doesn't have to be re- written by someone with more experience.

        The problem, in my experience teaching students and in the private sector, isn't that people know calculus, but not how to code: it's that they can't think abstractly about the code. They can catch syntax errors, but can't solve logic errors to save their lives (or jobs). With a very few exceptions, the people whose code has to be rewritten are the same ones whose reply to required math courses was "when am I ever going to have to use this?"

        --
        The hell with paco, vote for Erudil!
        :wq

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://185385]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2024-04-24 12:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found