Become a fan of Slashdot on Facebook

 



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:
  • by tcopeland ( 32225 ) * <tom AT thomasleecopeland DOT com> on Wednesday May 05, 2004 @10:13AM (#9063013) Homepage
    ...demand more math than others. Artificial intelligence techniques [rubyforge.org], for example.

    And what the article said about game programming is right on... trying writing even a simple Brickout clone without knowing basic trigonometry and you'll run into problems.
  • Nail on the Head (Score:5, Informative)

    by millahtime ( 710421 ) on Wednesday May 05, 2004 @10:15AM (#9063035) Homepage Journal
    I am an engineer working with programmers and one of the biggest issues I have is getting them to implement some of the complex math in their code. Many struggle with it and that is a huge problem.
  • is math important? (Score:1, Informative)

    by Anonymous Coward on Wednesday May 05, 2004 @10:16AM (#9063052)
    to computer studies? very. time and space complexity proofs, anything to do with computer vision, graphics, signal processing, A.I., networks,... but if you just want to be a code monkey, well.. still important.
  • VT's CS program (Score:1, Informative)

    by Anonymous Coward on Wednesday May 05, 2004 @10:17AM (#9063073)
    Go check out Virginia Tech's CS program. I only did the first two years then transferred to another school, but while there I took 8 math classes in 2 semesters. Most CS majors took one extra math class before graduating to get a Math Minor.

    Was it helpful, was it worth it? I'd like to think so, I didn't sleep through discreet math for nothing!
  • wrong assumption (Score:2, Informative)

    by Anonymous Coward on Wednesday May 05, 2004 @10:18AM (#9063075)
    programming != computer science

    if you think programming is all there's to computer science, then don't study computer science.
  • I recommend (Score:5, Informative)

    by NixterAg ( 198468 ) on Wednesday May 05, 2004 @10:19AM (#9063098)
    Let's assume that you are well versed in Trig and Algebra (you should have learned them both in HS). Take, at minimum:

    Discrete Mathematics (some call it Applied Mathematics)
    Calculus
    Number Theory (Cryptography)
    Linear Algebra

    I have a CS degree with a math minor and have been completely surprised at how often I've used the math portion of my education in the workplace. I'd recommend taking a good mathematical modeling course as well, as it typically offers a great mix of math, engineering, and CS.
  • Well it all depends (Score:3, Informative)

    by mrtroy ( 640746 ) on Wednesday May 05, 2004 @10:24AM (#9063151)
    First I just want to say that computer science programs are not all created equal. There are definately less schools who teach it well than those who dont.

    Now for math, personally I was required to take a fair number of courses during my first and second year. While I didnt find it all relevant to CS, there definately are reasons to take math courses to help you in CS. Proving runtimes is mainly math, encryption is mainly math, etc.

    Also, I just want to make a note that CS != programming. You take a 4 month course to "learn to program", and you take a 4 year program to begin learning computer science.
  • by zer0mass ( 678722 ) on Wednesday May 05, 2004 @10:25AM (#9063165)
    Inorder to do anything useful with 3D graphics, you will definitely need knowledge of linear algebra. Whats important for CS students is the application only, but understanding the theory is always a definite plus. Also, an aptitude for physics is also very important inorder to simulate reality. You may want to check out 3D Math Primer for Graphics and Game Development by Fletcher Dunn.
  • by tssm0n0 ( 200200 ) on Wednesday May 05, 2004 @10:36AM (#9063356)
    I've always thought of CS as a branch of math. The field of computer science was founded by mathematicians, and the important concepts of computer science are heavily based in math (such as the study of algorithms and data structures).

    That being said, I don't think of CS as majoring in programming, it's more about the theory behind programming. Kind of like the relationship between physics and engineering. Students may not always learn the most practical details about programming, but they will come away with a good understanding of how computers and software work (assuming they went through a good program).

    The new IS majors that are out there might be a better choice if you want to focus on just high level programming. It could be a good choice for people who want to learn the practical skills, while computer science will exist for those who want to learn the science behind computers.
  • Discrete Math (Score:3, Informative)

    by Mignon ( 34109 ) <satan@programmer.net> on Wednesday May 05, 2004 @10:37AM (#9063367)
    I would recommend discrete math for anyone planning a CS degree. I took such a course in the CS department when I was a math grad student. We used Knuth's Concrete Mathematics book, which is excellent.

    My take on discrete math, as a former wannabe mathematician, is that the high school math curriculum is just enough to get you to calculus and all the extra has been squeezed out. Lots of material in the realm of discrete math is accessible to a high school student.

    In addition, many of the techniques and methods, like difference equations, parallel those in calculus, so it can reinforce what you've learned in calculus.

    Finally, as to the author's point about calculus in high school, I think he's way overgeneralizing about the quality of high school calculus teachers. My cousin, a professional mathematician, recommended that I retake calculus in college. She said that she hadn't really understood calculus until advanced calculus in grad school! Having been down that path myself, I can see this - calculus is such a different way of thinking than its predecessors in the typical high school curriculum.

  • by metlin ( 258108 ) * on Wednesday May 05, 2004 @10:44AM (#9063471) Journal
    You are right. Its not just AI, either, there are lots of other areas that demand heavy math.

    My undergrad was in ECE, and I've had to use a lot of math in stuff that I program (Matlab for DSP, numerical methods in C and the like).

    I've had significant experience in AI in the industry (~4 years as a research intern), and contrary to popular belief, good companies that build quality products do a lot of grassroot level stuff before getting down to code.

    And now, I'm in grad school and I program graphics for my GRA in OpenGL and C++ (which is once again, lots of math and physics). I've an internship coming up at a well-known lab where I'm going to be working on simulating fluid dynamics in Java (which is, again math).

    My masters project work is in AI, and uses statistics and various learning algorithms to create an existing behavioural programming language for adaptive agents - most of the time, I sit and work out the best possible algorithm or method of solving a particular deadlock or graphing problem, rather than code.

    That done, I find the need to be pedantic - programming! = computer science. IMHO, CS is more of the cool math, algorithms and the like, while programming is implementing that using code - the latter can be learnt through experience, the former is better learnt in class.
  • by donour ( 445617 ) <donour@NOSpaM.cs.uchicago.edu> on Wednesday May 05, 2004 @10:46AM (#9063498) Homepage
    If it grows exponentially (brute force matrix
    multiplicition), it is O(n^2).

    Sorry bro. O(n^2) is polynomial. see. n^2 is a polynomial. order 2 actually. For what it's worth, the naive matrix multiply algorithm is O(n^3). an exponential algorithm, like writing all the N digit binary numbers would be O(2^n).
  • I am a Math Major (Score:1, Informative)

    by Kjuib ( 584451 ) on Wednesday May 05, 2004 @10:46AM (#9063503) Homepage Journal
    I am Majoring in Math and people always ask: "What are you going to do with that? Teach?" I quickly reposond: "NO! I am going to become a computer programmer." Then they ask, "How does math relate to computers?" That is the point I role my eyes. Programming is just getting a computer to mimic something in Real Life. Math is Language of how stuff is done (It is hard to describe this to some people - think Physics). As a programmer you plug in the formula and the computer does it. Most computer Programmers get the formulas from books or elsewhere on the Internet (from what I have seen). Where I plan (hopefully) to have a better understanding of the formulas and how to manipulate them into giving us the data we desire. Now... In answer to the question... I would take Calculus 1 and 2, but if you want to go 3D take Calc 3 (at least that is where my College teaches 3D calculus). Number Theory is cool, it helps to show proofs of the basics - how to program division, mod, and other basic math functions. That is my suggestion. My theory - Math is the Interpeting Language between Man and Machine.
  • by tonythepony ( 716819 ) on Wednesday May 05, 2004 @10:46AM (#9063508)
    Exactly. A computer scientist's need for math is much greater than a programmer's. Coputer science is an applied mathematics. When you design an abstract algorithm and you're technical manager wants to be sure that it necessarilly terminates - it helps if you can write a formal proof - even if just for yourself.

    As for what math you should take - at a minimum you should take an intro to advanced mathematics class. You'll learn like the Principle of Mathematical Induction, how to write proofs, some basic set theory stuff, etc.

    Then take another math course depending on your interests. Interested in using fractals for image compression? Take a course in nonlinear dynamic systems. The point is - if your interested in something you can do with computer science, look for a math course that goes through the underlying theory.
  • Re: A Warning (Score:3, Informative)

    by Black Parrot ( 19622 ) on Wednesday May 05, 2004 @10:49AM (#9063538)


    > 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.

    And for those you need discrete math, not the traditional calculus requirement, or the trig that severeal people have mentioned.

    Yes, you may need trig, calculus, or some of the really weird stuff if you do certain kinds of application but for "computer science" per se it's discrete math all the way. Too bad not many university programs seem to understand that fact. (Or maybe they just can't win the battle with their college of sciences and/or math department.)

  • by Cheeko ( 165493 ) on Wednesday May 05, 2004 @10:51AM (#9063559) Homepage Journal
    Not to mention ANYTHING involving 3D graphics, uses very large amounts of linear algebra. And as you get more involved, with physics, collision detection, etc, calculus and statistics can come into play heavily as well.

    Dot products and Cross products are your friends :)
  • by Azzaron ( 562255 ) on Wednesday May 05, 2004 @11:03AM (#9063729)

    I went through a computer science undergrad which was part of the math faculty. As such, about a third of my courses were in math... not CS, math.

    At first, I thought along the same lines as many of you. Unless I got into some hardcore graphics coding, I never thought I'd use half of what I was learning. And you know what? I was right.

    However, what took me a while to realize is that this conclusion does not make math courses a waste. Those math courses, full of really tough proofs and theorems, tought me how to think. Every single day I use the thought patterns that I learned in my math courses to perform my programming job much better than if I had not been exposed to those math courses.

    Were the math courses hard as hell? Damn straight! Were they worth it? Definitely :)

  • Re:oh good lord yes (Score:2, Informative)

    by Palindrome99 ( 777170 ) on Wednesday May 05, 2004 @11:06AM (#9063755) Journal
    There's more to it than that.. Math has been around for a lot longer than programming.. any many of the reasons that we need to learn mathematical concepts is that we know how to prove things about math, and there's lots of research going on about how to apply those principles to computer programs.

    For instance, take language theory and Turing machines.. these are purely mathematical concepts, yet very important to computer science and engineering...automata in general are very important in software.. they're not just useful for analyzing a language, but for any sort of procedural system... how about logic? There are many many different types of logic (Modal, CTL, First Order)... again, these are purely mathematical... but we, as programmers, need to know them so we can truly analyze our software, and be able to know and prove how they work..

    Furthermore... algorithms are a HUGE part of a programmers job... to really be able to analyze an algorithm, we need to know concepts like summations, calculus, series, etc. We need to know these things for ourselves, not just to make some code for a mathematician...
  • by Laxitive ( 10360 ) on Wednesday May 05, 2004 @11:17AM (#9063922) Journal
    Bullshit. He is as cool as he thinks he is.

    Knowing good math.. makes you a better programmer. I would go as far as to say that computer science _is_ math. Knowing how to hook up a DB to a web front-end is not computer-science. It's a trade skill, like plumbing.

    The difference between some web-scripting guy, and a guy who knows CS, is like difference between an automechanic and an automotive engineer. The engineer might not be able to fix your engine, but he understands the workings of it much better than your average mechanic.

    From my perspective, being some random code-monkey is not too different from working at McDonalds. Pay might be better, but the work is still shit. Having a solid CS grounding lets you work in places and on problems that are actually _interesting_ and challenging. It allows you to actually contribute something new to the body of knowledge associated with computation.. or apply it well to some novel field.

    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.

    Not to say that I'm special or anything.. but I've spent 5 years working my ass off to get myself to a proficient level in this area of study.. and most people who want to reach that same level will also have to spend several years doing it. It's just a question of wether you decide to do it early in your life (university), later in your life, or not at all.

    But it's definitely worth it.

    -Laxitive
  • Re:A Warning (Score:3, Informative)

    by Perl-Pusher ( 555592 ) on Wednesday May 05, 2004 @11:22AM (#9063967)
    DeVry is a vocational type "college". They supposedly teach the skills needed for a career and not much else. Many of these schools claim you can get a 4 year degree in 2 years. They generally don't have requirements in english, foriegn language etc. So most are not accredited by the same accrediting board as colleges are. Many have no outside accreditation of any type. They aren't publically supported and are a corporate owned "for profit" only type of school. Universities are public or private institutions and get most of there funds through endowments and/or government subsidies in addition to tuition. And are regionally accredited through an independent board setup and agreed upon by all of the universities it covers. One such organisation is the Southern Convention of Colleges. I can't say for sure about DeVry, but most of the vocational or technical schools only want your money. Most provide at best poor teaching and are generally frowned upon by most employers.
  • Because you need it. (Score:4, Informative)

    by Tangurena ( 576827 ) on Wednesday May 05, 2004 @11:22AM (#9063973)
    I find that the areas folks are starting to notice more (like data mining) are very heavily into math. Data mining is not just about "who is today's terrorist-de-jour" but more useful to solve problems like "who are our best customers and how can we better serve them?" or "can we make our mediocre customers into good customers?" or "where are our customers?" or "what funny things have been going on?" My latest book purchase is Data Engineering [amazon.com], and the math in it is beyond the capabilities of all my coworkers. Fuzzy logic? duh. Neural networks? duh. Support vector machines? duh. Principal component analysis? duh. Kalman filtering? duh. Without a solid background in math, the book is just a $90 paperweight. Maybe in 10 years it will be all componentized for the code monkeys to use. But I am sure they will use it wrong. I still see things like bubblesort appearing in code I have to fix.

    I don't know about your experience, but I find that post bachelor research in CS to be between 5 and 20 years ahead of industry. Some of the research goes no where, but some becomes the bleeding edge, then the mainstream. Like relational databases. Started (or first written up) as a paper in 1969. If you want to see where theory hits programming, check out game development. That is where most of the new technologies first hit development and get used successfully (the game may suck, but it becomes a showcase for some new techniques). Writing code for the TMS320 (a single chip digital signal processor) is an excercise in math: you spend more time modeling the code in Matlab than you do turning the code into C or assembly.

    I am also finding that graphs (not those blasted pie charts) can be useful in solving complicated problems. And some of the tasks to do, can be described with names like traveling salesman problem or minimum spanning tree. One of the first shocks I ever got in a meeting full of programmers was having to spend most of it explaining graphing algorithms and why algorithm X would solve the problem and why the proposed solution in the meeting would be a bad one. It would be hard to correctly, or quickly, solve a minimum spanning tree problem if you could not recognize it, nor understand what the algorithms were trying to solve. Education is about learning to solve problems and recognizing new situations resembling a problem you already know how to solve. Being uneducated is like only having a hammer to solve problems: you can only fix things by bashing them, good for nails, but not a good tool to use to remove screws and bolts.

    It is also fun to explain to the PHB why something he asks for is totally impossible. Usually it is headbangingly painful.
    Him: This number must be absolutely accurate, no rounding is allowed.
    Me: I can write 2 numbers on your notepad here that cannot be represented the way you describe.
    Him: BS, there ain't no such animal.
    Me: (writing) e and pi.
    Him: (scowling).
    I once tried to explain how .1 cannot be represented as a floating point number, but that ended up being a waste of time. Or how, to answer a question he had would require a time machine.

    Our society does not value intelligence, and has been actively disparaging intellectuals for 200+ years. Our country may have been founded by intellectuals, but de Tocqueville pointed out the disparagement of intellectuals back in 1835 in Democracy in America.

  • by underbider ( 63054 ) on Wednesday May 05, 2004 @12:01PM (#9064433) Homepage
    Take a look at this [discretemath.com] site. It's a good start for computer science majors

    from there, there're cool things like "modern math", and then you should go deep--way deep: two semesters of linear algebra, graph theory, set theory, algebra, real analysis, numerical methods, mathematical logic, ohh, right, and some more calculus... as a computer science graduate student, I'm hating my self for not taking these classes as undergraduate. (well, or for taking them and not remembering too much) It's all very very useful!!

  • by ph43thon ( 619990 ) on Wednesday May 05, 2004 @12:07PM (#9064510) Journal
    Or.. well, it should not. A lot of the responses here mirror the main conception I came across while in University. "Everyone" wants to go to University, but they really just want to learn skills easily acquired at a trade school (not that there's anything wrong with that.) Engineering or CS (notice, it isn't called Computer Programming) majors should be embarrassed to be heard complaining about learning theory. How do you think people figure out new applications? There are entire countries full of hungry people who technically, know how to program. How are you better if that's all you know, too? My assumption is that the people complaining about theory simply find it too hard to understand. Though, the complainers are right, in a way, we don't need that many folks graduating from University. They should just be in some tech school. Oh, and the more mathematics you know, the better. How come most people don't get the fact that since math is just a big glob of abstract structures, you can take different parts and apply them to any application you want?

    p
  • by CreateWindowEx ( 630955 ) on Wednesday May 05, 2004 @12:17PM (#9064632)
    Graphics engines - trig, geometry
    Physics engines - Calculus, trig

    Just to add to your list, both graphics and physics engines require linear algebra. Writing either one of these things without a completely intuitive grasp of vectors and matrices will be very challenging. Furthermore, physics engines typically use numerical integration, so the closed-form techniques that make up the bulk of calculus aren't really applicable, and for multibody stuff you'll probably need ODEs/PDEs and the ability to wade through some pretty hairy equations. Most of the good literature relevant to realtime physics engines comes from either the mechanical engineering world or the robotics foks, so hitting the books pretty hard will be required anyways if you just have an undergraduate CS degree.

    One thing that was really helpful to me in college was to work as a tutor in the math center--it's one thing to pass some calculus classes, even doing fairly well, but the experience of having to repeatedly explain the concepts got me to get a much more solid grasp of the stuff I had just quickly learned for a test and then forgotten. I nearly got a double major in math, but didn't feel like taking three upper level math courses plus an extra senior thesis project my last year, but in actuality, experience gained from being a tutor helps me far more in my current work than if i had gotten the dual major and taken some more esoteric math classes.

  • by call -151 ( 230520 ) on Wednesday May 05, 2004 @12:51PM (#9065040) Homepage
    Here is an Keith Devlin article "Do software engineers need mathematics [maa.org] that addresses a number of these issues.

    The overall point is that math courses often develop abstract thinking skills, which may be more important for developing efficient, correct code than learning a specific toolset which may not age well. I know Keith Devlin has written other articles about this but this was the only one I could find online.
  • by the_2nd_coming ( 444906 ) on Wednesday May 05, 2004 @01:05PM (#9065177) Homepage
    it is called CIS
  • Re:I recommend (Score:1, Informative)

    by Anonymous Coward on Wednesday May 05, 2004 @01:31PM (#9065448)

    I disagree about the calculus part. Having a lot of calculus forced on me put me off math for 15 years. I loved it when I was a kid, but by college I hated it, because of calculus.

    Instead of calculus, substitute set theory and/or predicate logic. Much more fun, interesting, and relevant.

  • by the morgawr ( 670303 ) on Wednesday May 05, 2004 @01:50PM (#9065654) Homepage Journal
    That's why smart kids go to schools like Kettering [kettering.edu] where you get to actually work for (and get paid by) a real company in your field from the start (not just an internship; you have to get so much work experience and finish a major project for your company to graduate) and build up your resume while you get the technical background and mathmatic knowledge.

    disclaimer: I am a Kettering grad. There are other schools with co-op programs but Kettering is the largest, the oldest, and the most prestigious. It's also the only place where it's required (at most other's it's an option).

  • by tim1724 ( 28482 ) * on Wednesday May 05, 2004 @02:38PM (#9066159) Homepage Journal
    This is a list of the stuff you should learn, which may not exactly match what your school requires. This assumes you've already had a reasonable mathematics foundation in high school (classical algebra, trigonometry, single-variable calculus, etc.)
    • linear algebra
    • graph theory
    • combinatorics
    • logic
    • abstract algebra (very cool, and useful in a surprising number of ways)
    • multi-variable calculus
    • numerical analysis (I found it boring, unlike everything else on this list, but it can end up being useful)
    It's likely that you will have to take courses in subjects such as differential equations (either for your school's requirements, or as prerequisites for some of the above classes), but I don't think they're particularly useful to most people in CS.
  • by Derkec ( 463377 ) on Wednesday May 05, 2004 @04:00PM (#9066977)
    Wow, math was anything but the easiest thing on my university schedule. Calc I&II for Engineers were classes they used to weed out students. That said, I really value what I learned.

    Calc I or better yet, a calc heavy Physics I is the kind of class that will alter how you view the world. It's a must. After that, you might not use a ton of the math you learn in university at work. That said, taking classes in how to program mathmatical algorithms greatly helps me do my job and understand how computers work.

    CS students are blessed/cursed with the likelyhood that some of the math that you learn will be from your CS department. It doesn't make matrix multiplication that much more pleasant, but it is interesting to write a simple search engine algorith that matches a terms in a documents to a vector of search terms.

    I disagree with you on stats class. We were allowed to use Excel to do some of the gruelling number crunching for us once we'd done a handful by hand. Now, I can't do any of it by hand from memory but I'm ok with a book. I do understand what they heck is going on with some basic stats work and have a feeling for how to go about doing some vaguely interesting analysis of things I encounter.

    The number one reason to learn advanced math is so that when you sit down in a movie and they've scribbled jibberish across a chalkboard in the background, you can follow what's being done, or at very least recognize the symbols.
  • by Isao ( 153092 ) on Wednesday May 05, 2004 @04:32PM (#9067243)
    A great deal of this is often lumped under the name "Discrete Mathematics". An example can be found at the MIT OpenCourseware Site [mit.edu].

    And I second the education vs. training comment.

  • by wtfover ( 741996 ) on Wednesday May 05, 2004 @05:08PM (#9067532)
    In my current project, I've spent the last two months wishing I could remember more of my calculus courses. I never would've thought trying to determine the most effective way to feed farmed fish would be so complicated, and require so much math. I've gone through about half a dozen scratch plans trying to figure formulas and the like out.

    On a personal note, I've worked on my own projects that I had to finally take to a former math prof. I simply couldn't figure out how to solve a particular problem. But in this case, I'm probably the exception, not the rule.

    If you're just making buttons pretty, you don't need the math. But once you get into the guts of an engine,whether it be graphics or something more specialized (like feeding fish) there's going to be some math in there, somewhere.
  • by Anonymous Coward on Wednesday May 05, 2004 @05:14PM (#9067601)
    Well, you can't assume that you aren't going to have irrational numbers with a request that open-ended. If he said it was a banking application and that absolutely no rounding was allowed, then yes, that's a completely reasonable request, because the financial world always rounds things off to an integer number of cents, or whatever, and you can use an arbitrary precision math library for dealing with the really big/small numbers. But doing something as simple as dividing 1 by 9 results in a repeating decimal, which can't be rounded exactly. Even if you're using a rational number representation, so that 1/9 can be represented exactly as a fraction, you still have situations where you might have to take a square root, and you put in 2 and out pops an irrational number.

    So no, while I agree with you that it's relevant to bring up the point that you can do arbitrary precision arithmetic on a computer (assuming sufficient memory), and that maybe his boss's no-rounding requirement may have been valid, I doubt his objection was based on the limitations of the existant types. Even a programmer who didn't know about MP libraries would have been able to figure that he could implement fixed-point math (admittedly with rather limited range and precision) just using the built-in integer types.
  • it depends ... (Score:3, Informative)

    by bob_jenkins ( 144606 ) on Wednesday May 05, 2004 @05:44PM (#9067849) Homepage Journal
    How much math you need, and what math you need, depends on what sort of code you're doing.

    I use arithmetic almost constantly (incrementing loops, avoiding redundant counters). Boolean logic (x&&b)==(!(!x||!b)) is rather common. Basic probability (p(a) > p(b)+p(c)) is required for optimization. I find myself doing proofs in my head for all the code I write to convince myself the code works. Usually really simple proofs, like TRUE works and FALSE works which implies that all cases work. One recent bug involved a count of changes that couldn't exceed 256, yet every increment had to allow a matching decrement. Tricky tricky!

    On the other hand, if you ever see a calculator on my desk, you can tell I'm goofing off. (There's a calculator on my desk right now.) That usually requires combinatorics, exponentials, bell curves. Even when goofing off I've very rarely needed calculus.
  • by Shewmaker ( 28126 ) on Wednesday May 05, 2004 @06:54PM (#9068494) Homepage
    Knuth has an excellent overview of the mathematics important for undertanding algorithms in Volume I of The Art of Computer Programming [stanford.edu].

  • by alienw ( 585907 ) <alienw.slashdot@ ... inus threevowels> on Wednesday May 05, 2004 @07:05PM (#9068602)
    You could say that, but I am pretty tired of people equating computer science with computer programming as a trade. CS is largely a theoretical field, and much of it is quite abstract. It is certainly not about writing web applications and ensuring browser compatibliity like the grandparent claimed.

    Again, look at my analogy of electrical engineer versus electrician. One of them designs complex electrical or electronic systems that require fairly deep theoretical knowledge. The other runs cables and installs breaker boxes, outlets, and switches. Both require skills and training, and the main difference is the depth of theoretical knowledge required. It's the same thing with programmers versus code monkeys.
  • by FleaPlus ( 6935 ) on Wednesday May 05, 2004 @11:51PM (#9070442) Journal
    Many of the previous posters have cited the importance of math in areas like graphics, databases, etc. I heartily agree. Allow me to cite another example: computational neuroscience.

    So I'm in general incredibly interested in various combinations of brain and CS studies, so last year I audited a course on computational neuroscience [cmu.edu]. This was a course which dealt with understanding neural systems from a computational perspective.

    Unfortunately, my math skills are somewhat sub-par for a CS major. I somehow managed to get a 5 on the AP Calc exam, but forgot everything afterwards. This ended up hurting me significantly in the course. Although I could understand the neuroscience concepts, whenever we started with analysis my head started swimming. Modeling things like ion channels require some pretty hardcore understanding of differential equations, which I understood next to nothing about. I learned a bunch of neat facts, but without a strong mathematical background, I wasn't able to fully comprehend what was going on.

    There are many other examples of my poor math knowledge causing me pain. As it stands, I'm going to be joining a PhD program to study neuro/CS stuff in the fall. Since I'm going to need to have a good grasp of things like differential equations, I'm going to be spending a lot of quality time with calculus books this summer. Being in a position like this sucks -- I really recommend learning math, regardless of what you want to do. It's amazing how often math comes up, and how much the symbolic processing skills math teaches you helps in other areas.

"Protozoa are small, and bacteria are small, but viruses are smaller than the both put together."

Working...