Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Education Programming IT Technology

Math And The Computer Science Major 1203

An anonymous reader writes "What sort of math are CS majors expected to take? Why are these classes useful? Does programming really have that much to do with math? Lineman.Net has published an article that answers these questions and more. If you are considering a CS degree, be sure to give it a look and make sure you are taking steps to prepare for your college career."
This discussion has been archived. No new comments can be posted.

Math And The Computer Science Major

Comments Filter:
  • A Warning (Score:5, Interesting)

    by ziondreams ( 760588 ) * on Wednesday May 05, 2004 @10:13AM (#9063015)
    As a student graduating (June) from a CS similar degree, I take this opportunity to warn/help inform others about such fields.

    If you truly love programming and want to code for a living, do NOT attend such Universities as DeVry, many State Universities, or other small "tech" schools. This may sound like common sense to some, and outright madness to others, but trust me on this one. I personally am about to graduate from DeVry, and, although it's surprising reputation, they in no way prepare a student to enter the world of programming. The majority (I'd say 70%) of the skills I've obtained have been acquired by means of self-teaching and learning from friends.

    More and more, I've been seeing that "programming" degrees focus much more on the management side of things, instead of the developer role. Perhaps this is because of the apparent problem of off shoring IT jobs? The main problem is not that the Universities have changed to this approach, it lies in the fact that the said schools teach in such a manner, WITHOUT advertising so. It brings about a sense of deceit and trickery...but perhaps that's what they were going for? :-)
  • HS math question. (Score:5, Interesting)

    by grub ( 11606 ) <slashdot@grub.net> on Wednesday May 05, 2004 @10:14AM (#9063032) Homepage Journal

    Not entirely unrelated question about high school math: A couple of weeks ago I was out with my little brother who recently turned 18 for a beer and to shoot pool. He was having trouble making shots so I said "Imagine the table is a large sheet of graph paper when you plan your angles and shots." he said "I've never used graph paper."

    He's graduating from Grade 12 this year, am I just a relic[0]? What do schools use now to teach geometry? I hope it's not all done on a computer, the practical hands-on stuff is invaluable.

    [0] I'm 38; mom died in '82, dad remarried and could still get wood.
  • Math and CS (Score:3, Interesting)

    by MarkPNeyer ( 729607 ) on Wednesday May 05, 2004 @10:16AM (#9063045)
    At my school, Xavier University, Math and Computer Science are a single department. It makes sense, though - the study Languages and Automata is an extremely mathematical pursuit, but it's also very important to Computer Science. The same could be said of any number of different CS related topics.
  • by ObviousGuy ( 578567 ) <ObviousGuy@hotmail.com> on Wednesday May 05, 2004 @10:19AM (#9063092) Homepage Journal
    You can learn CS without any math at all.

    CS is about finding algorithms, which has more in common with cooking than calculating. Most math classes that CS majors are required to take a pure esoteric fluff that is meant to jack off the math majors while the CS students snooze in the back of the room.

    Even the 'mathy' part of CS, the Big O notation, is little more than saying "well, this one takes a long time so let's just say it's O(n^2), this one is fast so it's O(n), and this one is really fast so it's O(1). And this one we can't figure out? O(log n)." It's really no wonder that computer programs suck as much as they do when the entire concept of algorithm performance is measured in such a slipshod manner.

    If math majors could get away with estimating their way through to graduation, we'd all be much worse off. But CS majors certainly don't need all that extra crap.
  • Programs are math (Score:4, Interesting)

    by aim2future ( 773846 ) * on Wednesday May 05, 2004 @10:19AM (#9063100) Homepage
    As with many things you do, you can do it quite a while without getting heavily into math, but when you deepen yourself you have to understand math and master it to a certain extent. For several years I did quite a lot of sw development without really using math, but when later starting my PhD I would have been lost without math. Programs are math. Every program can be converted to lambda calculus which is a mathematical expression form. Programs are art, as well as math can be seen as, and... programs are literary work. A certain story or idea can be expressed in many ways, without changing he actual idea behind the program. This is also the reason why software can not and should not be patentable, as it is now within USPTO (due to an old mistake...).
  • 18 credits (Score:4, Interesting)

    by mjh ( 57755 ) <mark@horncRASPlan.com minus berry> on Wednesday May 05, 2004 @10:21AM (#9063119) Homepage Journal
    For my BS in Comp Sci (1992 U of Wisconsin), I had to take 18 credits of math, and achieve a B average in those courses. The 18 credits comprised:

    Calculus 1: 5 credits
    Calculus 2: 5 credits
    Calculus 3: 5 credits
    Matrix Algebra: 3 credits

    Although the University offered minors, my college (the college of letters & sciences) did not. If they had, I would have taken the remaining two credits in order to get the minor in math.

    IMHO, the assistance that math has provided me has been invaluable in my career. NOT because I use calculus on a day to day basis, but because it forced me to develop critical and systematic thinking skills. And THAT has been invaluable. At the time I hated it, but in retrospect it was really good.

    $.02.
  • Philosophy also good (Score:2, Interesting)

    by catherder_finleyd ( 322974 ) on Wednesday May 05, 2004 @10:22AM (#9063132)
    I have found that Philosophy, especially Logic, is also very applicable to Computer Science. It has been especially useful in relational database design and development.
  • Short answer: NO (Score:1, Interesting)

    by aardwolf204 ( 630780 ) on Wednesday May 05, 2004 @10:24AM (#9063162)

    I've never been one for math, specifically algebra. You see, before I had the opportunity to take algebra in middle school I had been programming with QBASIC. Having no formal training in Basic I ended up coming up with mathematical solutions using crude loops, variables, and goto statements. Not kosher programming now that I look back but so what, I was 12. When teachers tried to "teach" me algebra I felt like I was being unlearned. Most of the times I just scripted up some basic to help me with the homework.

    Years later my high school offered a C++ class so being the geek I am I tried to get in it. Unfortunately the pre-requisites for the class were kind of high including algebra 1, 2, geometry and calculus. Like I said, I was never one for math, but programming i could handle. This was the teachers first year teaching C++, prior to that he was teaching QBASIC. When he rejected me based on my lack of pre-requisites I threw together some quick basic using RND, some colors, circles, and a few system commands to make it look pretty. The teacher let me stay and I got an A in the class. I may not have used the same formulas as the other kids in the class (They were Nerds, I was a Geek ;-) but that was no problem once I found nested while loops.

    Ok, so I may have actually stunted my growth in mathematics and developed bad programming habits (I dont need no stinkin XOR, I'll do it the hard way) but today I'm working as a web developer and use PHP all the time without problems (and yes I turned globals off, use sessions, and actually think the security through when doing DB stuff).

    Just my $0.02
  • College (Score:5, Interesting)

    by duffbeer703 ( 177751 ) * on Wednesday May 05, 2004 @10:25AM (#9063169)
    College is not a vocational school, although that many would argue that DeVry is a vocation school.

    College is supposed to teach you how to think & learn... it's become a necessity since US secondary schools are so malfunctional. Your college classes should give you a base of knowledge about whatever you are studying, and the rest is up to you.

    The reason that top schools like MIT are top schools is that they force their students to explore and learn new things. If you are a serious student, you can come away with a good education from almost any school.
  • Re:Nail on the Head (Score:5, Interesting)

    by AKAImBatman ( 238306 ) <[moc.liamg] [ta] [namtabmiaka]> on Wednesday May 05, 2004 @10:26AM (#9063186) Homepage Journal
    Let me second this. A good software engineer still needs to know the math behind what he's doing. Intuition can go a long ways, but sometimes intuition is wrong. And sometimes there just isn't a good way to develop something without invoking a few formulas. (Anyone who's developed a file system, say "Aye"!) The bright side is that most engineering work doesn't really require anything more complex than high school math. (Assuming that they're still *teaching* high school math. Grrr...)

    My best suggestion would be to shy away from any school that skips over the theory and math behind computational sciences. I myself ended up skipping the degree all together and picked up the various textbooks and papers necessary to educate myself in the field. That's not the path for everyone (especially if you're not very self-motivated), but for me it was better than trying to sort through which school was teaching the real thing and which one was dumbing it down to improve attendance.

  • by UTPinky ( 472296 ) on Wednesday May 05, 2004 @10:26AM (#9063190) Homepage
    THANK YOU for saying this! I got into a huge debate one time w/ a classmate because he was complaining about how Automata Theory (Language Theory) should not be a Comp Sci class. I was dumbfounded... This was perhaps the "truest" computer science class that was required for a degree at UT Austin... and in my opinion perhaps the most interesting class at that.
  • Re:A Warning (Score:5, Interesting)

    by hJordanH ( 645049 ) * on Wednesday May 05, 2004 @10:29AM (#9063240)
    I could not agree more. I attend the University of Texas in Austin (which has a pretty good rating for CS, good enough for Dijkstra to teach there until his passing two years ago) and one of my professors last semester, while ranting about over seas outsourcing, spent twenty minutes lecturing us about how lucky we are to attend a school that focuses more on theory than application. I am a senior, graduating this upcoming Christmas, and the great majority of my completed courses have had almost no practical use to me for coding. On the other hand, they have taught me to think about and logically break down problems, understand how programs actually interacts with the computer, and the theories on which computation is founded. A techincal school or small college CS program would teach me the complete opposite of what I have learned. My professor believes that the ability to think, not just to program, is what will keep our asses fed in the upcoming years, instead of some family in Banglapore Tipikaka ( - does not exist, but you get the picture).
  • Re:A Warning (Score:2, Interesting)

    by Dana P'Simer ( 530866 ) * <dana.psimer@NoSPaM.dhptech.com> on Wednesday May 05, 2004 @10:29AM (#9063248) Journal
    I am sorry to break this to you, but DeVry has a really bad reputation in the engineering community. I, personally, would never hire a DeVry graduate without some really glowing referals from someone I know and trust and niether would most of the engineers I know. I have worked with a few DeVry grads and not one of them demonstrated the skills to really do well in programming.

    To be fair, that does not mean that you are like those people I have worked with and I may have been extremly unlucky in the samples that I have encountered.

  • Re:College (Score:3, Interesting)

    by (trb001) ( 224998 ) on Wednesday May 05, 2004 @10:36AM (#9063346) Homepage
    There've been many, MANY "Ask Slashdots" and the like about what college classes to expect, and the overwhelming majority agree with the parent...that is, college classes don't really teach you anything other than how to think, and they're useful to weed out people that are just lazy. Advanced data structures and maybe the basics of an OS are about as much as you can hope to learn, as far as practical programming goes. Using your technical electives wisely is a must...I took a comparitive languages class that, while not terribly useful, allowed me to gain some additional respect with the "old timers" (read: over 40) that I was working with by being able to intelligently talk about langauges no longer in wide circulation. People who come out of school without having done additional programming on the side are going to be in for a shock...and will probabaly move up to management post haste because they won't have the necessary skills to program efficiently.

    --trb
  • Amusing Anecdote (Score:4, Interesting)

    by AKAImBatman ( 238306 ) <[moc.liamg] [ta] [namtabmiaka]> on Wednesday May 05, 2004 @10:36AM (#9063355) Homepage Journal
    Recently a "nuclear scientist" (the guy was a nut) was rather disparaging of Computer Sciences in an open forum. (Made the standard comments about "not a REAL science", blah, blah). He then went on to claim that in his younger days he had built the earliest computer cluster and that the software he wrote was so powerful that the cluster could have scaled up to infinity.

    Suffice it to say, it felt really good to throw Amdahl's Law [wlu.edu] at him and call *bullshit*. He didn't talk to me after that. :-)
  • by Walker ( 96239 ) on Wednesday May 05, 2004 @10:36AM (#9063357)
    I am a math and computer science professor; I teach both types of classes. And I feel very strongly that computer science majors must learn to do proofs. And not fakey set identity proofs that they teach in Discrete. I mean real proofs from an axiom system like graph theory, abstract algebra, or analysis (pick one).

    Why? Because in my experience, exposure to axiomatic systems greatly improves abstraction and critical reasoning. I teach a "bridge class" (what we call them these days since high schoolers are typically unprepared for math beyond calculus these days) which presents an axiomatic approach to linear orders and the topology on that line. Many students take this class before Data Structures and they remark that it makes the distinction between Interface and Implementation much easier for them (especially since search algorithms are all on various linear orders). They also know how to design APIs cleanly without having to write the program first.

    The point I am trying to make is that you should not just take math because of the techniques you learn from it. (This is anecdotal, but) When I was at graduate school at Cornell, almost every math major I met who started programming after taking a lot of math classes was a stronger programmer than anyone who started programming first.
  • Re:Here it comes ... (Score:5, Interesting)

    by haystor ( 102186 ) on Wednesday May 05, 2004 @10:36AM (#9063359)
    It really depends on what you're doing. I tend to think of programming as split into two groups:

    Computer Science programming - embedded, drivers, algorithms, etc...

    Business programming - This involves moving regular data between buckets. Math isn't so important as common sense. Both seem to be in short supply.

    It's been my experience that CS majors can perform well doing either. But there are other skills necessary for business programming that will allow a mediocre programmer to produce excellent work (such as knowing the business or being a wiz with SQL).

    I speak from the perspective of a math major who does business programming. I work with a lot of other people who do just great but occasionally run into a brick wall when some strange math comes up. These tasks come up only rarely. The most common place to see a math weakness manifest itself is when they foolishly matrix a couple sets of data and everything grinds to a stop. Even that is easily fixed (as long as they tested full sets of data before going into production). The only time I've *had* to be involved was implementing some probability and statistics packages.

    All things being equal, I'd take the guy with math. It means he can think, comprehend written works and probably has a good sense of when his numbers add up (very useful in business programming).
  • by StormReaver ( 59959 ) on Wednesday May 05, 2004 @10:40AM (#9063420)
    "trying writing even a simple Brickout clone without knowing basic trigonometry and you'll run into problems."

    Having written a simple Breakout clone back in 1990, I can assure you that you need to know little more than basic arithmetic. I wrote several remakes of old arcade games (Breakout, Asteroids, Missile Command, Space Invaders) before I could solve even basic equations.

    3D programming, to be sure, is a whole different ball of wax. That absolutely requires excellent Algebra, Trig., and Calculus capabilities to do anything useful.
  • by sfm_guy ( 775897 ) on Wednesday May 05, 2004 @10:42AM (#9063438)
    When Daniel Hillis, founder of Thinking Machines, and all around brain-wave, first went to MIT, he asked AI guru Marvin Minsky what he should study. Minsky said, "Study math, because that way, everything you learn will still be true in 10 years." I've been a software engineer for 8 years, and majored in math in college. I had some disadvantages starting off in trying to convince companies to hire me as a programmer, but once I had that critical one year of experience, the math degree has only been an advantage. Moreover, if you are the math guru where you work, you get to be the hero and alpha geek all the time. My sole regret in taking math? That I didn't take more.
  • Think math (Score:3, Interesting)

    by Max Malini ( 706676 ) on Wednesday May 05, 2004 @10:43AM (#9063455)
    As someone with applied math degress (CS, physics minor) turned software engineer, I'd like to respond to a few ideas presented so far.

    "Math is vital to computer science"

    Well, it's certainly important sometimes, possibly often. I used a lot of math writing a conversion library for 3D file formats, but not so much writing a user system in php.

    Learning to think is what's really important. I got my first software job by explaining at the interview that my skills were in complex problem solving -- skill they had trouble teaching straight CS people they had hired.

    "You really dont need much maths to write a shopping cart applications"

    Possibly not, but... I taught applied calculus at a university for many years as a grad student and I always loved it when students asked me "When we I ever use this?". A seemingly silly question to ask in an APPLIED Calculus class to be sure, but the most important use was always that if payed attention, the course would give them problem solving and thinking skills that would help them advance in whatever field they chose. Bottom line: After school you may not remember the Fundamental Theorem of Calculus, but the thinking skills will be invaluable.

  • by Dyslexicon ( 639846 ) on Wednesday May 05, 2004 @10:44AM (#9063476)

    It isn't entirely true that (good!) CS programs aren't for people who want to write code. I went to a University of Wisconsin satellite school for a few years and took courses in their CS department. The CS major had different options for the "emphesis." There was the traditional theory emphesis which is what is being discussed above, but there was also a code-monkey emphesis for those of us who wanted to write code.

    in retrospect, though, this might explain why the professors couldn't have coded their way out of a cardboard box.

  • by PrimeWaveZ ( 513534 ) on Wednesday May 05, 2004 @10:49AM (#9063547)
    The US doesn't have as many CS folks around anymore.

    I was a CS major for one year back in the Summer 2001 through Spring 2002. It was quite enjoyable, though difficult. I quit because of all of the math classes. I was not looking to be a computer hardware engineer, but in what I want to do (business oriented, non-entertainment software) there is less of a use for advanced mathematics.

    Sure, math is still important. I don't deny that. I'm saying that I am not going to be writing the next Photoshop (yay vector manipulation!) or video game with the "most realistic phyics yet."

    Maybe it is because I've never ever liked math (except for geometry/trig) but that was my weakness in CS. Now I'm a liberal studies major, though I am a service technician for a major computer company now. Oh, sweet irony!
  • My experience (Score:3, Interesting)

    by kneecarrot ( 646291 ) on Wednesday May 05, 2004 @10:50AM (#9063553)
    I graduated from the University of Waterloo in Ontario, Canada in 2000.

    Computer Science was actually under the Faculty of Mathematics. So while I was majoring in CS, I had to satisfy all the requirements for a 4 year math degree. I ended up with an Honours Bachelor of Mathematics in Computer Science.

    I remember thinking what an odd situation this was in first year. But, as time went on, it made more and more sense. The math turned me into a great problem-solver and honed my analytical skills. When programming tasks were given to me, I didn't think about which lines of code to use, I thought about the problem itself and how best to describe it, simplify it, and abstract it.

  • by Seekerofknowledge ( 134616 ) on Wednesday May 05, 2004 @10:52AM (#9063572)
    I totally agree with your sentiment, about that class being the "truest". It's direct relation to programming languages, and even computers in general is so outstanding, it is sad that your classmate could not see it.

    To explain mysef, relatively new programming languages are all just context-free grammars, and computers are just exceedingly complex Turing machines. Both of these ideas are part of Automata, and part of the deeper understanding of computing science.

    Your classmate probably just wanted to learn to code (as in monkey-style), and not do anything more abstract.
  • You got it backwards (Score:3, Interesting)

    by wizarddc ( 105860 ) on Wednesday May 05, 2004 @10:53AM (#9063600) Homepage Journal
    If you want to be a programmer, a real hardcore programmer, you should major in something other than CS, and then minor, or perhaps double major in computers. I would suggest this to most people. Sure, there are reason to be a pure CS major, but think about the degree you have. Physics, Chemistry, Biology and Mathematics don't change nearly as quickly as Computers do, so your degree will be worth more longer. Plus, once the IT field hits rock bottom, you can simply move into the field of your degree. My cousin is a senior at NJIT, and he told me this straight up. I never went to college for programming, I just kind of picked it up along the way.
  • by the chao goes mu ( 700713 ) on Wednesday May 05, 2004 @10:58AM (#9063659)
    I recall trying to tell a coworker his logic wouldn't work because he wasn't following deMorgan's law (the !(x|y) result he wanted was written as !(x&y), not as (!x & !y)). I spent over an hour trying to convince him. He ignored it, said "perl logic doesn't work that way", and, then about two days later, came to ask how to fix it when it kept failing. So, it seems you can try to do it without understanding math/logic, but you may run into a few problems.
  • by sceptre1067 ( 197404 ) on Wednesday May 05, 2004 @11:00AM (#9063679) Journal
    Finally getting my degree after 10 years in the business...

    1. Statistics is good, as mentioned elswhere almost everybody in the business word could use a better grounding in statistics. For real world application this will help you from performance maonitoring to coming up with TCO numbers.

    2. As mentioned above Discrete/finite mathematics can be usefull. From my experience it helped clarify some approaches to SQL queries... in other words between set theory and symbolic logic, you will get a better grounding on how to deal with large data sets. Plus logic is good for the daily political discussions in the lunch room!

    3. Data structures... more abstract but if your a DBA for something like Oracle and decide you want to play with your file structure (e.g. heap versus btree, etc.) This will give you some insight into why one might option might be better than another. As for coding... its nice to know, but as pointed out somewhere else, modern languages take care of a lot of the plumbing for you so you don't really have to know it.

    The rest... it's o.k. Out side of that I think, again this has been mentioned before, it depends as to what you intend to do after school. If you end up in the sciences, then you need the math as far as it applies to the area your in.

    If you winde up in the business world, logic and stattistics are going to be the two big things you need. Plus, imo, a good grounding in gathering and presenting empirical data (e.g. not just tracking your time, but really looking at how long it takes you to do something or the server to do a batch process and showing to you superiors unrefutable data.)

  • by The Snowman ( 116231 ) * on Wednesday May 05, 2004 @11:03AM (#9063717)

    Besides the basic Calculus everyone had to take, I took Discrete Math and Probability and Statistics. Boolean algebra is critical to anyone who programs using "if" and "for" statements, which should be everyone. "if (x == 7)" is easy even for non-programmers to understand, but a formal education in boolean algebra will give you a better insight into how complex conditional expressions work and how to simplify them (e.g. DeMorgan's Law). Statistics has limited direct use in computer science, but understanding it helps one to understand how important algorithmic efficiency can be.

    Advanced math (i.e. beyond college algebra) is not critical for programming but it helps.

  • by Coryoth ( 254751 ) on Wednesday May 05, 2004 @11:08AM (#9063783) Homepage Journal
    Another interesting quote: If you have the chance to take calculus in high school, I may surprise you with my advice. I would not automatically jump at the opportunity for a couple reasons. I think I agree on this one. You're going to start at ground zero when you take Calc I in college. So use high school to become badass proficient in algebra and trig.


    To be honest, that's just stupid. You should already be badass proficient in basic algebra and trig going into your final year of high school. I am constantly amazed by the poor level of preparation in mathematics of North American, and particularly US students coming in to College. Where I come from introductory calculus was covered in the second to last year of high school, and the only math course going in the final year (I'm counting statistics as its own discipline) was a pure calculus course. Most students didn't seem to have any difficulty with this. It seems to me that the US sets its expectations of students too low with regard to mathematics education at the high school level.

    Jedidiah.
  • by Phenris Wolfe ( 725404 ) on Wednesday May 05, 2004 @11:09AM (#9063798)
    I actually swapped from CS to CIS because of Discrete Math II. The teacher made the class way too hard and didn't do a good job of explaining how all that stuff fit together. Interestingly enough, out of 4 CS/CIS majors that graduated together, I'm the only one doing actual work with computers (web development). I also failed graphics programming because of the math. That's bothered me ever since, and I've worked hard to improve my skills in that area. I think the real problem with learning math in the CS curriculum isn't the math, it's the math class. The class generally tends to be geared toward math majors, not people that are going to use math in computing.
  • My view (Score:4, Interesting)

    by sagei ( 131421 ) <rlove@rFORTRANlove.org minus language> on Wednesday May 05, 2004 @11:11AM (#9063835) Homepage
    As someone who just graduated with both a CS and a Mathematics degree, I would say any (good) CS program is going to require a few semesters of Calculus, a semester of Linear Algebra, some sort of Numerical Analysis class, and a Discrete Math course. Most of these would probably be of the computational/applied variety - e.g., not proof-based. Since I am a Math guy, I would add a second semester of Discrete Math, personally. Maybe one being proof-based and one more applied.

    That said, personally I think CS majors should have a strong math background (the Calculus gives you that) but the only relevant Math, unless you are doing something specialized with a specific requirement, is what you learn in a Discrete Math course (what some programs actually call "Math for CS Majors" or similar).
  • by swollkin ( 78626 ) <steve@n[ ]d.org ['jor' in gap]> on Wednesday May 05, 2004 @11:18AM (#9063928) Homepage
    While I was an undergraduate I was first a math major and then switched over to computer science. When I got there, I was shocked by how much the other CS majors around me despised mathematics. After observing this behavior for some time and thinking about it, I have realized what the real issue is.

    In the past, Computer Scientists really were scientists of computing, but now there is a new niche: commercial programming. Many people who want to be commercial programmers end up in the Computer Science major but have no interest in the theoretical aspects of computing. They just want their degree and their job. I think that the modern trends in commercial programming require a new approach. If you just want to be a programmer, a computer science degree is going to annoy you with lots of math and computing theory.

    After working in the commercial programming world I have come up with a new analogy. Programmers are to Computer Scientists as construction workers are to engineers. One is a trade, one is a science, and we should stop lumping them together at the higher education level.
  • Three Words (Score:2, Interesting)

    by Raunch ( 191457 ) <http://sicklayouts.com> on Wednesday May 05, 2004 @11:21AM (#9063959) Homepage
    Big O Notation [wikipedia.org]

    Just to know what makes a good program involves quite a bit of math. Nothing made the speed of nested loops clearer to me than this. Basically, it lets us define the best worst and median cases of general types of code with very simplistic functions.

    O(1) - loopless program
    O(N) - One loop from 0 to N
    O(N^2) - One loop from 0 to N with another loop nested in it that is from 0 to N

    So, the length and basically anything that is only executed once is considered inconsequential. It also shed light on
    "I can just do this with two nested loops, why would I possibly have to write this with a/an <advanced data structure>?"
    is a stupid question.

    Coincidentally (no it's not a coincidence), the number of CS sutdents that change their majors to something else during the first year is about 40%.
  • by Anonymous Coward on Wednesday May 05, 2004 @11:25AM (#9064010)
    This isn't about ego. There's simply no point in choosing CS if you shy away from math and won't be working in a field where CS skills are required. You wouldn't enjoy it and consequently wouldn't allow yourself to apply CS methods. There's nothing wrong with connecting databases to webservers. People want that done. It's just not computer science.

    See, and that is the problem. Most jobs today in proramming require a BS in CS. Yet the majority of jobs I see have requirments like:

    Backend developer -Must have BS in Computer Science -Must have 3-5 years Java experence -Must have experence in Oracle, SQL server, etc -Must be able to write SQL code for enterpise applications.

    You don't need uber math skills to write good SQL or Java code for a database application. I found after college that while my math and writing skills had improved since high school, my database knowledge was lacking so I went to a technical school. There really should be some sort of IT degree that has a focus on practical knowledge rather than mathmatics. You will use high level mathmatics if you are working on video games, or CAD applications. But most programmers end up writing database interface tools.

    I'd like to see some type of IT degree that taught programming, networking, and troubleshooting. I'd rather hire a programmer that had a strong foundation in networking concepts than one who aced calc 3.

    Hell, they should also stress English judging by many of the programmers I've met.
  • by eric76 ( 679787 ) on Wednesday May 05, 2004 @11:31AM (#9064070)
    Short proof: YES and NO

    Proof?

    For what it's worth, the best software developers I've ever met all had a good math background. The better the background, the better quality work done by the software developer. The worse the background, the worse the quality of the software.

    Writing a high quality, very solid program is quite similar to proving a theorem by construction.

    A good mathemetician covers every single possibility when proving a theorem and leaves nothing out.

    Similarly, a good programmer covers every single contingency in his software. As a result, the software runs and it runs correctly.

  • by John Courtland ( 585609 ) on Wednesday May 05, 2004 @11:31AM (#9064074)
    You are most definitely right, CS is all math. When it comes down to it, all a computer can do is manipulate numbers. The sooner you learn that, the sooner everything a computer does makes infinitely more sense, and stops being a little black box.

    And as was said before, if you don't know math, good luck writing video games. Games like Quake perform tons of mathematical operations every second. (I remember reading from Michael Abrash that the Quake engine itself used 2 or so FP operations in the inner loop itself.)

    Also, the ingenuity that comes with being around elegant mathematics created from crazy equations REALLY helps in writing elegant and efficient algorithms. They are very similar in many regards, and the concepts transfer well.
  • by Gilk180 ( 513755 ) on Wednesday May 05, 2004 @11:36AM (#9064133)
    I spent a summer doing just that. I was working with a group who had almost zero programming experience and just a little database experience. We made things work, but it took 3 quad-P3 servers to run the database (running about 80% capacity 24/8).

    Since we were in the R&D wing, we threw the whole thing over to the operations people about the time I headed back to school.

    The next semester in school I had a databases class. I was baffled by the lack of understanding we had of even basic database design.

    Later I found out that a single operations guy did a complete rewrite of our code in about a week. He had all that useless math background and database experience. His version ran on a single server and was usually at only 50% load.

    There are reasons to hire well trained and experienced programmers even for tasks that seem simple.
  • by hardgeus ( 6813 ) on Wednesday May 05, 2004 @11:37AM (#9064142)
    I took CS in college and remain somewhat bitter at the experience. The heavy emphasis on mathematics drove me away after two years.

    I have now been professionally writing business software for about eight years, and in that time I have never used mathematics more complex than arithmetic and very basic algebra.

    I do, however, use my English skills on a daily basis. I have to write documentation and communicate with clients. I have to explain things to non-programmers and I have to translate business speak to techs.

    I have to understand the workings of business. My software exists to make businesses more efficient. If I do not understand the real world processes, I cannot improve them with software.

    When I took CS, they acted as if we were scientists and would all get heavily algorithmic signal processing jobs or some such theoretical crap. The reality is that 99% of us end up in the business world helping people make more money.

    It sickens me that CS is churning out people who took calculus but know absolutely nothing about the business world in which they will most likely be working.
  • My courses (Score:4, Interesting)

    by 1000101 ( 584896 ) on Wednesday May 05, 2004 @11:38AM (#9064154)
    I had to take:
    Calculus I
    Calculus II
    Calculus III
    Discrete Math
    Advanced Mathmatics for Engineering
    Numerical Analysis I
    Numerical Analysis II

    Numerical Analysis actually has programming projects and I can see using many of the algorithms in "real-world" situations. Discrete Math obviously has uses. Advanced Mathmatics for Engineering also has obvious CS related topics. The only math courses that I probably won't ever use in programming are my Calculus classes. However, the other math courses listed above are all built off calculus so you had to take them.

    P.S. If all you want to do is write average-joe database connections, perhaps CIS would be a better major rather than CS.
  • Here here (Score:4, Interesting)

    by kndyer ( 521626 ) <kndyer AT gmail DOT com> on Wednesday May 05, 2004 @11:43AM (#9064195)
    I think the problem is that Software Development != Computer Science.

    • 90% of the jobs out there are development positions. These require basic programming skills, understanding of the newest buzz technology and an eye for asthetics.
    • 10% of the jobs are computer science jobs. These usually entail designing/optimizing algorithms or interfacing with "sciency" types like engineers(gasp), physicists and chemists.

    A good COMPUTER SCIENCE degree is designed to prepare you for 10% category. If what you want to do is build java apps and database applications then go to college and learn those skills instead of all of the theory involved in a CS degree.
  • by gtall ( 79522 ) on Wednesday May 05, 2004 @11:46AM (#9064219)
    What a load of fetid dingo kidneys. Does Newton's calculus or quantum mechanics ring a bell? Tell us how you want to be connecting webservers to a database for the rest of your life because you were too narrow minded to learn anything else. Math opens up the whole world of technology and science to you, you might find that refreshing after coming home from being told that a software program is going to be connecting that webserver to the database from now on.

    And if you do not develop the joy of learning while you are in school, most reputable employers will figure that out before you even get finished with interview...they won't be happy you do not wish to learn.

    By not getting a well rounded education, your brain as a muscle, will get soft. If you ever find a niche, you will be fed and cared for as a mushroom.

    And you might find that the world is a bigger place than what someone will pay you for. Math and science education is central any country's future. You should want to learn it for that reason alone.

    Companies run by math and science illiterates are an abomination, and they are no fun to work for either.

  • by fitten ( 521191 ) on Wednesday May 05, 2004 @11:55AM (#9064343)
    Yeah... and because you have no understanding of combinatorial mathmatics, you don't realize the horrible performance and scalability issues that you will be getting because you don't understand your problem or how the tools you are using work. Bad indices, poor caching, crappy queries, and a host of other things cause the project to be a dog and the customer and your boss aren't happy with what you did.

    Most code monkeys think along the lines of: if you can't get it to work right, you need a bigger hammer. I've seen a ton of them like you. While having a CS degree doesn't automatically mean that you know what you are doing (I've seen plenty that don't), the odds are much higher that someone with a degree will be more disciplined than someone who doesn't have a degree. Plenty of folks take the stance: "I don't have a degree and look how great I am" and somehow think that they are the norm when, in fact, they are the exception (or just deluded because they've never been around *really* good programmers, almost all of which have higher eduction) when they are really just the big fish in a small pond.
  • I agree entirely (Score:1, Interesting)

    by Anonymous Coward on Wednesday May 05, 2004 @11:59AM (#9064398)
    I've taught in England, France, Australia (briefly) and in a Rather Well Known American institution near a river(!). Given many students know I post here, I'm keeping my name out of it.

    The US students were by far the weakest in mathematics, and alarmingly, didn't seem to appreciate the fact when they were told to buck their ideas up. Many of them took the attitude that top of their class at High School should mean something to me and the world at large. Sadly, this is not the case. I care only for their ability in my classes. I must admit that it was very hard for me to get through to them in this topic, but perhaps that was my failing as teacher and not theirs. To add balance here, I must say that American students were probably the most respectful towards me, so in a way what happened didn't make any sense.

  • by Anonymous Coward on Wednesday May 05, 2004 @12:04PM (#9064471)
    AC because I'm on campus...

    I have to agree with GP more than you. I've got 5 years experience in Major Company's software division AND a Computer Science degree AND the complete math sequence from a Chemical Engineering major. IOW I've got quite A LOT of math background: only one course shy of a math minor and perhaps two courses shy of the Electrical Engineering math requirements (partial differential equations). I've also got: 4+ years DB2 experience (some really complex SQL to virtualize data cubes from a 3N relational schema, for example). I would be certified in both DB2 application and administration but for lack of time to take out of my actual job duties (and lack of my current manager's support for me doing anything new, but that's a personal problem on her part).

    Reality check: my math skills are useless in the real world of "computer programming". I've actually gone about THREE YEARS between needing a floating point number at work! Now, if Major Company hadn't REQUIRED a Comp Sci degree to go full-time, I'd agree with you. But all the big employers require far more training in skills and creativity than they ask for.

    The math probably DOES make us both better programmers, but its lack does not hinder anyone else from doing our jobs to 95% satisfaction of management.

    I can pick up and learn a new language or API given a few months. It would take years of focused study for a random PHP programmer to acquire the knowledge I have.

    And at this time in my life I can pick up the critical 70% of a new language/API in about 2-10 days. I'm not knocking you, I'm sure your skills are quite excellent, but they are shared by hundreds of thousands of others--who are paid exactly the same as you or I are--who have no math beyond trigonometry.

  • by Anonymous Coward on Wednesday May 05, 2004 @12:19PM (#9064655)
    I always find it strange when people say taking Chem and Calc is worthless, etc, to a programmer because it doesn't teach you how to program.
    If you want to be a programmer, save the money and go to a community college, or something. They'll teach you what you want to learn since they tend to be more of a vocational school.
    It's a mistake to assume computer science is about becoming a programmer, and I think that's why there's so many, people in CS that shouldn't be. Computer Scientists build the tools programmers use.
  • by vinton ( 161350 ) on Wednesday May 05, 2004 @12:24PM (#9064715)
    Boolean algebra is critical to anyone who programs using "if" and "for" statements


    Can't stress this point enough. I'm pretty tired of cleaning up 20+ line blocks of nested if/else statements--it's unnecessarily complex, bug prone, and impossible to understand.


    And then there are the really mysterious things like this (I've actually seen this):

    if (num < limit) {
    ...
    } else if (num >= limit) {
    ...
    } else {
    error("Unexpected error. Please contact customer support immediately.");
    }
    This kind of stuff makes Baby Knuth cry. At least learn enough to know that there are no other options besides "true" and "false".
  • by admiralh ( 21771 ) on Wednesday May 05, 2004 @12:26PM (#9064739) Homepage
    And I will stay the hell away from any employer with that attitude

    I really like the way that sounds, and I agree with you whole-heartedly. Unfortunately, i believe that attitude is completely divorced from the reality of most (but not all) companies.

    After 14 years in the industry with a BSEE and MSCS, my company closed it's St. Louis office in late 2001. I was out of work for 7 months in 2002 and underemployed for a year and a half after that. I have you're so-called "wide base of skills," but they weren't the right ones. Companies here in St. Louis were not at all interested in poeople who can "can easily adapt to new problems and environments," they were looking for those specific technologies and if you didn't have those 3 years of J2EE experience, they didn't want to even acknowledge your existence.

    Of course I attribute this to the typical HR department, who wouldn't know a good engineer from a hole in the ground. So their method of separating the wheat from the chaff is a score card based on what technologies you have on your resume. So even though I had done Java and was well acquainted with OO through my experience and schooling, they wouldn't even talk to me because I didn't have "work experience" with J2EE.

    Some of us who have families to support don't have the option to just walk away or cherry-pick companies. We're forced to take what we can get. This attitude runs rampant through corporate culture. I would love to be less pessimistic, but unless there is some massive groundswell, nothing will change.
  • Re:A Warning (Score:2, Interesting)

    by jneemidge ( 183665 ) on Wednesday May 05, 2004 @12:27PM (#9064759)
    This is only partly correct. The correct part is the technical/vocational schools are not accredited by the same boards as traditional universities. The incorrect (and slanted) part of this is that technical schools are legally required to be accredited by other boards set up for them, and are legally prohibited from being accredited by the boards which accredit traditional universities. _None_ of them have no outside accreditation; it's a legal requirement that they be accredited. Most of what you wrote _was_ correct through the mid-1990's, when there were some spectacular problems in the technical school industry. As a result of these problems, these schools came under tight scrutiny and regulation and the rules and outcomes are very different now.

    You can make the case that they only want your money, but that's not entirely accurate either. Part of their accreditation process measures their graduation rates and placement rates (placement meaning a student is working in a job in the field for which they were trained). If either of these fall out of norm (which is roughly mid-80% on both measures) the school loses accreditation. Losing accreditation means the school is out of business. So, in order to keep getting your money, there's a _very_ strong incentive to actually get people graduated and out there working.

    It also means that technical schools tend to set up strong employer relationships so that their students can get placed. The ones I'm familiar with have an "advisory board" of 50-100 local companies (small business to Fortune 500) who come in regularly, do their own audits and inspections, suggest changes, etc. In return, these companies take graduates from these schools seriously.

    You are correct that the standards are very different. Technical schools are interested in one thing only: taking a student and getting them graduated and placed in the field of their training. They're not interested in well-rounded students, they're not interested in teaching English, math, sciences, etc. beyond those required for the job. Their mission is to educate students who aren't well suited to traditional university programs. Most people who _are_ well suited to traditional university programs would feel slighted by a technical school, but that doesn't mean they're not highly valuable to the population who can't handle a university program (due to lack of prerequisite education, life pressures, access, or whatever else).

    I have no stake at all in the technical school area -- I just know several people who work in it and have gone over all of this in detail. They're quite sensitive to it, because the common perception of what they do is completely wrong.
  • by evilpenguin ( 18720 ) on Wednesday May 05, 2004 @12:29PM (#9064771)
    There are a lot of great threads in this discussion. For the most part I am firmly in the "math is good" part. The more types, the better. The barest, most essential minimum is actually often taught in the Philosophy departments of universities: Logic. A thorough grounding in logic is essential to being a good programmer. And I don't merely mean being able to throw together a chain of ands and ors that work, but being able to optomize logical expressions to find the most compact and efficient expression possible. I can't think of a single kind of programming that doesn't benefit from a fairly deep knowledge of symbolic logic.

    Beyond that, various mathematical disciplines have different levels of demand based on the work being done. I'm largely excluded from the world of real-time 3D graphics because I never went beyond the basics of the math that underlies it. (Some of the most terrifying evil geniuses I know are guys who can not only do all the math involved in projections and rotations, but can also implement it using only integer math -- they scare me!)

    You'd better have your logic (deep) and at least your algebra, pre-calculus, calculus, geometry (with trig). From there, every bit of math you learn broadens you and gives you the potential to see solutions your competitors (other job applicants) might not see.

    This is the value of all education: Having more knowledge at your fingertips is the rich soil that grows insights. I know a lot of people who think they they can use an Internet connection and Google and they are "programmers." To some extent, this is true. But you can't look for things you can't imagine or remember. Information and knowledge are not the same things.

    I don't limit this to math education either. Even history, music, literature, biology, chemistry, physics, and philosophy can provide the mind with the possibility of new ideas. Anyone looking for "the easy path" through education to a job is short changing himself. University time is the time to wallow in the sea of human learning. The goal is to be an educated person, not a unit of productivity fitted to a particular cog in the great machine of industry. We make and use machines for our rote tasks. Your goal in education (to me) is to become maximally adaptable: to achieve cerebral fitness.

    In other words, I think this question is the wrong question.
  • by DarkSarin ( 651985 ) on Wednesday May 05, 2004 @12:52PM (#9065049) Homepage Journal
    Ah yes, HR, the favorite punching boy of disillusioned employees everywhere.

    The sad part is, I agree with you, and I am pursuing a related field (Industrial/Organizational Psychology) which is very similar but has one tool that many HR folks lack: We like to do research and find out what makes the best employee. Off the top of my head I believe that cognitive ability (sometimes called IQ) is most important in programming, not a particular skill (although that is helpful too). Trouble is, many HR folks will only look at what skills people are using, and not what is underneath those tasks, which is why they want someone with 15+ years of experience with .NET.
  • by BigBlockMopar ( 191202 ) on Wednesday May 05, 2004 @01:10PM (#9065234) Homepage

    And as was said before, if you don't know math, good luck writing video games. Games like Quake perform tons of mathematical operations every second.

    For sure! I don't know Quake personally (I'm not into video games at all), but I assume that it's another one of the 3D videogames where your surroundings change with your perspective.

    That requires loads of matrix transformations directly out of linear algebra [falstad.com]. It sounds terrifying, but it's just about having a group of numbers called a matrix. By multiplying them with a bunch of (x,y) coordinate in a certain order, you can do all sorts of warps and shrinks and stuff. If those (x,y) coordinates correspond to a bitmap of an object, you've just warped or shrunk the object, exactly as you'd have to do in a 3D maze or similar.

    Then, there's calculus. There are two courses *everyone* should have to take in high school - auto mechanics (so you know how to change a tire, among other things) and calculus. Calculus means "small stones", as for counting. It's all about rates of change. You could tell the speed of your car by looking at your odometer and your watch, but that will give you only the average speed over a given time or distance. The speedometer, on the other hand, gives you your instantaneous speed - which is the derivative (calculus term) of your position (odometer) with respect to time. This makes sense when you think about it: speed is the rate of change of position.

    (Actually, it's velocity, but that's a whole other kettle of fish if you don't know about vectors from Linear Algebra yet.)

    Don't worry about the math. It's usually the easiest course in your university schedule - and I tell you that as someone who failed high school math classes constantly and who dropped out of high school because of math (that's a long story, though). Math *is* your friend. How's that? You can be guaranteed that if you do all your homework, you will get an A+ in the course. That's it. No reading, no stupid assignments which get marked by TAs who know less than you, nothing. It doesn't even matter how good or bad your teacher is. Just do all your homework and you'll get an A+. It's a non-linear relationship, do 50% of your homework (every second assigned problem) and you'll get a B+. Do 25% of your homework and you'll get a C+.

    As an EE, I had to take 7 university level math classes.

    • Calculus I: Basic calculus, a re-hash of high school which introduced Integration by Parts (table method!)
    • Linear Algebra: Matrices, parametric equations, Gaussian elimination, eigenvalues and eigenvectors. Don't let the names scare you, it's all very easy.
    • Calculus II: Differential equations and infinite series. Always had a hard time with infinite series... but I passed it.
    • Calculus III: Multivariable Calculus and Fourier Series. Very fun course, allowed me to become conversant in Vector Calculus (which is always good for scaring people, though it's actually dead easy). Fourier is really neat, allowing you to express any function (think waveform) as a sum of easily-manipulated sines and cosines. [homeip.net]
    • Numerical Methods: A whole course on how to make numerical approximations when you come across something that is impossible to integrate. Mostly programming in MATLAB. Open book exam, I used LyME (MATLAB clone) on my Palm.
    • Calculus IV: Mathematical Methods. All about how to solve partial differential equations like the heat equation and wave equation, also Laplace and Fourier transforms, Sturm-Liouville differential equations, etc. Scary sounding, but actually rather easy once you get your head around it. Doing homework on the blackboard with your friends in an empty classroom is recommended - the arts class which came into the room after our homework sessions always looked at us like we were geniuses. We're not.
    • Statisitics: Ugh. Mostly just plug numbers into equ
  • by thelizman ( 304517 ) <hammerattack@yaR ... minus herbivore> on Wednesday May 05, 2004 @01:11PM (#9065247) Homepage
    Well, that really depends on what you want to program. For instance, to do probably about 80% of the programs out there, a fundamental knowledge of Algebra is useful - but not even required.

    If you want to program video games, you'll need college level algebra just to program the physics, but again, you don't have to be a math wiz.

    If you want to do cad/cam/cas programs, your ass better know some calculus and trig.

    Point in fact, traditionally you've found that people program as a supplement to their chosen profession - mathematicians use computers to crunch large numbers. Engineers use computers to test and design structures. Biologists use computers to analyze and predict populatons. Chemists use computers to simulate complex chemical reactions.

    If you want to get a better picture of where you use math (and a tremendous insight into computing mathematics), check out Wolframs A New Kind of Science. He developed this book while researching computers and mathematics, and its really an interesting read whether you understand wth he's talking about or not.
  • More Math than CS (Score:2, Interesting)

    by AveryT ( 148004 ) on Wednesday May 05, 2004 @01:16PM (#9065283)
    I don't know about today but, when I took CS in the early '80s at a Top-3 Canadian University, there were more required Math courses than required CS courses, probably because the School of CS was relatively new then and had grown out of the Math Department.

    While I probably haven't directly used 99% of the Math that I learned in school, what I believe I gained was the ability to solve problems and to think abstractly, analytically, and rigorously.
  • Math not needed..... (Score:2, Interesting)

    by cbdavis ( 114685 ) on Wednesday May 05, 2004 @01:16PM (#9065287)
    The best programmer I have every worked with had a BS in Phys Ed. I got a math degree and have worked in dataproc/IT for over 35 years. Spent several years coding, db admin, now a network engineer. My math degree has not helped a bit. Thats not to say that you never use any math concepts beyond basic algebra writing most apps. But by and large, I coulda had a degree in 17th century french literature and probably done just fine!
  • by mikeg22 ( 601691 ) on Wednesday May 05, 2004 @01:30PM (#9065434)
    From my experience as a programmer, I've never had to use anything beyond trigonometry in programming. Of course if you plan on doing scientific computing there would probably be a need for higher level calculus, but I would say 90% of the programming jobs out there make no use of it. A basic understanding of statistics can also be useful.

    Now, thats for the actual programming. For being a CS major you will need to be pretty "good at math," whatever that means. I suppose it means be able to learn and have at least a passing interest in the subject. Binary logic is closely tied to what schools teach as "math" (algebra, calculus, set theory), so becoming familiar with these maths will prepare your brain to handle computing theory, which is why I suppose CS majors at my school (UCSB) had to take a lot of it.
  • by be951 ( 772934 ) on Wednesday May 05, 2004 @01:57PM (#9065742)
    Both sides of this discussion have valid points.

    Certainly you want smart people who can find or create solutions to your problems. But that doesn't necessarily mean someone with extensive math skills. Certain areas of compsci/programming will need advanced calculus, probability, etc.... But most CS grads will probably be doing programming or associated work on business apps. Most of the time, that requires little math. Now, tuning those apps (if any tuning is done at all) may call for some math, or not. Most languages and environments have established techniques for improving performance as well as more general methods (e.g. adding or removing an index, removing redundant or extraneous code, etc....) that may be math based but don't really require the programmer to have a detailed understanding of why they work.

    If your firm thinks that 3+ years of java experience is the most important quality a new hire can have, then I really don't want to work for them.

    Sadly, this is the shortsighted view most hiring managers seem to take. If their requirements say you should have 3 years of Java, you probably won't even get an interview with 2.5 years experience.

  • by admiralh ( 21771 ) on Wednesday May 05, 2004 @02:01PM (#9065786) Homepage
    Ah yes, HR, the favorite punching boy of disillusioned employees everywhere.

    The sad part is, I agree with you, and I am pursuing a related field (Industrial/Organizational Psychology) which is very similar but has one tool that many HR folks lack: We like to do research and find out what makes the best employee.

    You just hit on the most important thing. You do research. Something that seems beyond the ken of most corporate HR departments.

    I have absolutely no problem with using reasonable screening tools to help decide which employees will be best, as long as those tools have sound research behind them.

    The reason why HR is the punching bag for us "disillusioned" employees is that they are the ones preventing us from getting a fair hearing with the people we would be working with, by using reasons that seem arbitrary and capricious. The perople who get rewarded accoring to typical HR measures are the ones who essential say, "To Hell with what the company needs, I need to use <latest technology buzzword> so I can put it on my resume."
  • by Amigan ( 25469 ) on Wednesday May 05, 2004 @02:33PM (#9066118) Homepage
    The September issue of Communications of the ACM [acm.org] is actually dedicated to this topic. The issue is entitled "Why CS students need math".

    If you're a member of ACM (one of the major professional organizations for CS folks) you can download the articles from the digital library - if you've already done away with your hard copy. Most University libraries should have the journal available for checkout.

    Having recently received my PhD in CS, I can tell you that if you're going to pursue an advanced degree - then the math is TRUELY necessary. While I was an undergrad, I never understood the requirement - but once I started working in the 'real' world, a lot of it made sense. I don't necessarily use it on a daily basis - but there are times when I say "yeah, that makes sense now"

  • by Frizzle Fry ( 149026 ) on Wednesday May 05, 2004 @03:28PM (#9066681) Homepage
    Here here and amen! When looking for programmers, I don't care as much about your specific experience as your ability to think

    I agree. A large part of the reason employers want to see that you have done well at math and computer science in school is that it shows that you are smart and good at solving problmes. This isn't to imply that everyone with a degree fits this description, but you have to play the odds, and someone who has a strong math and cs background and has been successful in those areas is probably going to be better at solving the problems your company needs solved than someone who has read a "how to" book and knows how to copy and paste from code examples.

    This is the same as in many other areas. For example, law schools are impressed by students who have done well in their classes in a difficult major, even if this doesn't give them skills directly applicable to the practice of law.
  • by BrianMarshall ( 704425 ) on Wednesday May 05, 2004 @03:51PM (#9066897) Homepage
    Math is the basis of all CS.

    If you get deeply into the science of Computer Science, you can certainly get into some math. But, it is important to note that practically no one gets employed as a computer scientist (except for people who stay in academe and study and teach Computer Science).

    Most people going into CS expect to get jobs as systems developers of some sort. 'Code monkeys' might be the bottom of the pack; frequently they are just trained tool-users who write snippets of code behind buttons.

    But to be a great developer is to be a master of a craft, not a scientist. This particular craft is mental - it is, as you imply, a matter of critical thinking and problem solving. It is being able to look at the world in different ways and being able to see how to express an aspect of the world using the tools of your craft. It is a craft with many principles and design patterns and ways of looking at the things.

    To be a great developer requires talent. Picking candidates that are strong on math may be a useful way of identifying people with the talent. (This approach screws people like me, however; I believe that I have a great deal of talent in the craft, but my brain crapped-out after basic calculus.)

    The vast majority of developers require no more than:

    • basic algebra
    • basic trig
    • basic statistics
    Some people need basic geometry.

    Sure, if you are getting into signal processing or astrophysics or a variety of other areas, you need lots of math. But that isn't where most people are going. If you are, and you are into math, great; otherwise, don't sweat it.

    You don't write good SQL because you are good at math (as others have apparently suggested); you write good SQL because

    • you know enough SQL
    • you know what works well

    Nothing beats talent plus experience.

  • by Godeke ( 32895 ) * on Wednesday May 05, 2004 @04:06PM (#9067025)
    I'm not suggesting SQL 2000 is in the same leauge as Oracle, but the project was for a single server install. Not some mission critical uber-install where Oracle even made financial sense. But you seem to have missed the *real* point: the man was *unwilling* to consider work outside of Oracle to the point he spent a *year* unemployed.

    Would you want to work with someone so dedicated to a skillset that they would deride your company during an *interview* and was so fanatical about it that he would prefer to burn his savings than be gainfully employed? In my opinion, he was a *coder*, which was my point. He couldn't see past his coding skill set to understand that I didn't need regional failover between sixteen servers, I needed someone who could understand third normal form, write SQL queries and learn our system enough to be a valuable team member.
  • by C10H14N2 ( 640033 ) on Wednesday May 05, 2004 @04:16PM (#9067100)
    There seems to be a common thread here that if you didn't do a degree in math, not only are you "just a code monkey" but you're also not a "well-rounded" individual and you're clearly not using your brain.

    Suffice it to say, there are those with other-than-cs degrees out there that must program as a function of their fields on a daily basis. NO, they're not computer scientists, but it's pretty fscking arrogant to imply that anyone programming a computer that doesn't have a paltry Bachelor's in CS (whoopee) is somehow an undermench incapable of abstract thought.

    Get over yourselves...
  • by ACPosterChild ( 719409 ) on Wednesday May 05, 2004 @04:23PM (#9067157)
    BROWSER INCOMPATIBILITIES??? CS???
    Umm, yeah, right.

    OO design? No, not even.

    *Maybe* "Distributed services", but only if you go in to analysing the graphs and their nodes, etc.

    Security? Again, no. Possibly the math behind encryption and random tcp sequence numbers, but NONE of the policy and application-specific stuff that a user of the technology touches.

    Computer Science IS math. The "Science" word is completely misleading on a number of levels. Computer Applied Math would be a better term.
    Unless you're formally modelling and / or proving your system (Transactions, Concurrency, delays, etc), you're not doing Computer Science.

    I wish I'd have saved some mod points; I don't mind the posts, it's the damnable ludicrous moderation that goes on.
  • by Anonymous Coward on Wednesday May 05, 2004 @04:36PM (#9067291)
    Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.

    -Dijkstra
  • Comment removed (Score:2, Interesting)

    by account_deleted ( 4530225 ) on Wednesday May 05, 2004 @05:20PM (#9067655)
    Comment removed based on user account deletion
  • by Atario ( 673917 ) on Wednesday May 05, 2004 @06:24PM (#9068216) Homepage
    I think you'll find that anyone who's too sloppy with spelling, syntax, or grammar (except intentionally) will be a pretty piss-poor programmer. Computers sometimes like to crash if you do as little wrong as misspell a variable name (much less misspecify an entire interface). If you can't even get the loose standards of human language right, what chance do you have with a computer?

    (Very carefully proofread text...aaaaand submit!)
  • the real reason (Score:2, Interesting)

    by 10am-bedtime ( 11106 ) on Wednesday May 05, 2004 @07:44PM (#9068930)

    the real reason math is important for computer science is that fundamentally, science is a branch of human endeavor involved with forming mental models of some system and then exposing that model to Reality to see what jives and what doesn't. with computers, Reality is a bit difficult to find sometimes, but certainly if you go the way of the programmer, the programs you write are codification of your model and the input they handle can be considered the Reality in question.

    anyway, everyone who constructs models learns an affinity for the "trueness" of the model (if the model is very true, it jives decently w/ Reality w/o need of hand-waving or too many kludges). math is important for judging trueness of the model, and for extrapolating not only simple truth from the perceived world, but the Ability to Perceive Truth.

    many people read orwell's "2 plus 2 makes 5". it's not necessary to study math to appreciate the many levels of this falsehood, but studying math (and henceforth going into computer science) makes it easier to realize even more levels. fiction is a model. of what? society is a model. of what? control / cruelty / repressed-love / tipping-point torture / lies and truths; all are models. of what? all the above, varying over time, are models as well.

    in the end, the scientist seeks to understand and change the mental models to be more true. but each scientist is part of the Reality, in Reality. math is essential to bootstrapping the nimble mind.

  • by gubachwa ( 716303 ) on Wednesday May 05, 2004 @11:49PM (#9070435)
    As has already been pointed out numerous times, if you want to do the really *interesting* stuff in Computer Science, you need a lot of math. Lets look at the different fields/specialities in CS:

    Theory CS theory consists of a wide range of problems: some very heavily mathematical (Does P = NP?) to the not so mathematical (eg. Theory of Distributed Systems). Although the latter is not "mathematical" in the traditional sense, it still requires strong mathematical reasoning abilities. In any case, needless to say, studying CS theory requires a good foundation in mathematics.

    Graphics This one has already been described by other people. No chance in hell you're going to write a kick-ass 3d engine without knowing a lot of linear algebra (i.e. math).

    Artificial Intelligence Machine Learning (Neural Nets, Support Vector machines, etc) is all hardcore statistics. You need to have a good knowledge of linear algebra and multivariate calculus to even begin to comprehend this field. At the other end of the spectrum within the AI field is Knowledge Representation; this type of AI is more logic based, and again requires good mathematical reasoning abilities.

    Operating Systems Here's a field for which you may argue a minimal amount of math is required. Of all the subdisciplines within CS, this one probably does require the least math. However, that doesn't mean you'll get away without a math background. A lot of research done in this field involves understanding/presenting quantitative results. So you do need some basic knowledge of statistics. Besides that, a lot of OS research also involves proving systems correct; this is very heavily logic based stuff, and again an ability to reason about problems abstractly (mathematically) is extremely useful.

    Numerical Analysis Math, math, math, and more math.

    Software Engineering Proving systems correct and defining systems using logic -- very mathematical stuff. If on the other hand you get into the more wishy-washy side of SE then you may be able to avoid math.

    Anyways, there's probably some sub disciples I missed, but you should get the idea. Math is required in almost all aspects of CS. The only reason it isn't required in the RealWorld(tm) is because most of the stuff done there is grunt work that involves nothing more than reinventing the wheel.

    So, if you are really interested in CS, then do it right -- take as much math as you can. If, on the other hand, you are just interested in hacking, then don't go into CS. CS != hacking degree.

Always look over your shoulder because everyone is watching and plotting against you.

Working...