Slashdot Mirror


Math And The Computer Science Major

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

1,203 comments

  1. Certain types of programming... by tcopeland · · Score: 5, Informative

    ...demand more math than others. Artificial intelligence techniques, 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.

    1. Re:Certain types of programming... by XMyth · · Score: 5, Insightful

      However, writing a web front-end to a database (which is what a *LOT* of people end up doing for years and years) requires practically NO math 90% of the time. Of course, it't that 10% that will get you.

    2. Re:Certain types of programming... by Anonymous Coward · · Score: 5, Insightful

      If that's what you want to do, don't waste your time in college, because they won't teach you that. Connecting a webserver to a database isn't science, is it? But if you wonder how complex SQL queries can be simplified and executed with the least amount of resources, then CS is for you, and there will be math.

    3. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Uhh, I've written a breakout (brickout) clone without knowing any trig. It's not that hard. Math is really overrated when it comes to programming.

    4. Re:Certain types of programming... by (trb001) · · Score: 5, Insightful

      Amen. Don't think programming takes too much math? Try writing a game, any game. I was writing up a Rogue clone and got around to path finding. The number of algorithms to use are just sick, and they're all math intensive. Not so much algebra/trig stuff, but the spatial relations stuff is all math based.

      Other programming...calculating and distributing load, memory management, all math based. If you ever write anything with sound or electricity (lots of embedded stuff), it's all math based.

      Many CS majors will enter the work force only to do data moving programming (ie, take form input, store, retrieve, repeat). However, even those sytems have to have somebody load balancing them which gets into timing and...well, we all know how it goes. Math isn't just a filler class in a CS majors curriculum.

      --trb

    5. Re:Certain types of programming... by server_wench · · Score: 1

      Business and accounting are fairly straightforward math (arithmetic) but compound interest gets a bit more complicated. Statistics are helpful for marketing as well as scientific applications. Knowledge of Cartesian coordinate systems is very helpful for screen graphics. Database design is pretty much set theory and logic.

      My experience has been that about 90% of the effort is building the user interface and error trapping although my math background (differential and integral calculus, differential equations, probability and statistics, matrix algebra, etc.) has been reassuring.

    6. Re:Certain types of programming... by Anonymous Coward · · Score: 2, Insightful

      I agree with the general lack of math skills among most programmers. My degree is in Physics with a minor in Philosophy. My programming skills are self-taught. Some of the most useful classes for a programmer are the logic and symbolic logic classes in Philosophy. I have worked with engineers that love it when they can talk to me about a mechanical problem and I am able to simplify their math into logical units.

    7. Re:Certain types of programming... by SatanicPuppy · · Score: 0

      I feel sorry for the poor bastard who had to take Chem for a CS BS. What the hell?

      I had to take Calc 1&2, Linear Algebra, Numerical Analysis, Comp Architecture, and Analysis of Algorythims. As well as Physics I&II

      I have yet to use any of those. The only courses I have used were elective Stats and Probability modeling. The probablility stuff is all I ever use for AI.

      90% at least of the math I took is worthless to me. I use integrals in woodworking more than I've ever used them in programming.

      And analysis of algorythms? Does anyone still work out the efficiency of their algorythm by hand? I fiddle with mine like I'm working on a car...If I put this here, it goes faster, and if I change this to that, faster still. It's like compiler proofing your code...It made sense when it would take 20 hours to compile 200 lines of code, but these days its a joke! Just complile it, the compiler will throw the errors, and you've saved a huge amount of time.

      It was a hell of a lot of stress for absolutely nothing.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    8. Re:Certain types of programming... by StormReaver · · Score: 2, Interesting

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

    9. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      That's exactly why this is among the many jobs being offshored.

    10. Re:Certain types of programming... by Impy+the+Impiuos+Imp · · Score: 2, Funny

      > Business and accounting are fairly
      > straightforward math (arithmetic) but compound
      > interest gets a bit more complicated.

      At U-Mich, at least when I went there, economics majors were required to take Calculus I, so that for one brief shining moment in their lives they theoretically understood the derivation of the continuously compounded interest formula.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    11. Re:Certain types of programming... by daVinci1980 · · Score: 2, Insightful

      What type of programming do you do, exactly, where the algorithm isn't the major focus of your work?

      Certainly not games, and almost certainly not commercial shrinkwrap products.

      I work out the algorithmic efficiency of every piece of code I write. If I didn't, my games would get bupkis for framerate.

      --
      I currently have no clever signature witicism to add here.
    12. Re:Certain types of programming... by metlin · · Score: 2, Informative

      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.

    13. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      You obviously work in a job where you could easily be replaced. Therefore, management would like you to know that your services will no longer be needed. We will be offshoring your job to India.

    14. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Well, I guess we can't all be super intelligent breakout clone writers.

    15. Re:Certain types of programming... by Cheeko · · Score: 4, Informative

      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 :)

    16. Re:Certain types of programming... by kin_korn_karn · · Score: 3, Insightful

      But if you wonder how complex SQL queries can be simplified and executed with the least amount of resources, then CS is for you, and there will be math.

      And you will learn it, and employers will not give a shit, because they just want to connect a webserver to a database, which is not science, and when you realize that your ego about your science knowledge has prevented you from finding a job anywhere but McDonald's, you will realize the error of your ways, and you will want to connect a webserver to a database.

    17. Re:Certain types of programming... by andalay · · Score: 0

      Except indians are usually very good at math too. Hmmm..

    18. Re:Certain types of programming... by AKAImBatman · · Score: 3, Insightful

      What type of programming do you do, exactly, where the algorithm isn't the major focus of your work?

      Not to defend the guy, but sometimes people use their knowledge unconsciously. For example, when I worked out a new collision detection algorithm for 2D games, I didn't need to write down the Big-O formula because it was straightforward enough for me to visualize the equation in my head. It took me a lot of time to realize that I did that,

      One has to wonder how many CompSci majors have claimed that it was a waste of time, then went off to use their education in the back of their head.

    19. Re:Certain types of programming... by the+chao+goes+mu · · Score: 5, Interesting

      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.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    20. Re:Certain types of programming... by The+Snowman · · Score: 2, Interesting

      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.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    21. Re:Certain types of programming... by HFXPro · · Score: 1

      Calc 1 & 2 are very helpful if you do work toward Image Processing or Simulations. Linear Algebra is crucial to 3D graphics and it helps with 2D graphics. Differential equations can help with probablity fields for AI. I would say if you get into more of the advance CS classes, the math becomes more important. Of course 90% of the people are just trying to get their cs degree so they can develope webpages. I would say highschool algebra is probably more then enough for that.

      --
      Reserved Word.
    22. Re:Certain types of programming... by Christopher+Bibbs · · Score: 4, Insightful

      That depends on the employer. If you're going to work for a clothing chain, they probably just want a basic code monkey who can hook-up the modules they already bought. If you work for a company that makes money selling your software, they definately do want you to know and use your science skills. It is the difference between being a resource and being an expense. You'll find the exact same issue with other careers where you can do it right or just get it done.

    23. Re:Certain types of programming... by Anonymous Coward · · Score: 5, Insightful

      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.

    24. Re:Certain types of programming... by Safety+Cap · · Score: 1
      I feel sorry for the poor bastard who had to take Chem for a CS BS.
      Me too. That poor bastard now has some knowledge (of Chemistry, how to learn, a greater understaning of the world around her, etc.) that she didn't have before. Just think what will happen when she gets to extrapolate some of that knowledge to her present situation, and/or beats out the putz who took only the courses that were directly related to the title of his degree.

      BTW, a BS is just that. You only get to the real learning when you get to advanced courses.

      --
      Yeah, right.
    25. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      There actually is a lot of science to web application programming, and unfortunately it is not taught in either a CS or MIS degree. There are many concepts like requirements gathering, Unit Testing, Documentation, MVC frameworks, etc. that developers should learn in school, but don't. I wish there was a type of degree that covered these topics.

    26. Re:Certain types of programming... by zopu · · Score: 1
      Absolutely.

      I'm just about to graduate with an AI degree, and in my course, even basic neural nets, or simpler concepts like generalization/overfitting, dimension reduction or the bias/variance dilemma are usually explained in terms that require use of:

      • Matrix operations
      • Linear algebra
      • Differential equations
      • Basic statistics/probability theory
    27. Re:Certain types of programming... by mrtrumbe · · Score: 5, Insightful
      And I will stay the hell away from any employer with that attitude. Why do you want the programmer who will be hooking up that webserver to that database to know math well and to be a good problem solver?

      -Because that person might be writing your SQL queries too.

      -Because elegant and reusable code usually comes from the minds of people interested in solving problems.

      -Because that person might be able to understand the problem domain better than some I-don't-give-a-shit-about-anything-other-than-code programmer.

      -Because that person might work in other areas of development eventually. Did you hire the person for ONLY their database-to-webserver knowledge? Was that shortsighted? Maybe you'd rather have a well-rounded and generally smart person to solve those new problems.

      We have a very rigorous hiring program at the firm I work for. We look for intelligent people with a wide base of skills who we think can easily adapt to new problems and environments. We DON'T look for specific knowledge in anything but our most senior positions. We have had wild success in finding very talented people because we are not looking for a person with skill A. How long will skill A be relevant for anyway? Will the person with skill A be able to do good work if we try to teach him skill B later? That seems pretty important to me.

      So the question is really: what are the most valuable qualities that a new hire can have? 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. I have over 3 years of java experience, but I in no way consider that my most valuable quality as an employee.

      Taft

    28. Re:Certain types of programming... by Phenris+Wolfe · · Score: 5, Interesting

      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.

    29. Re:Certain types of programming... by Glonoinha · · Score: 3, Insightful

      Bingo! Actually you see this a lot in first year trig or algebra classes being taught by grad students. They are up on the board solving some equation using standard trig or algebra when they see a nice shortcut via calculus, like the area between two curves. Solving the area between two curves is a real bitch using regular algebra or trig, and it is trivial when you use Calculus - like baby slobber trivial. So they do it, but none of the students have a clue what they are doing, because they don't even know that calculus even exists ...

      Many of the things that programmers take for granted as 'baby slobber trivial' are actually applications of advanced math - stuff like boolean operations, one to many relationships, many to many relationships, arrays with more than 3 dimensions, shortest path, sorting routines, loops, recursion, different types of conditionals, etc. These are simply part of our thought processes, an extension of how we think - but we were not born with this knowledge. Anybody that has spent time reviewing code from a 'self taught coder' knows what I'm talking about (no offense to the self taught coders.)

      --
      Glonoinha the MebiByte Slayer
    30. Re:Certain types of programming... by Wolfier · · Score: 0, Troll

      Shame. Assuming you're coming from North America, it is a prime example of one of the reasons that jobs are offshored.

    31. Re:Certain types of programming... by Laxitive · · Score: 5, Informative

      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

    32. Re:Certain types of programming... by SatanicPuppy · · Score: 1

      Heh. I tell ya, I hate hate hate math. Something in my brain is capable of inserting errors into any computation, no matter how simple.

      On the other hand, I've always found math theory to be simple, which is great for programming, because I can code in the theory, and it can do the math. People used to always talk to me in Calc, because I programmed my calculator to do some really esoteric crap.

      Programming for me is all about logic, and for some reason, the things that trip me up in actual math don't come into play there.

      So no, I don't sit around doing the math. Wouldn't be any point in it for me. But if you know how it works and what things take more cpu cycles than others, you can usually tell how "weighty" the code is, just by reading through it.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    33. Re:Certain types of programming... by AKAImBatman · · Score: 1

      Anybody that has spent time reviewing code from a 'self taught coder' knows what I'm talking about (no offense to the self taught coders.)

      Ooo... you were doing so well in your reply. Right up to the point that you insulted me. :-/

      Sorry, I just couldn't resist the poke. :-) The "self-taught" coders that you think of are people who I think of as untrained junior programmers. For example, take just about anyone from Accenture (formerly Anderson Consulting). These are kids off the street who were looking for a job. Accenture says, "want to do computers?" and they go for it. Many of them can become halfway decent developers with the proper guidance and training, but unless you hire them off of Accenture you lose a lot of work once they leave.

      This tends to get people in the mindset that they should only hire CompSci graduates. Unfortunately, that's also false economy. With many schools dumbing down their courses (not to mention the people who basically cheat their way through it to make $$$), degreed idiots are becoming very common in fields of science and engineering.

      In the end, you simply have to apply critical thinking on any hiring candidates. Run them through a technical conversation and see how well they keep up. Degree or no degree, the ones who understand will be able to participate. The ones who don't understand will just agree with everything you say.

    34. Re:Certain types of programming... by Anonymous Coward · · Score: 5, Interesting

      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.

    35. Re:Certain types of programming... by Anonymous Coward · · Score: 1, Insightful

      Discrete Math was the only required math course for my degree. I got a BBA in Computer Science. At the time, I thought it was a great idea. Nobody told me I'd never be hired in the real world with that degree (I eventually found a job through a family friend, and I am ironically the only one of the CS majors I knew in school in a programming position). Anyway, the BS CS majors had to take Discrete Math, Numerical Analysis, and plenty of other math courses. Basically, they might as well have all double majored in Math because the difference in coursework was so small.

      I did enjoy earning my degree, and I do appreciate the business background it gave me. In fact, that was the biggest reason I took that route, since I knew math would be easier for me to understand than business. If I could do it again, though, I would have taken all those math courses anyway as electives. Not only is learning it on my own more difficult than it would have been with a good teacher*, but without the necessary math background I can't go on to earn a Master's degree in my chosen field! Not to mention that it would help immensely to have a stronger math background at my job, which is at a company with a lot of engineers.

      *If anyone has recommendations of books and other resources to self-teach math, I'd love to hear them.

    36. Re:Certain types of programming... by Hott+of+the+World · · Score: 1

      We had a "required" intro to CS class, all 4 year students had to take it. Of course, the class was pretty hard for non-majors, and it led to rampant cheating.

      Girls offering favors for homework, fraternities and sororities offering free test answers, it was a nightmare.

      --
      | - | - |
    37. Re:Certain types of programming... by abe+ferlman · · Score: 4, Funny

      Of course, plumbers need math too. In fact, the more I do computer science, the more it reminds me of plumbing- setting the pipes up so the right stream gets to the right place at the right time in the right amounts. I have a lot of respect for plumbers because they can't just fix their code if they have a bug, they have to get it right the first time and put it immediately into production.

      --
      microsoftword.mp3 - it doesn't care that they're not words...
    38. Re:Certain types of programming... by John+Courtland · · Score: 4, Interesting

      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.

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    39. Re:Certain types of programming... by gcaseye6677 · · Score: 3, Insightful

      This is a problem that is found in many math classes at large state universities. The classes are taught by professors that are at the school to do research, and have no desire to teach first year calculus to undergrads. Its just something they have to do while they're trying to work their way up to full professor. So they do a terrible job and don't really take the class seriously, knowing that it won't matter in the grand scheme of things. Worse, some of these professors feel their job is to weed out as many first year students as they can, so there is no real instruction going on in the class. The only students that really succeed at math in U.S. schools are the ones that have the desire and ability to teach themselves.

    40. Re:Certain types of programming... by Chibi · · Score: 5, Insightful
      And you will learn it, and employers will not give a shit, because they just want to connect a webserver to a database, which is not science...


      I agree with you, but only to a point. In most cases, your employers will just care that it's done on time and under budget. But what happens when system performance is not acceptable? That's when you've got to figure some things out. Look for performance bottlenecks, etc. Times like this are when a math background (and I consider algorithms to be math) will be a life-saver.

      Just looking at my co-workers, there are some who have strong math backgrounds. There are others with pretty minimal backgrounds, and it really shows in their code and problem-solving abilities. And guess who my boss has more faith in?

      As a side note, I'm not saying that any of this requires formal education. You can learn a lot of this stuff on your own, if need be. It's just that if you've been to school, there's a hope you had to get through these classes and at least some of it stuck.

      --
      If all you have are silver bullets, everything looks like a werewolf.
    41. Re:Certain types of programming... by Coryoth · · Score: 5, Insightful

      And you will learn it, and employers will not give a shit, because they just want to connect a webserver to a database, which is not science, and when you realize that your ego about your science knowledge has prevented you from finding a job anywhere but McDonald's, you will realize the error of your ways, and you will want to connect a webserver to a database.

      On the other hand, when your job of just connecting a server to a database gets outsourced to monkeys in the congo, the person who learned the math and the science will be getting a serious software engineering and design job.

      Jedidiah.

    42. Re:Certain types of programming... by Finuvir · · Score: 1

      If you're only focused on employment and vocation then fine. The grandparent was pointing out the difference between programming and computer science. He's right, whether or not you value the science.

      --
      Why is anything anything?
    43. Re:Certain types of programming... by AKAImBatman · · Score: 1

      Programming for me is all about logic, and for some reason, the things that trip me up in actual math don't come into play there.

      Remember Geometry? If you're anything like me, you probably struggled through it. But at the end of the day, I'm willing to bet that it increased your problem solving skills and ability to think logically a hundred fold or better. :-)

    44. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      How is this insightful?

      It's more like a flame invite.

      The entire relational model is a mathematical model. Knowing how to structure said database for data integrity is important. If you see that importance when you're first creating the database, you'll avoid seeing just how important it is after you're stuck with something that is inflexible, difficult to maintain, and difficult to debug.

      Yes, you can "learn the math" without really learning the math. There's plenty of plain English desciptions of Normalization out there. But if you claim that this is "not math" then you might as well claim that word problems are not math.

      Still your arguement is compelling. It seems you believe that a class of programmers should be "users" of the technology without needing to understand it's underpinnings. You trade cost of design for higher maintenance. It may be a valid tradoff in short term analysis, but if you're product survives to live in a maintenance cycle, you're begging for someone to bump you out of the market with lower cost of maintenance and debugging.

      The reason new(er) technologies fail to bump older technologies out of the running is that markets are slow to respond. Customer loyalty (including retraining, fear, etc) will often prevent the adoption of a truly better product.

    45. Re:Certain types of programming... by estoll · · Score: 4, Insightful

      Writing a web front end to a database certainly is computer science. Especially when you enter the realm of web-based enterprise software or use technologies like .NET.
      * Object oriented design
      * Reusable components
      * Disconnect clients
      * Distributed services
      * Application integration
      * Replication
      * Remote objects
      Web applications raise the bar when you start talking about issues such as:
      * Transactions
      * Concurrency control
      * Unpredictable user interactions
      * Browser incompatibilities
      * Security
      Even if you don't use the computational aspects of math it doesn't mean you aren't using math or that math isn't necessary for certain CS fields. Math is the basis of all CS. Without a good understanding of math and the critical thinking skills that go along with it a person in CS becomes the type that just gets the job done. A person with strong math skills is much more valuable.

      --
      http://www.askthevoid.com
    46. Re:Certain types of programming... by Gilk180 · · Score: 5, Interesting

      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.

    47. Re:Certain types of programming... by gtall · · Score: 5, Interesting

      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.

    48. Re:Certain types of programming... by p_tweak · · Score: 1

      And I will be your boss, because I understand the fundamentals and can tell a code monkey like you what to do.

    49. Re:Certain types of programming... by megaversal · · Score: 1

      A nightmare? Girls offering geeks "favors" sounds like one of those dreams you have once every decade!

      --
      Sig!
    50. Re:Certain types of programming... by fitten · · Score: 2, Interesting

      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.

    51. Re:Certain types of programming... by Godeke · · Score: 5, Insightful

      Here here and amen! When looking for programmers, I don't care as much about your specific experience as your ability to think. Early on in hiring, I thought experience in a space was the critical element (after all, it was an *easy* assement to make). After several programmers who had to be given specs more detailed than the code, I realized I was wasting a lot of energy because I was trying to work with coders, not programmers. I now make a clear distinction between those who can follow a crystal clear spec, but can't think independently (coders) vs those who can follow a typical rapidly changing spec (programmers) and those who can create a spec to solve a problem (analyst). I have nearly zero use for coders - they cost more to feed specs then the output is worth.

      Anyone who thinks programming is "wiring front ends to databases" is probably a coder. Yes, there is quite a bit of that kind of work in the business space, but a programmer will not wire your database to a GUI: they will come up with tools to do so more effectively. Similarly, anyone who thinks "skill X" is the be all and end all of programming is probably a coder. (I once interviewed a guy who was pretty good with Oracle. Commanded a six figure income. When he found out that the offered project used SQL server 2000, he mocked our company, to our face and to the niche community we work for. In a bit of "the best revenge is success", he solicited *us* for work after the dot com crash. Seems he was out of work for over a year due to his disdain for anything but his tiny niche skill, and our project was looking pretty good.

      --
      Sig under construction since 1998.
    52. Re:Certain types of programming... by XMyth · · Score: 1

      I agree with you there, but employers will still want that degree....whether or not it really helps you do your job...it helps you get it and keep it.

    53. Re:Certain types of programming... by ThePretender · · Score: 2, Insightful

      yes, because we all know that those 'serious software engineering and design' jobs you mention don't get outsourced

      might want to go to India to speak with someone smarter than you with a better grasp on mathe and science than you'll ever have - more than likely he'll do better work for less.

    54. Re:Certain types of programming... by Zareste · · Score: 2, Insightful

      Well obviously game programming requires a sick level of math, but if you're not planning to program games or complex graphics, you'll just be wasting your time learning it in college.

      In fact most of the info you'd need for any type of programming is available in the internet. You won't get a degree that way but it's nearly instantaneous and won't cost you several thousand dollars.

      --
      I am NOT a number! I am a - oh wait, I'm number 761710. Look! 761710!
    55. Re:Certain types of programming... by Hektor_Troy · · Score: 1

      Now that you mention arrays with more than 3 dimensions, I am curious as to how you do that?

      I "cheat" so to say. This is gonna look silly I think but here goes:

      1 dimension is just a grid with one line.
      2 dimensions is a regular table, but can be done by making another one dimensional array for each point in the first one dimensional array.
      3 dimensions can be done by making another one dimensional array for each point in the two dimensional array.

      Up until here I can visualise what I'm doing.

      4 dimensions can be done by making another one dimensional array for each point in the three dimensional array.

      n dimensions can be done by making another one dimensional array for each point in the n-1 dimensional array.

      But I have absolutely no idea how to visualise the dataset in one go, when n > 3 ...

      Just curious how other people do it.

      --
      We do not live in the 21st century. We live in the 20 second century.
    56. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Respect for lining up some cool buzzwords, but no, it's not science. If anything, it's engineering. And not particulary challenging engineering, in most cases.

    57. Re:Certain types of programming... by Fredge · · Score: 1

      Girls offering favors for homework...it was a nightmare.

      Sounds like a good time to me.

    58. Re:Certain types of programming... by superpulpsicle · · Score: 0

      Ooo you can't be serious. CS is not math when it comes down to it. At a low level, yes. High level, no.

      To say CS IS math is like saying physical education is biology.

    59. Re:Certain types of programming... by kin_korn_karn · · Score: 0, Troll

      Gee, I didn't realize so many MIT AI Lab faculty members posted here. *rolls eyes*

      I hate to get defensive over this egomaniacal IQ pissing contest, but I should further explain.

      It's not that I don't value the science. It's just that true Computer Science jobs are very rare and you better be willing to swallow your pride and do database forms and other "trivial" stuff if you want a job. If you don't want to do so, someone will be willing to take your pride and shove it down your throat against your will.

      As for the shit about "being my boss," well, I love seeing these pretentious asses with their Magna Cum Laude CS degrees get tossed out on the street by soulless MBAs right alongside us self-taught code monkeys that go out and find a job two weeks later due to our experience and our ability to shut up about theory and get shit done.

      There are no ubermenschen, which means that you are not an ubermensch. Get over yourself.

    60. Re:Certain types of programming... by efflux · · Score: 1
      For example, take just about anyone from Accenture (formerly Anderson Consulting). These are kids off the street who were looking for a job. Accenture says, "want to do computers?" and they go for it. Many of them can become halfway decent developers with the proper guidance and training, but unless you hire them off of Accenture you lose a lot of work once they leave.

      Either you're wrong about Accenture, or I'm more pathetic than I thought. Don't get me wrong, I don't doubt that the programmers they have are substandard. However, I had graduated with a computer science degree, and even had some experience with some database work at the university I had attended while obtaining my undergrad when I applied at accenture. It came down to me and one other fellow, and they went with the other fellow because he "had more experience". I understand that this is a somewhat "canned response", but I had felt that the interview went rather well on my end (though I walked away feeling they were a very unprofessional firm). Now, I may not have had as rigorous of a curiculum as I should have had, yet I was hardly "off the street." In the end, I am glad that I didn't get the job at accenture because I don't think it would have lasted that long--perhaps they sniffed out that I would become malcontent quite early in the job. At any rate, my denial allowed me the time to work on my Master's in Mathematics.

      --
      Do I contradict myself? Very well, then I contradict myself, I am large, I contain multitudes. -- Walt Whitman
    61. Re:Certain types of programming... by Anonymous Coward · · Score: 2, Interesting

      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.

    62. Re:Certain types of programming... by Saeed+al-Sahaf · · Score: 1
      Girls offering favors for homework

      Damn, I went to the wrong school! CS majors getting laid for homework! Damn... Damn...

      --
      "Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
    63. Re:Certain types of programming... by Hott+of+the+World · · Score: 1

      Oh yeah, forgot to mention I was a Teaching assistant at the time. Good for the students, bad for the graders.

      --
      | - | - |
    64. Re:Certain types of programming... by alw53 · · Score: 1



      A lot depends on the domain. But if your boss
      wants you to calculate the roi for a bunch of cash flows, or if you need to know how high the rocket will go, or how come this bubble sort runs all night long, or what interest rate equates to a mortgage payment on a 30-year mortgage of 100,000 with a monthly payment of $500, or what to price your product at to optimize profits, you might just need some math.

    65. Re:Certain types of programming... by gordlea · · Score: 2, Insightful

      I would say that Computer Science is an applied Math degree...

      --

      Choose yer poison: Prophets or Profits

    66. Re:Certain types of programming... by Malc · · Score: 4, Insightful

      Studying maths trains the mind in a different way of thinking that doesn't come naturally to most people. That training translates very well to computer jobs, even if the particular exercises are never repeated again. I personally think competence in music is also very important to computer people as that teaches other forms mental discipline and patience, especially to those who find music hard.

    67. Re:Certain types of programming... by Charles+Dart · · Score: 0, Offtopic

      A'hoy Captain of the bitter boat!

      You are an asshat!

      HAND!

    68. Re:Certain types of programming... by gordlea · · Score: 1

      1 Dimension: An Array of Numbers



      2 Dimensions: An array of arrays of numbers



      3 Dimensions: An array of arrays of arrays of numbers



      2 Dimensions: An array of arrays of arrays of arrays of numbers



      and so on and so forth...

      --

      Choose yer poison: Prophets or Profits

    69. Re:Certain types of programming... by Glonoinha · · Score: 1

      How do I do it? I stole a multidimensional 'trick' that I saw first applied to Napoleon's battle history on a wall poster in a museum :
      The first three dimensions are easy to visualize - you use XYZ coord's that you always did. Envision a Rubic's cube.
      Fourth dimension : time. Replicate that Rubic's cube from left to right on a poster, one picture for every change.
      Fifth dimension : alternate time (give time a Y coordinate.) Actually I think the poster used temperature as the fifth dimension, and it stopped at 5 dimenstions, but I broke off from there.
      Sixth dimensino : alternate time, this time giving time a Z dimension. At this point you have created a much larger opaque Rubic's cube, each cell containing your original solid (XYZ) Rubic's cube.

      Anything higher than that and I skip visualizing it and work it similar to how your odometer works, each dimension being one of the little number wheels - you can rotate each one individually if you really need to, but most of the time you access it by rotating the last one until it loops making the next one go up by one, and so on.

      --
      Glonoinha the MebiByte Slayer
    70. Re:Certain types of programming... by elbobo · · Score: 1

      From a self taught coder's perspective, I would have to agree.

      I am constantly aware of the limitations of my mathematical knowledge. When I add new functionality to my programs, I work it out in my head or on paper, write that solution into code, then sit back and look at it and realise that there's a better way. The problem is I don't have the training to know how to get to that better way.

      There's a lot about programming that you can learn online. But there's also a whole lot more that you can't find online until you even know what it is you're looking for.

      It's always in the back of my mind that someday I'd like to go back to school and fill in the gaps. In the meantime, all I can do is make the best of what I know, and try and slowly fill in the gaps via the resources the internet provides.

      Of course this is where having knowledgeable friends comes in handy :)

      Me: "So I worked out how to make that bit ..."
      Friend: "Wow. Why don't you just do [thing]?"
      Me: "Uhh, right. Yes. Good thinking." /scurries off to read up on new [thing]/

    71. Re:Certain types of programming... by antarctican · · Score: 1

      Trigonometry for games... maybe if you're programming for a Commodore 64! For hardcore game programming you better know matrix algebra, millions upon millions of transformations a second. I know, I know, the new APIs all hide this, but a good programmer knows the fundamentals of how it works.

      Or statistics, I know I hated it while in university, barely got through it. But now working in bioinformatics research it comes in very handy, Bayesian networks and all.

      Another tool in research becoming more popular and I use on a daily basis - support vector machines, better know your university math for that.

      Or Non-Euclidean algebra, another common course for CS majors, I know one section of it at my university used postscript to demonstrate all the concepts. All homework assignments were to be done in postscript even.

      So math for CS majors? Definitely. I know, we all hate it, it's not "programming," but, it's good for you, it builds character, you'll thank us for it later when you have kids.... ;)

    72. Re:Certain types of programming... by kin_korn_karn · · Score: 1

      The most complicated mathematic construct I've had to use in my IT career (which has been 9 years now, I first started doing phone support when I was 19 and have been a programmer for the last 5 years) is standard deviation, for a report I wrote a couple of years ago.

      Most business programming these days consists of J2EE type stuff where all the heavy math has been done for you inside the framework and you're just gluing parts together. As such, these are also where the most jobs are, and where the majority of jobs are, so are the most entry-level positions.

      I'm not saying that anybody is wasting their time getting a CS degree. But you're not going to get a job if your ego gets in the way of your interpersonal skills and you try to overengineer everything. I work with a guy that does that, his projects are always overbudget, he misses every deadline - even ones he sets for himself - and he fancies himself a 'scientist' rather than a programmer.

    73. Re:Certain types of programming... by m3000 · · Score: 1

      Anyway, the BS CS majors had to take Discrete Math, Numerical Analysis, and plenty of other math courses. Basically, they might as well have all double majored in Math because the difference in coursework was so small.

      That's sort of what I'm doing. I'm getting a BS in computer engineering, on the software side, and it's only two more 4000 level math courses to get a minor in Math. And I can have them count as technical electives in my department, so it doesn't even take any longer to get a math minor. And I don't think it's that many more (maybe another 2 math courses) to double major.

    74. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      n dimensions: a ton of vectors pointing out of the origin

    75. Re:Certain types of programming... by TXG1112 · · Score: 4, Insightful
      I agree with you, but only to a point. In most cases, your employers will just care that it's done on time and under budget. But what happens when system performance is not acceptable? That's when you've got to figure some things out. Look for performance bottlenecks, etc. Times like this are when a math background (and I consider algorithms to be math) will be a life-saver.

      I do enterprise Capacity Planning and Performance Tuning for big databases. (Anywhere from 100 to 1000 Gb) I cannot tell you how often poorly designed application architecture causes nasty performance problems, precisely because management thinks that anyone can connect a web front end to a database. Our typical developer has no idea how to optimize for db performance. The application owners don't like hearing you need to re-design your application, because we can't tune it any further. I am tired of telling them that throwing faster hardware at the problem will not help, as a faster machine will only choke the database harder. It is obvious to me that these "developers" do not have adequate problem solving skills to effectively do their jobs. Their code may be clean, but the application design is so poor that its performance will always suck.

      Math (and all problem solving skills)are very important for a developer, otherwise one is just a code monkey.

      --
      I will not be pushed, filed, stamped, indexed, briefed, debriefed, or numbered. My life is my own.
    76. Re:Certain types of programming... by vinton · · Score: 2, Interesting
      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".
    77. Re:Certain types of programming... by Pig+Bodine · · Score: 4, Insightful
      The only students that really succeed at math in U.S. schools are the ones that have the desire and ability to teach themselves.

      I don't completely disagree but there are a lot of issues; it's not just that there are professors who aren't interested in teaching. I'm an assistant professor in a math department. I teach numerical analysis to classes comprised of about 75% computer science majors and the rest math majors. There are several things beyond the control of a professor that can impact the quality of instruction. One of the biggest is that many of the students are not interested in the topic; they just want to pass to meet their departmental requirement for a numerical analysis course. Hence I get students trying to copy homework or codes. Just last week I had two students turn in spline code that was a bad C translation of Fortran code. I haven't hunted down the source but their codes were identical and neither student knew Fortran. Having to check for this sort of thing takes time and does not make it easy to teach.

      To make matters even worse, the students put off taking numerical analysis until they are about ready to graduate by which time they have forgotten much of the calculus they learned in their first two years. In less mathematical disciplines, many students put off taking calculus and end up forgetting their high school math. And that's assuming the high schools did an adequate job preparing them for calculus in the first place.

      And then there are teaching load issues. Math departments generally teach more courses than any other department with the exception of English. Everyone has to take some math. Proportionally we are overloaded with classes to teach. Further university guidelines on tenure are often not written to take this into account. Mathematicians at many universities are expected to write as many papers, get as many grants and supervise as many graduate students as computer science professors while teaching more courses. For some reason this doesn't always work even when the professor has the best of intentions.

      The closest thing to a solution that I know of is to hire non-tenure-track lecturers to specialize in teaching calculus, college algebra, etc. That is already done at most schools but often there are rules about retaining such faculty. Even when they are doing a great job (and many do---teaching is what they do and they take it seriously) university policy can prohibit renewing their contracts past an arbitrary time (e.g. 3 years). This makes it difficult to maintain a staff of good teachers.

      There may be professors slacking off but in my (possibly biased) opinion the institutional problems are more common. Students shouldn't be able to put off taking math. The universities should hire some portion of permanent faculty that is dedicated to teaching. And promotion guidelines should be written to reflect what the university realistically expects from both tenure-track and non-tenure track faculty in each department.

      Possibly that's more griping than you wanted to hear about university politics...

    78. Re:Certain types of programming... by admiralh · · Score: 4, Interesting

      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.

      --
      Hopelessly pedantic since 1963.
    79. Re:Certain types of programming... by ari_j · · Score: 5, Insightful

      You don't even have to do 3D graphics to get into this stuff. I wrote a space simulation engine for PennMUSH and stopped at no lengths on some things...it only updates once per second, but I want to detect collisions accurately. Calculus saved the day. I wanted to turn in a spherical configuration space (where most people doing this use a cylindrical one) - take the cross product of where you are and where you want to be, and rotate yourself the amount you want to turn around said cross product. This is probably close to 100 lines of code, just to turn a ship.

      Any programming at all involves math. The better you are at math, the better a programmer you will be. If you are not good with math, you will not be a good programmer. HTML and what most people do with PHP et al. is not programming - it is markup.

      My CS degree required that I take Calculus I & II, discrete math, a statistics course (I took the harder of the two accepted for this, a 400-level math), and a math elective or two. I took a graduate-level cryptology special topics class for one of the electives - it was three CS students and about 6 math graduate students. At the end of the semester, the professor wrote a list of 3-digit numbers, most of them on the range [400,599], and said "This is a list of math courses we've covered at least half of in this class. Take them if you want to know more." There were about a dozen numbers on the list. My other elective was Calculus III, which I took concurrently with Crypto, across the hall, from the same professor. That was a challenge, as he made it extra hard on me in both classes (both because I'm good but also because I'm a smartass). He threatened to encrypt my Calc final. ;-D

      At the very least, a programmer should have discrete math, multi-dimensional Calculus including working with series and sequences, number theory, linear algebra, and diff-eq (I regret not finding time for the last two).

      Like I said - your abilities as a programmer are directly proportional to your abilities as a mathemetician. There's not a science you can study properly without using math.

    80. Re:Certain types of programming... by AKAImBatman · · Score: 1

      It came down to me and one other fellow, and they went with the other fellow because he "had more experience"

      Do you know what the other fellow's credentials were? It's quite possible that they hired him for reasons other than experience. I'd actually go as far as to say that in my experience it can be difficult to get a job with Accenture if you *are* well trained in your field.

      When you get into the field (if you aren't already), ask a few experienced IT managers what they think about Accenture. They'll tend to tell you that Accenture never once delivered a working product, but instead pulled out so that the IT department could "finish the work and save money". After that, the project was invariably dismantled.

      Accenture values the ability to make the client think that they're getting something for their money. The actual delivery is a mixed bag of whoever happens to be assigned on the project at a given time. Usually this means that you have one manager to every three programmers, and then managers to manage the managers. Each of these warm bodies comes in at $200+ per hour.

      I had the distinct displeasure of being on the only successful Accenture project known to any of my superiors or colleagues. You see, my superiors had more experience with Accenture than their superiors. As a result, they knew what a mess the project was becoming. So they hired myself and a few other crack developers, and we TRAINED the Accenture coders. Most of the real work was still done (or redone as the case may be) by those of us who knew what we were doing. We then farmed out the tedious work to the ever-shrinking pool of Accenture employees.

      We delivered on time, but the software ended up needing some major rework later on. Too many poor assumptions were made early in development that we weren't able to correct in time.

      Of course, this is simply my experience. It's possible that Accenture is attempting to change itself to better meet the needs of the recession. I somewhat doubt it, however.

    81. Re:Certain types of programming... by Swashedbuckles · · Score: 1

      Think of it like this: 1D: You can pick a cell out from a row 2D: You can pick a cell out from a table 3D: You can pick a cell out from a box 4D: You can pick a cell out from a line of boxes 5D: You can pick a cell out from a table of boxes 6D: You can pick a cell out from a warehouse of boxes 7D: You can pick a cell out from a row of warehouses 8D: You can pick a cell out from a block full of warehouses 9D: You can pick a cell out from a... well... bunch of warehouses stacked on one another. Or something.

    82. Re:Certain types of programming... by gs311 · · Score: 1

      Bollocks. I'm finishing my bachelors in CS this year. For years I've been having to learn largely pointless difficult concepts, 99% of which apply to Research. These areas have very little to do with real world work, even at technology focused employers here around London. They just want software engineers, not scientists. In applications forms at large software companies/consultancies we are asked what languages we know (inside, and in my case, mostly outside the course), and what *other* experience outside the course we have to the bizzare crap taught on these CS courses. Someone who "loves their CS" and knows how a CPU works or can architect a robot or knows advanced AI means little to them. They just want extremely good proven programmers, period. Don't get me wrong here, I do value a lot of my CS course, but most of it is just totally dull as fuck and pointless for most of us in the rest of our careers. It's certainly not going to help me much at all with any programming jobs I take, I know that (and this is supposedly one of the elite institutions in europe). I personally wish I *had* been the "plumber" in that example and done my own thing right from the start. Like Carmack did. You could be specific in an certain area like Games, why not compare Carmack with the Elixir team (UK developers of Republic, not sure if anyone's heard of it). These are a group of CS's from Cambridge with straight firsts, arguably the best trained CS's in the world. And Carmack programmed stuff in his bedroom "McDonalds" style (afaik he did not do CS, neither did Sweeney). Using your logic they would be pick up in 1 year what Carmack has been perfecting for 10 years. Er, no. There's more to writing great timely software than having a CS badge. (I don't even want mine, I wish I did something else.)

    83. Re:Certain types of programming... by asparagus · · Score: 1

      I wrote a dinky X-Wing knockoff engine back in high school. It was just before the Voodoo 1 and the whole hardware revolution, so everything had to be done in software. The math was a bitch, but once I got going at it...dizzam!

      After that, I quit bothering in calc class. Got a D- and a 5 on the AP BC exam. Official quote from the teacher to my mother: "I wish he'd failed."

    84. Re:Certain types of programming... by iabervon · · Score: 1

      There are cases in which you want the person who will be wiring the front end to the database to be good at interface design, and not mind that they don't know CS. This is particularly true if your DBA is good as CS, and can tell the designer how to improve the SQL.

      Of course, you still don't want to hire someone who only codes. But people who can design a good interface are more likely to have either an art or a psychology background than a CS background. (And hiring a domain expert probably means you'll get someone who doesn't know CS but can code a bit.)

    85. Re:Certain types of programming... by Thangodin · · Score: 1

      I've been working as a game programmer for a while now, and most of us keep math textbooks handy. And it isn't just the standard equations or methods--you may have to work out derivations and proofs. You often have to break computations down so that terms that will remain constant within a loop or call are calculated once, and do only what you need in the inner loop. There are also variations on standard methods which are approximations, but much faster and good enough for your purposes. What you end up can be radically different from anything in a math textbook, and unrecognizeable without a lot of comments.

    86. Re:Certain types of programming... by kin_korn_karn · · Score: 1

      I'm also in St. Louis, so my original ideas come from the same experiences. I got lucky and hit on a good company, though, I've been here since 2001.

    87. Re:Certain types of programming... by Tablizer · · Score: 2, Insightful

      But if you wonder how complex SQL queries can be simplified and executed with the least amount of resources, then CS is for you,

      Are we talking about implementing database engines, or using them?

      If the latter, then ideally the query writer should not have to worry about efficiency in execution. One of the alleged advantages of relational algebra is that the machine decides the optimal path, not the query writer. Queries ideally define WHAT you want, not HOW to get it. However, in practice the vendors bastardized relational theory and query languages. But working around these bastardizations is mostly learning the tweak patterns of specific vendors rather than any universal math. In other words, needed is a swamp-guide more than an engineer or raw math genius.

    88. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Oh look, an internet badass. Isn't that cute.

    89. Re:Certain types of programming... by Anonymous Coward · · Score: 0
      That looks to me like they were taught to always handle unexpected results and so they apply it to every if statement. It would definitely show better thinking if they only did that where all cases weren't already covered. That reminds me of something I'm doing. I've taken over maintenance of an atrocious VBA (I know) program that is full of this sort of thing:
      If foo Then
      Else
      ...
      End If
      That's right. There's nothing between Then and Else. It's as if they don't know about Not! I just wish I could ask the person who wrote it what they were thinking, but he's long gone.
    90. Re:Certain types of programming... by Glonoinha · · Score: 1

      Actually that pretty much boils down about 50% of what you learn in college.

      The college way of doing your last paragraph is :

      Me: (pings Friend): hey, I'm about to do thus-and-thus, what's the best way?
      Friend: Why don't you just do [thing]?
      Me: Yea, that's what I was thinking, wanted to know if you knew a better way / scurries off to read up on new [thing] and does it that way the first time around.

      In college you learn that (Friend) is one or more of the following : Google, a peer, someone here in /., a book on the subject, reference materials / whitepapers, etc.

      I guess the other 50% you pick up in college is to not dive right into whatever you are working on, but to learn the fundamentals first. My little pokey-poke earlier was making fun of a coworker (self taught coder) from years ago, never really got the hang of those pesky loops. If he needed to print 12 identical lines onto a piece of paper, he would simply cut and paste the print command 12 times. Need 55 lines of text on a page, you got 55 print commands in a row. Never occured to him to sit down and read the language command manual cover to cover (942 pages, I read every one of them over the course of three days, listening to his snide remarks about wasting my time instead of doing my work the entire time) in order to discover all the things he could do with the language - he knew enough to brute force the language to do it his way and that was all he needed.

      I'm not saying that every 'self taught coder' can't write loops or conditionals, but I often see the subtle difference between 'If it works, it's right' and 'If it's right, it works'. (I stole that for my .sig today, thanks Sepper!)

      --
      Glonoinha the MebiByte Slayer
    91. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      i++

    92. Re:Certain types of programming... by aePrime · · Score: 1

      Nope, he's mostly serious. I got a math minor with no problems getting my undergrad CS degree, and with an undergrad CS degree, you're pretty much relegated to being a code-monkey, depending on where you want to work in the business.

      In my graduate degree, nearly everything is math. Theory of Languages -- all math, Theory of Computation, definetely all math. Even Survivability Systems, with the Byzantine voting system, all math. Evolutionary Computation, again, math (and stats). It's here where you differentiate computer scientists from coders.

    93. Re:Certain types of programming... by DarkSarin · · Score: 2, Interesting

      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.

      --
      "We don't know what we are doing, but we are doing it very carefully,..." Wherry, R.J. Personnel Psychology (1995)
    94. Re:Certain types of programming... by AKAImBatman · · Score: 1

      It must be my home-schooling background, but I've always looked for the information *before* I needed it. CompSci tends to be full of little threads you can pull on to open tremendous number of doors. For example, when I was growing up, 3D programming was the rage. (We didn't have no stinkin' "Graphics Accelerators" and we liked it that way! Oh, and we had to walk uphill through snow.) Just trying to learn the simple matter of drawing a polygon to the screen involved a massive number of algebraic and trigonometric concepts. By the time I hit Trig in high school, I was ready to learn because I was already using it! :-)

      I suppose the real start I got was a college textbook on data structures that my Mother gave me when I was 11. Concepts like linked lists and bubble sorts may seem bleeding obvious, but forcing one's self to focus on the concept and calculate its best/worst case imparts a knowledge foundation that improves your work both consciously and unconsciously. By the time I got to Operating System Design, I understood that I shouldn't skip over the section on Round Robin Scheduling, because the author was demonstrating how new scheduling algorithms get derived.

      Don't wait for the knowledge to hit you over the head. Go seek it out! Data Structures, OS Theory, Compiler Theory, Parser Theory, Parallel Computing Theory, Multidimensional Computations, Compression Theory, Encryption Theory, etc. are all in print and on the Internet, just waiting for you to learn them!

      While you're at it, throw in Physics, History, and Literature. Physics is important because much of Computational Theory is based on the strict operation and limits of the Universe. History is important to understanding the role that your work will play in society and how things can be better improved. It can also keep you from making stupid mistakes. Literature is useful for expanding your mode of thinking. Don't think small. THINK BIG. Think big enough, and big problems will become smaller and smaller.

      Oh, and don't be afraid to attack other areas of interest. You'd be amazed at how much linkage exists between the various scientific and engineering disciplines. :-)

    95. Re:Certain types of programming... by HFactor_UM · · Score: 1

      Sounds like a pissed off CS dropout to me. Out of curiosity, what school kicked you out?

      --
      no.
    96. Re:Certain types of programming... by Anonymous Coward · · Score: 0
      At least learn enough to know that there are no other options besides "true" and "false".

      I really want to flame, but I shouldn't. You are so smug and so wrong that it's driving me crazy. Try this code and please consider being more humble in the future.

      int main(int argc, char **argv)
      {
      float num = 0.0/0.0;
      float limit = 1;

      if (num < limit) {
      printf("Case 1\n");
      } else if (num >= limit) {
      printf("Case 2\n");
      } else {
      printf("vinton's not as smart as he thinks.\n");
      }
      }

      I have no idea how to make it indent properly.

    97. Re:Certain types of programming... by the_2nd_coming · · Score: 2, Informative

      it is called CIS

      --



      I am the Alpha and the Omega-3
    98. Re:Certain types of programming... by RajivSLK · · Score: 1

      It depends on the application. Lets not forget that Google is a web application.

    99. Re:Certain types of programming... by McSnarf · · Score: 1
      CS might contain math... Software development in 95% of all cases is a trade. Sure - writing software for scientific applications requires (among other things) a lot of math. Some of it rather advanced. Commercial software can be (and is) written by people without a clue about even the existence of differential equations. There is very little code out there that actually requires math. Let's say... 1%. A slightly larger percentage actually requires brain function. Talk about another 9%. 90% of software creation is mindless stuff like reports, maintaining customer data, doing very basic math and talking to some high-level API.

      If you want to understand a computer, learn that it manipulates data. Bits. Numbers are just a specialized, rather ugly form of bits. Math can actually keep you from understanding programming concepts - I remember a good mathematician who took up FORTRAN IV (yes, some time ago.)

      He had a mental block when he found an innocent little line of code saying :
      I=I+1

    100. Re:Certain types of programming... by Moonshadow · · Score: 1

      I tend to visualize arrays of dimensions > 3 as trees, actually. Not quite so elegant as a square/cube design, but it's a lot easier to wrap your head around than, say, a cube shifted in two time dimensions.

    101. Re:Certain types of programming... by WindBourne · · Score: 2, Insightful
      Not only will the other 10% get you, but simply getting a CIS degree or a bunch of certificates is absolutely worthless.

      In the start-up that I am part of, we have had a BS-CS (me), a BS-EE, a BS-CIS and a CISCO/Novell/MS certified person. So what happened with all of these?

      The certified person produced NOTHING. He was able to handle netwwork questions
      able to tell about all the cisco equipment, buit nothing about juniper, dlink, or linksys (certified 5 years ago). Knew network protocols, but could not apply it. He is gone.

      The CIS produced nothing. He was suppose to do DB (postgres) and code in perl/C/C++. He was absolutely worthless. He never produced one thing and never was able to learn anything new, even he attended several top classes paid by our company.

      The EE produce about 100-200 LOCs that was directly relevant, but the code was sloppy.
      He had great ideas and was able to discuss them, but could not (perhaps would not is a batter choice of words). He was awesome in a sale support position, but failed in a tech position. I would say that his math and personality helped him, but his understanding of software engineering was a disaster.

      I just got done hiring several others. One was a certificate-based person, but we needed him only as a network admin/network sales support/lightweight sysad.
      The other person that we selected was a CS who just got out of college several years ago. We hired him over a 15 year BS-EE becuase the EE lied about his background/knowledge.
      He claimed that he was a embedded Linux person with years of experience, but did not know any shell or scripting language.
      When asked about C/C++, he said that fork will (singlular) return a handle to a child process, but did not know what exec was for.
      He only knew about ext2/ext3 FS and NTFS. Never heard of any other FSs (including reiserfs, xfs, jfs, cramfs, and amazingly nfs).
      In his knowledge of IPC, he had no idea what signals, named pipes, pipes, semaphores, or unix sockets were, only FIFOs, shared memory, general sockets, and mutexes.
      He failed big time.
      Had he had a CS background, he would have at least had enough knowledge to fake it well. At best, this guy is a MS coder, but I think that he had been a manager for some time.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    102. Re:Certain types of programming... by Slime-dogg · · Score: 3, Insightful

      And that's all bullshit. Believe me. I'm a computer science major, and I connect web sites to databases. Everything that you do in the business world (business apps, yada) has very little to do with pure computer science.

      The closest thing to it is probably doing the DB work itself, and making sure that your tables are normalized, and that you have the keys / indices done correctly. Sorry, but everything in your list is basically just a concept in programming, which you can learn outside of the realm of computer science.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    103. Re:Certain types of programming... by celorfin · · Score: 1

      And you will learn it, and employers will not give a shit, because they just want to connect a webserver to a database, which is not science, and when you realize that your ego about your science knowledge has prevented you from finding a job anywhere but McDonald's, you will realize the error of your ways, and you will want to connect a webserver to a database.

      Well, jobs that require such simple skill get offshored so you'd be working in McDonald's anyway.

    104. Re:Certain types of programming... by Anonymous Coward · · Score: 1, Insightful

      I'd rather hire a programmer that had a strong foundation in networking concepts than one who aced calc 3.

      I'd rather hire the college-failure, too. You can pay him less for doing the job of a code monkey.

    105. Re:Certain types of programming... by CreatorOfSmallTruths · · Score: 1

      Laxitive, Have you spent 5 years learning about compilers and stuff? I recall another thing you posted a while ago about VMs...

    106. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Another good example: a friend instant messaged me (back before there were any, we had written one for our own use) about this 40 line long function in the project he was working on (written in C) that produced incorrect results but he couldn't figure out what it was trying to do. He *thought* it was trying to do a MOD() function, though. So, he replaced the whole thing with a % and the bug went away. Even ignoring the %, with a math background, you can synthesize a MOD() in only a couple lines of code if you know the math.

    107. Re:Certain types of programming... by DarthTaco · · Score: 1

      "However, writing a web front-end to a database (which is what a *LOT* of people end up doing for years and years) requires practically NO math 90% of the time."

      Does it even require a degree? It wasn't that long ago when all the would be programmers were asking if they should even bother with a degree. Many were getting hired straight out of high-school.

      Most of us have that ego thing where we like to think that we are somehow gifted because we know how to program and our parents have trouble setting up their e-mail accounts, but I think the reality is that most programming jobs are pretty simple. They don't require much critical thinking... when you get down to it they are about as complex as writing an essay in a foreign language.

      And yet we complain very loudly when our jobs are shipped overseas. I think this comes from the idea that society owes us something because we think we are somehow smart. Instead, we should be using this supposed intelligence to find something useful to contribute back.

    108. Re:Certain types of programming... by superflippy · · Score: 1

      If that's what you want to do, don't waste your time in college, because they won't teach you that.

      Actually, I'd argue that if you're going to be writing web front-ends for databases (which is what I do for a living) you should take some classes in Human-Computer Interaction. It's what I'd do if I could take a couple years off work to go back to school. A lot of web interfaces for databases suck, and if you can build one that doesn't you will be a notch above the other guys.

      --
      Your fantasies contain the seeds of important concepts.
    109. Re:Certain types of programming... by dgatwood · · Score: 1
      It's not math. It's critical thinking. There's a difference.

      A similar example is music. There are lots of algorithmic rules that cause things to be pleasing to our ears. Composers know some of these rules instictively; other rules, they have to learn. However, those composers aren't, by any stretch of the imagination, doing what most people would call math. They are following a set of rules, breaking them where it makes sense to achieve the desired goal. Granted, there is some math behind those rules, but the composers aren't doing any math. They are following rules written by the people who did do it.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    110. Re:Certain types of programming... by alienw · · Score: 4, Insightful

      That is NOT computer science, simply because writing a frontend to a database requires minimal applications of that stuff. A nice litmus test for codemonkey versus computer scientist is whether you will have to create or use a single algorithm that is not in the standard library. Web applications do not require that 99% of the time, so they can be developed almost completely by codemonkeys.

      If you can publish something you developed in a scientific peer-reviewed journal, it's computer science. If you simply put together something from prefab pieces, it is NOT computer science.

      Anyway, saying that you need to know computer science to program a frontend to a database is like saying you need a degree in electrical engineering to wire up a house. The truth is, there are way too many people with CS degrees and not enough CS positions. But don't mix CS with coding. They are very far apart.

    111. Re:Certain types of programming... by the+morgawr · · Score: 2, Informative
      That's why smart kids go to schools like Kettering 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).

      --
      The policy of the United States is worse than bad---it is insane. -- Ludwig von Mises, Economic Policy(1959)
    112. Re:Certain types of programming... by Dave419 · · Score: 0
      SQL queries are math, and a database is an extension of set theory. Not always exactly in implementation, but the theory behind the relational database is pure math. Didn't you ever learn the sigma notation for queries??

      Do you need to know how the math works to hack on a database? probably not. If you design a DB this knowledge is essential for making a coherrent efficient schema. Hacking on someone else's DB isn't programming and neither is the change one thing at a time until it works method of developing a DB schema.

      --
      ~ there are 10 types of people in this world, those that can read binary and those that can't
    113. Re:Certain types of programming... by CGP314 · · Score: 1

      However, writing a web front-end to a database (which is what a *LOT* of people end up doing for years and years) requires practically NO math 90% of the time. Of course, it't that 10% that will get you. Ditto typing skills : )


      -Colin

    114. Re:Certain types of programming... by SylvesterTheCat · · Score: 1

      Assuming that your first statement is correct, so what?

      From my point of view (as am employee), do I want to limit myself to only employers that want a "basic code monkey who can hook-up the modules they already bought" or do I want to open myself up to all employers?

    115. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Right on!! I remember more than my share of those "If the pool/container has a leak with water flowing out at this rate..." problems. Love those derivitaves!

    116. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      I'm an assistant professor in a math department. I teach numerical analysis to classes comprised of about 75% computer science majors and the rest math majors.

      Hey! What you're doin' wasting time in slashdot??
      I've been waiting for my finals mark for over a week! Get back to work!

    117. Re:Certain types of programming... by hoofie · · Score: 1

      I spent 5 years getting my Electronic Engineering Degree. I now work as a Java/Oracle/SQL/JSP what-have-you. Okay, my degree course is very mathematics intensive, but I still use what I was taught.

      When you have solid foundation in maths (and I don't mean stop when you left secondary school), handling numbers and concepts becomes easy. SQL query optimisation ? Easy, since you can conceptualise set theory.

      The other day, I did an analysis based on the distributions of emails across a number of company products to find out if it was viable to condense into one email or if the resultant drop in email server load was negligible. It was a mix of stats, sql, etc. etc. and ESPECIALLY knowing how to read the data and not to make assumptions from it.

      I can tell you that my employer does give a shit, and then don't employ people to connect a webserver to a database - they employ people to build SOLUTIONS.

      Of sorry I forgot - judging by your post, you've obviously never working in a proper professional environment.

    118. Re:Certain types of programming... by be951 · · Score: 2, Interesting
      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.

    119. Re:Certain types of programming... by batmanunderoos · · Score: 1

      Don't you mean that 8%??? Duh!

    120. Re:Certain types of programming... by Mercenary_56 · · Score: 1


      I would go as far as to say that computer science _is_ math.

      Amen. Assembly language anyone?
      Not to mention that if you get all the way down too it, the computer is just doing math. You should know how the computer is taking your code and running it.
      On a happy note, I just finished my last CS final yesterday. Graduation on Saturday!

      --
      /* Insert some overused slashdot quote here */
    121. Re:Certain types of programming... by witwerg · · Score: 1

      Math (and all problem solving skills)are very important for a developer.

      Amen. Granted I don't think that I'm very far through the comments, but this is the first time where someone comes close to equating math with problem solving.

      I have a degree in mathematics( and CS ), and for mathematicians (especially ones that deal in pure math), computation is merely is a side effect of doing math. Mathematicians do less computation than people think (people who use to do computations all the time were at one time called computers). CS students often never get beyond the basic computational courses (unless you go to a decent uni.). CS has more of a use for math than CS students give it credit. Math that is from a from a mathematician's point of view. I'm not talking about the finding deriviate of f(x). I speak of being able to prove in the general case that for any function f which is continuous on [x1,x2] that there is a guarantee for each f(x) in ( f(x1),f(x2) ) to be an 'a' in (x1,x2) such that f(a) = f(x). Not that the result(though it is certainly a cool one) is as important as the ability to prove it in the first place. Then there are also those that get kicks off of not just proving it, but proving it as concisely as possible (i.e. logic optimization)

    122. Re:Certain types of programming... by admiralh · · Score: 2, Interesting

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

      --
      Hopelessly pedantic since 1963.
    123. Re:Certain types of programming... by BagOBones · · Score: 1

      But if you are an application programmer, building a computer system that replaces a manual /paper system all the math and formulas will be provided for you.

      It's not like you are solving a new problem, just implementing an electronic version.

      On the other hand if your application does something totally new, you might just have to use some math skills to get the results you want.

      --
      EA David Gardner -"... but the consumers have proven that actually what they want is fun."
    124. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      No, the point is you don't need math for simplistic applications. The parents statement that you need trig to write a breakout clone is false. You really don't need math to be a good programmer, I had all of the problem solving skills I needed before I went to college to be a programmer. If anything I would say technical school (where I went after college) was more practical.

    125. Re:Certain types of programming... by be951 · · Score: 1
      But if your boss wants you to calculate the roi for a bunch of cash flows, or if you need to know how high the rocket will go, or how come this bubble sort runs all night long, or what interest rate equates to a mortgage payment on a 30-year mortgage of 100,000 with a monthly payment of $500, or what to price your product at to optimize profits, you might just need some math.

      Yep. Probably high school math (or lower), except perhaps for the bit about the rocket (but then we equate that particular field with being very smart).

    126. Re:Certain types of programming... by aWalrus · · Score: 4, Insightful

      Here here and amen! When looking for programmers [...]

      Ok. Let's nitpick: It's not "Here here". It's "Hear, hear". Why do I bring this up? Because so many people here are saying that yes, you need math and problem solving skills. No one mentions that being able to communicate effectively (and correctly) is also very important.

      I think the new tendency in the IT industry is to have well-rounded people who can do a good technical job, but still perform passably at the graphic design and copy writing stages. I'm not just talking about Web Development here. Every area of IT is approaching this point.

      As deadlines and Time-to-shipment get smaller, programmers are getting thrown more to the forefront of the development cycle. This means dealing with humans, whether it be through well structured language, fanciful graphic design or good interface design. A lot of people are still stuck in the "I'm a rilly good coder, I don need that language stuff aniways" attitude, and I believe that is detrimental to the industry as a whole.

      --
      Overcaffeinated. Angry geeks.
    127. Re:Certain types of programming... by Peter+Cooper · · Score: 3, Insightful

      I totally agree with your coder vs programmer insight, but took objection to this:

      I once interviewed a guy who was pretty good with Oracle. Commanded a six figure income. When he found out that the offered project used SQL server 2000, he mocked our company, to our face and to the niche community we work for.

      That's nothing to do with the point you were making.. he was just a vendor/method snob. Most Linux/BSD/*NIX people would similarly mock a company who used 100% Microsoft solutions. Most C++ programmers mock Visual Basic programmers. Most Oracle geeks would mock a company who relied on mySQL, and so on.

      Come on, if you're suggesting SQL Server 2000 is in the same league as Oracle, that's just plain wrong. He shouldn't have been bagging on your company, that's unprofessional, but the fact he thought SQL Server 2000 was stupid was hardly an indication he was a moron.

    128. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      how the fuck does this get modded interesting when I said the same thing like 30 comments ago? StormReaver is correct, having done my own breakout clone you don't need much math for it at all.

    129. Re:Certain types of programming... by the+chao+goes+mu · · Score: 1

      one line (in c) a=a%b is a-=((a/b)*b)) --Unless some overly helpful optimizer decides to optimize it to a-=a, which results in 0.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
    130. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      it is called CIS Most of the CIS I see taught at colleges look more like MIS, they are full of worthless business courses.

    131. Re:Certain types of programming... by kernelfoobar · · Score: 1

      one more 'me too' to add, I agree. CS is not writing software, it's solving problem using models, i.e. algorithm. It involves many fields of math too: arithmetic (basic ops), calculus (computational theory, modeling), logic (algorithms, flow control, AI), geometry (graphic calculations), etc...

      But it all comes down to this: balance

      I've seen CS graduates barely: knowing or WANTING TO KNOW how to use a computer. As a CS lab consultant, I've seen 3rd year students not knowing how to save their work to a floppy in a Wintel machine!!! and of course we all know an MSCE that can't RTFM or think to solve a problem too!

      Basically, you start with a great foundation (the general, the theory; CS degree) to learn how to think and get skills (the specific, the practical;: learn about OSes, prog. languages, programs/tools) to learn how to work. Unfortunelty, most of the time they don't show you skills/specifics in course, so teach yourself!

      --
      Here we go again!
    132. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Really, the key difference between so-called 'coders' (to use the term pejoratively) and good programmers are problem solving skills.

      An excellent programmer should be able to solve any problem that is thrown at them. If it involves unfamiliar technologies, they'll learn the technologies necessary.

      Having a strong knowledge of mathematics gives you an incredible array of tools to put to work in problem solving - and that's really what compute science is all about. Learning math will make you a better (more efficient) programmer, even if all you do is hook up servers to databases.

      Of course, a good programmer might get bored just connecting databases, so he'd probably end up writing a program to do the work for him. A modicum of laziness is actually a good trait in programmers. :)

    133. Re:Certain types of programming... by vinton · · Score: 1

      Hmm, I wasn't clear in my example. I left out the variable declarations, but in the code I was quoting, num was an integer, the cardinality of an array, which has little danger of being not-a-number. You're right, my comment isn't applicable for all possible contexts of that code.

      At any rate, my point was that bad boolean expressions can be inefficient and a pain for the code maintainer.

      <ecode> seems to handle indentation properly.

    134. Re:Certain types of programming... by Requiem · · Score: 0, Troll

      Haha, someone flunked out of school, or couldn't even make it in the first place.

    135. Re:Certain types of programming... by Anonymous Coward · · Score: 1, Funny

      A good grasp of English and spelling wouldn't hurt either. For the final time, the adverbial form of the word "definite", is "definitely", NOT "definately."

    136. Re:Certain types of programming... by BinxBolling · · Score: 1

      Lots of programming doesn't involve math, at least on the surface. But I think that a good grounding in mathematics can improve your programming ability in much the way that it's said that learning LISP can improve your programming in any language.

      Why? Well, most programming does involve a significant amount of logic and careful reasoning. And reading and writing proofs (as one ought to be doing in any decent college-level math class) is the most distilled form of that sort of reasoning that I'm aware of.

      It's been pretty rare in my career that I've directly applied any of the math I studied in college. But it's a rare day that I don't use the reasoning skills that I developed (or at least sharpened) writing proofs for those classes.

    137. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      "they want someone with 15+ years of experience with .NET" .NET is not that old.....

      IT resumes should be past down to IT managers.

    138. Re:Certain types of programming... by HeaththeGreat · · Score: 1

      Dude, judging by your email, you're working for a bs company doing bs work. Sadly, I'm not in St. Louis now because of all the dumbass employers there. However, I am with a good company now. I'm going to guess that you went to SMSU or something. Yeah, you're cooler than someone with 14 years experience and an MS.

    139. Re:Certain types of programming... by kernelfoobar · · Score: 1

      for the curious, num's 'value' is "nan" if you print it.

      --
      Here we go again!
    140. Re:Certain types of programming... by Moeses · · Score: 2, Insightful

      You are most definitely right, CS is all math.

      Pretty much.

      When it comes down to it, all a computer can do is manipulate numbers.

      Here you haven't thought it through far enough. All a computer can do is manipulate phenomenon that we identify as electrons and through that manipulation cause a variety of other physically observable events. It is your mind that makes the numbers.

      Computer science is about math yes, but it's not about computers, really. Those particular machines are studied more intently in computer engineering and software engineering.

      It should be noted that most CS degrees do teach a lot of software engineering classes, there is a large intersection of material amoung the various computer oriented degrees.

    141. Re:Certain types of programming... by Coryoth · · Score: 1

      might want to go to India to speak with someone smarter than you with a better grasp on mathe and science than you'll ever have - more than likely he'll do better work for less.

      Except there's not just a single job to go around. Just because there's someone better than me doesn't mean I will be outsourced. It's a case of supply and demand. The number of people in India who have as much (or greater) grasp of mathematics as me is probably quite high - but not that high. There just aren't that many people with sufficient time and inclination to do graduate level mathematics, even though there is a growing market for it. That means someone in India might be willing to work for less, but he doesn't have to, because demand outstrips supply. Besides, I work cheap - by not living in countries with an overly inflated cost of living.

      Supply an ddemand is busy moving all the "connect a webserver to a database" jobs to India though. Being able to write a web front end to a database used to be a relatively uncommon skill - but there wasn't much market for it either. Then the dot com boom hit, and all of a sudden there was HUGE demand, which completely outstripped the current supply. That meant salaries shot through the roof, and every other idiot was learning how to do it. Pretty soon supply caught up with demand. Of course, given that an intelligent person can learn how to do such things in month or so, and bothering to spend that month meant you could earn 10 times what you would get otherwise in India, a whole lot of the people learning how were in India. Right now there is a massive surplus of supply which drives salaries back down. The fact that a lot of that supply is in India is causing a lot of jobs to head that way.

      Jedidiah.

    142. Re:Certain types of programming... by jwsd · · Score: 1

      I was a straight-A graduate student with a MS in Applied Math. I have been a software developer ever since graduation many years ago. I have to say that Computer Science is NOT math. There are commonalities among all sciences. But the commonalities don't make all sciences equal. A smart person can learn any science and can apply patterns he learned from one discipline to another. But the same smart person is better served if he has focused on one discipline all along. He will have to learn math that is needed in his work, but it saves a ton of time and energy compared to learning math during general education.

    143. Re:Certain types of programming... by Frizzle+Fry · · Score: 2, Interesting
      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.
      --
      I'd rather be lucky than good.
    144. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Strange, here at RIT almost none of that would be considered Comp Sci, it would all fall under Software Engineering. Also, none of what you mentioned involves math.

    145. Re:Certain types of programming... by gid-goo · · Score: 1

      As a person who actually works on video games - the math is actually all pretty simple. I mean, it's not arithmetic but it's not anything a mildly interested person couldn't pick up in a couple days. Hell, even Jonathon Blow can do it ;)

    146. Re:Certain types of programming... by John+Courtland · · Score: 1

      You sound sort of metaphysical in your post, sounds neat ;)

      To save my point though, I suppose if you were actually engineering the machine, then yes, you make a totally valid point, it's just a controlled electron stream. But on the other hand, opcodes and registers are pure mathematical operative and storage units, respectively. The whole point of the register is to allow the ALU to perform rapid math and store it back with little problem. There is the basis of everything that happens on the computer, no matter if you're running a VM on top of another VM (ugh) or raw, unadulterated assembler.

      Just a quick thought, I suppose you could call mathematics an observation of phenomenon which, manuiplated in specific ways and following specific rules, creates a predictible outcome. If looking at it that way, you can see that your definition of what a computer does is very similar, but it uses electricity rather than a brain to manipulate phenomenon and adhere to mathematical rules.

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    147. Re:Certain types of programming... by MrFreshly · · Score: 1

      "God damn it, I HAVE people skills!"



      :)~

    148. Re:Certain types of programming... by Lodragandraoidh · · Score: 1

      Agree wholeheartedly.

      My code is self documenting - and it has always been my particular emphasis on personal software projects even before I had university training or on the job experience (even before there was self documenting capabilities other than comments). I have read enough code from other people in my organization and from vendors to see that this is a rarity.

      I have been using POD with my perl applications, as well as Python's built-in documentation capabilities more recently. I am now in the stage of automating the generation of XML (docbook standard) from these sources. I don't write much C or Java now, but would probably use CWEB or some other filter application for that purpose if I did.

      How many other developers have the foresight, or take the time to do this on a regular basis? I can only name one in my outfit, at the moment - me. Sadly, most developers, regardless of background (CS and IT both), continue to have the attitude, "if it is hard to program, it should be hard to understand". This stems from their misguided notion that job security arises from code obscurity.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    149. Re:Certain types of programming... by XMyth · · Score: 1

      I agree with you, but that doesn't mean he used any complex math to make the app better. As you said, the group had very little experience, so of course they didn't do it the best. But I'm sure if you put someone on there who had a lot of programming experience and very little math background then they would have done a much better job than your group.

      I'm not saying math background is useless (when did I say ANYTHING about experience or background?) just that it's not applicable to ALL programming problems. Some would say many and some would say some...but it's really NOT applicable to every programming problem (or job) out there.

      Sure though, the guy who goes to college is more than likely going to do a better job than the guy who doesn't.

    150. Re:Certain types of programming... by nytes · · Score: 1

      "if" and "for" are only used by girlie-boy programmers.

      A Real Programmer (tm) would use a computed goto.

      --
      -- I have monkeys in my pants.
    151. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Good story; Your modesty in telling it is admirable. I'm surprised you haven't been besieged by slashbots telling you that you're an idiot. That's the usual response around here, when someone recounts a situation in which they learned something.

    152. Re:Certain types of programming... by machine+of+god · · Score: 1

      What a coincidence. I just got back from being murdered by a multivariable calculus exam. Honestly now, who has used that in their career?

    153. Re:Certain types of programming... by jadavis · · Score: 1

      That's like saying a construction worker is a physicist.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    154. Re:Certain types of programming... by Godeke · · Score: 3, Interesting

      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.

      --
      Sig under construction since 1998.
    155. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Just make the fourth dimension time. Think of a recorded play of a 3D game in which you can set the time back and forth.

    156. Re:Certain types of programming... by Godeke · · Score: 0

      Good grief man, you must have too much time on your hands to nickpick a quickly typed tirade. This is worthy of disdain:

      so, my ppl went over and was like "no way" lol

      My failure to proofread slashdot posts will remain a *feature*, and has nothing to do with my ability to communicate with my co-workers. Yes, you may take that as a value judgement as to where I spend my energy proofreading.

      --
      Sig under construction since 1998.
    157. Re:Certain types of programming... by Hal-9001 · · Score: 1
      Just last week I had two students turn in spline code that was a bad C translation of Fortran code. I haven't hunted down the source but their codes were identical and neither student knew Fortran.
      They probably lifted it directly from Numerical Recipes in C... :-p
      --
      "It take 9 months to bear a child, no matter how many women you assign to the job."
    158. Re:Certain types of programming... by irokitt · · Score: 1

      Whether college teaches you something you'll use or not, try getting hired in today's environment without a degree.

      --
      If my answers frighten you, stop asking scary questions.
    159. Re:Certain types of programming... by C10H14N2 · · Score: 2, Interesting

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

    160. Re:Certain types of programming... by uvsc_wolverine · · Score: 1

      It's pretty easy to tell by your statement that you're not a programmer. It's not possible for someone to have 15+ years of experience with .NET. It hasn't been around that long.

      --
      This space for rent...
    161. Re:Certain types of programming... by aWalrus · · Score: 1

      Hah! good retort. In all fairness, your post was very well structured. I was just making a point.

      --
      Overcaffeinated. Angry geeks.
    162. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Well, ignoring the fact that I have yet to use an N-dimensional array in a single programming task where N > 2 (it's a good way to sink a lot of memory fast), the way I visualize N-dimensional arrays is not to. :) A pure mathematician doesn't think about such things in terms of visual metaphors precisely because most people can't visualize beyond 3-4D.

      Instead, they develop all their mathematics for the general N-dimensional case, using proofs to assure themselves that what they're postulating is true, and simply juggle the numbers as N-long ordered pairs. This is basically what linear algebra is all about.

      Whether it's 1 dimension or 50 dimensions, it's really rather easy to consistently apply all the various techniques. I rarely have a need to actually try and visualize a high number of dimensions. The cases where I do usually involve graphs involving multiple variables, and no actual computation is involved, so I don't need to translate an 'intuitive' conception into mathematics. The main techniques here are color and animation, which give you 1-2 more dimensions to work with (although it's harder to correlate an animation).

    163. Re:Certain types of programming... by ACPosterChild · · Score: 2, Interesting

      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.

    164. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Whether or not he's a programmer (I think IEOR people tend to do some programming, if not a lot), I think you misread what he was saying. He was talking about the HR people who require 15 years of experience in .NET, as an example of their cluelessness.

    165. Re:Certain types of programming... by ari_j · · Score: 1

      This is definitely the case, but I saw flunk the ones who aren't interested in the course. I had to take a lot of math to get my CS degree, and I took even more math because I enjoyed it. I applied myself in my math courses because it was enjoyable to do so.

      I don't care if it's required for your degree or not - if you aren't interested in a class, don't take it. If that means you can't complete your degree, get an exception from the department chair or Dean, or change majors.

    166. Re:Certain types of programming... by Jim+Starx · · Score: 1

      Being able to communicate effectively != Grammer Nazi

      --
      The darkness... controls the music. The music... controls the soul.
    167. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      "if" and "for" are only used by girlie-boy programmers.

      You probably think object-oriented programming is for wusses and C is a high-level language.

    168. Re:Certain types of programming... by PredatoryDuck · · Score: 1

      While I would definitely agree that there are too many people with computer science degrees relative to the number of available jobs, this fact must be taken with a grain of salt. Yes, this is true for a BS in CS. I would say that it is in fact less true with an MS in CS. And certainly, if you take the time to get a PhD in CS, you can find a job; but the job will likely be in academia. While this is not for everyone, there is a distinct shortage in the (sometimes) backwards US of high school and college level computer science teachers/professors. A quick search for PhD level job listings reveals about 71000 job listing sites (most of the top hits with multiple listings). So while a BS in CS might seem like a good idea, you can't really stop there; a masters is almost a must in todays job market, while a PhD will go a long way (more so in academia).

    169. Re:Certain types of programming... by ari_j · · Score: 1

      s/saw/say/ # I need lunch

    170. Re:Certain types of programming... by Anonymous Coward · · Score: 2, Interesting

      Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.

      -Dijkstra

    171. Re:Certain types of programming... by aWalrus · · Score: 1

      Grammer != Grammar

      --
      Overcaffeinated. Angry geeks.
    172. Re:Certain types of programming... by Geoffreyerffoeg · · Score: 1

      An ego is not a bad thing. Napoleon had an ego, and I would venture to say he accomplished in life at least almost all he wanted to. Bill Gates didn't think all he needed to learn was connecting a webserver to a database, and he has a fairly well-paying job.

      A CS major who has his goal as connecting a webserver and a database is like a biologist who flips burgers. If you try to underemploy yourself like that, you deserve what you get (the low pay (compared to what you might have had), if not the inability to do menial programming tasks).

    173. Re:Certain types of programming... by ealar+dlanvuli · · Score: 1

      I do that in VB on occasion, mostly because whenever I'm working in VB I want to cry.

      That and I've proven true=false using not statements in VB, and other assorted bullshit. Because of this bad experience I always use the construct you mentioned.

      The language really does suck that much...

      --
      I live in a giant bucket.
    174. Re:Certain types of programming... by DuckDodgers · · Score: 1

      Real mathematics is proofs. People with their PhD's don't sit around all day making up multivariable calculus equations to solve on 75 sheets of paper, they attempt to prove or disprove theorems using other theorems and axioms.

      Writing a correct program is extremely analagous to writing a proof. If you can do one well, chances are you can learn to do the other easily.

    175. Re:Certain types of programming... by John+Courtland · · Score: 1
      To say CS IS math is like saying physical education is biology.
      And that is right, because without knowing the biology of your body you cannot say you properly know how to exercise, train and diet. If someone graduates as a computer scientist without knowing how registers work, for example, then the university system has failed once again.
      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    176. Re:Certain types of programming... by DuckDodgers · · Score: 1

      Good for you. I got a graduate degree in Software Engineering at the U. of Scranton, and the degree was more presentation and management oriented than software.

      My presentation and public speaking skills were honed quite a bit, but my coworkers and manager often pass around terms related to programming theory that I've never encountered.

      I would like to think I'm competent at my job now, but really I lucked out that they didn't catch the knowledge gaps I didn't even know I possessed when they interviewed me three years ago.

    177. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Thats pretty funny... not that I think you're wrong, but I found the comment about developing a joy for learning in school quite entertaining. School, unfortunately for me, has had the complete opposite effect. Both High School and College caused me to hate learning. Seriously, I used to love reading about new scientific advances, or teaching myself new programming languages, and just trying out new things. Now I could care less and that saddens me. I suppose it was all the bad teachers I encountered, the bureaucracy of school, and many and a hell of a lot more, but it's taken me YEARS to regain just a fraction of the motivation and love of learning I had prior to college. Fucking bastards... if I had to do it again, I'd probably choose to be a business major and drink my way through school.

    178. Re:Certain types of programming... by John+Courtland · · Score: 1
      He had a mental block when he found an innocent little line of code saying :
      I=I+1
      Then I assert he had a very rigid thought process dealing with mathematics. Allowing a variable to be altered like that is the foundation of computational mathematics. Concepts like the Mandelbrot fractal absolutely require this form of manipulation.
      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    179. Re:Certain types of programming... by Lodragandraoidh · · Score: 1

      There is a better word for this: 'codegrinder'. This, to me, is a more apt description of the mindset you illustrate, since it implies a more mindless pursuit than that of a 'coder'.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    180. Re:Certain types of programming... by ACPosterChild · · Score: 1

      quite high - but not that high

      A bit contradictory.

      But, in any case, what I'm worried about is the China advantage; they simply have so many MORE people than other countries do. Even if the salaries were the same, there are now 4-5 people that can fill the 1 available job. Hopefully, I'm just being pessimistic.

    181. Re:Certain types of programming... by JamesOfTheDesert · · Score: 1
      If you can publish something you developed in a scientific peer-reviewed journal, it's computer science. If you simply put together something from prefab pieces, it is NOT computer science.

      Right on.

      I went for a CS degree because I found it interesting. I learned about CPU design, J-K flipflops, algorithm analysis, discrete logic, and so on. Yeah, I learned a bunch of languages but, when I got an actual job writing software, very little of this appplied. Nowadays, with every employer asking for J2EE experience, "developers" don't even need to really *know* any languages; they need to be able to wire up the API du jour.

      --

      Java is the blue pill
      Choose the red pill
    182. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      Looks like someone is trying to justify their job title.

    183. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      I don't know perl syntax too well, but it couldn't have been hard to whip up the equivalent of this python:

      def truthtable( func ):
      for pair in [(0,0), (0,1), (1,0), (1,1)]:
      print func( pair[0], pair[1] )

      def badfunc(a, b):
      return not ( a and b )

      def goodfunc(a, b):
      return (not a and not b)

      truthtable( badfunc )
      truthtable( goodfunc )

      Why waste time trying to convince a stubborn person verbally (who believes perl logic is different to any other language), when you could easily just have perl itself show him and be done in ten minutes?

    184. Re:Certain types of programming... by alienw · · Score: 2, Informative

      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.

    185. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      the class is not too hard...
      come one, anything titled "discrete math" can't be too hard!
      instead, you're too ...

    186. Re:Certain types of programming... by aePrime · · Score: 1

      Of course, there are always counter examples of everything. However, in doing graphics applications, I use math daily, and varied types of math at that.

    187. Re:Certain types of programming... by Jim+Starx · · Score: 1

      haha, touche but you've prooved my point...

      --
      The darkness... controls the music. The music... controls the soul.
    188. Re:Certain types of programming... by ACPosterChild · · Score: 1

      Umm, that EE with 15 years of experience:

      1) Why would you expect somebody working on embedded systems to need shell or scripting languages? Once rc starts the progs, you're likely done with shell scripts. On our unit with 8MB FLASH, we do a little scripting at bootup and sure don't have room for a perl interperater.

      2) What's up with the "(singular)"? I don't get it. If he said, "fork will return a", then he spoke correct English. The other form, "fork returns a" is also fine. "Fork will returns a" is incorrect, but is what you seemed to be expecting. I'll assume it's a typo of some sort, but when you're correcting someone's grammar you need to pay special attention to not make a mistake yourself. Or, I totally missed the point...

      3) He's an EE. Not knowing about a library function (exec) is not the end of the world. He may have been busy getting things to work as best he could. If he is bright, you can teach him the details.

      4) First, a pipe *is* a FIFO. Sounds like he knew the concept, but not the terminology. Perhaps a 20 second description and a pointer to a library would have had him all set. Second, if he knows general sockets and mutex, explaining the differences and benefits of unix sockets, semaphores, and signals would not take that long.

      Obviously, I wan't the one there, you were; but, from your description, it sounds to me like you didn't give him a fair shake. His main focus was EE, but you penalized him for not knowing a number of "CS" specifics when it's clear that he's taught himself a number of related concepts. I'd rather have a motivated EE than a fresh CS who only cared about 'faking it well' (not that the person you picked was that way).

    189. Re:Certain types of programming... by dumpster_dave · · Score: 1

      Dead on!

      I was in our staff meeting room the other week and another engineer came in stating something like "think there'd be a way to automagically do 3d in Flash?". [I know -0 about Flash].

      15 minutes and later we had a method of assembling 3-d polygons as layers in 2-d and the ability to rotate in 3 axes.

      Fortunately, an artist was there who demonstrated the physical method of doing perspective drawing and we turned that into a trig algorythm and you could now move through pseudo-3d space.

      We just wanted to see if it was possible, so we didn't cross the colision, camera not actually at infinity, don't draw things behind you bridges . . . .

      I've never taken a graphics course nor programmed in it, so I have no idea if this is how "for real" systems do it . . . . the point is, having the math backgroud we didn't need to have taken the CS course as we were able to derive it ourselves.

      And, I guess that technically it's all trig [d*cos(artan(dx/dy) ) kind of stuff], fairly simple actually . . . but there's no way it would have been doable w/o having had the practice of Vector Calc back in the day.

    190. Re:Certain types of programming... by NoodleSlayer · · Score: 1

      "Ok. Let's nitpick: It's not "Here here". It's "Hear, hear". Why do I bring this up? Because so many people here are saying that yes, you need math and problem solving skills. No one mentions that being able to communicate effectively (and correctly) is also very important"

      I thought we were talking about CS Majors not English Majors ;)

    191. Re:Certain types of programming... by AKAImBatman · · Score: 1
      Off the top of my head, the translation formula for points is:
      Let x1 = 3D X coordinate
      Let y1 = 3D Y coordinate
      Let z1 = 3D Z coordinate

      Let x2 = 2D X coordinate
      Let y2 = 2D Y coordinate

      Let cx = Center of Screen X
      Let cy = Center of Screen Y

      x2 = x1/z1 - cx
      y2 = cy - y1/z1
      There's a great tutorial by KiwiDog here. (Just search the page for KiwiDog. I'd link directly, but Geocities has one of those annoying referal blockers.)


      And, I guess that technically it's all trig [d*cos(artan(dx/dy) ) kind of stuff], fairly simple actually . . . but there's no way it would have been doable w/o having had the practice of Vector Calc back in the day.


      Indeed. Some of the stuff that seemed very hard when I was younger. With age and education, I find that stuff that used to be difficult is now almost second nature. :-)

    192. Re:Certain types of programming... by kreyg · · Score: 1

      Well obviously game programming requires a sick level of math, but if you're not planning to program games or complex graphics, you'll just be wasting your time learning it in college.

      I would expect post-secondary education to prepare you well for whatever twists and turns your career takes you through for the rest of your life. Calling something as fundamental to the creative aspects of computers (as opposed to the service side of the industry) a waste of time seems short-sighted and career-limiting.

      Good luck...

      --
      sig fault
    193. Re:Certain types of programming... by sd3 · · Score: 1
      It's a trade skill, like plumbing.

      Unlike plumbing though, most computer jobs can be offshored. Better dust off that Plumber's Apprentice training manual...

    194. Re:Certain types of programming... by higginsm2000 · · Score: 1

      Then rewrite their queries for them. Educate and quit whining. Or are you a BDBAFH?

    195. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      "Computer science is about math yes, but it's not about computers, really. Those particular machines are studied more intently in computer engineering and software engineering."

      Computer Science is about performing computation by machines. Your comment wasn't thought through far enough as well. These machines can be electronic, mechanical, optical, etc. Hell, you can build logic gates using fluid interaction.

      I certainly agree that a lot of what CS gradutes end up doing can be classified as a trade job ... sort of a software carpentry. Howerver, I cincerely believe that we are starting to reach a point where software development work can be equated with professional writing. A discipline whose expresive and artistic abilities are endless.

    196. Re:Certain types of programming... by captainwasabi · · Score: 1

      WOW, that is an astute observation actually. WHich is more important, math or English for a CS career. I would say that if you want a CS job that you actually ENJOY then the more math the better. I am a development manager for a game development company and in response to the original question I would say that I would rather hire a Math or other hard science major than a CS major with very little math. I have hired chemists, EEs, MEs, physicists, and the odd CS major ;) However I have never hired anyone that I saw as either being in, or growing into, a leadership position that didn't have excellent communication skills, both written and verbal.

    197. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      I always like to say that a BS in business is a lot like a BS in common sense, with a little math thrown in.

    198. Re:Certain types of programming... by rickshaf · · Score: 1

      Even if those math courses aren't specifically used, they implicitly help the student learn how to think about solving problems. That's a lot more valuable than a lotta folks think it is. I teach Astronomy at a community college here in the SW. I get a lot of students who haven't been forced to think much. They're not dumb. Far from it. But they haven't been forced to think critically very often, so they don't. That's why we need to stress science and math in our schools, not because the majority of students will do a lot of math and science throughout their lives, but because they'll really need to think critically throughout their lives!

    199. Re:Certain types of programming... by aquiltar · · Score: 1

      That's basically what the so-called 'computer science' degrees in most colleges in India consist of. There's no point in them teaching real CS because all jobs are services anyway,

    200. Re:Certain types of programming... by rabs · · Score: 1

      The difference between some web-scripting guy, and a guy who knows CS, is like difference between an automechanic and an automotive engineer.

      Yay! Another difference is that the engineer will know about the existence of solutions to thorny problems, as opposed to the 'monkey' who runs out of ideas and will throw his/her hands up.

      I've run into too many 'web-scripters' whose skill sets consist of cut 'n paste, and who have to come to me because they can't (or refuse to) think their way out of a problem. "Please help me with this script!"

      Unfortunately, this group of people also includes .NET programmers who never received a good background in CS. And when you begin to talk about Karnaugh maps or the difference between strings and binary, their eyes glaze over.

      - rabs

    201. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      The parent makes a excellent point and the fucking assholes of slashdot moderate him down. Grow the fuck up people..

    202. Re:Certain types of programming... by the_2nd_coming · · Score: 1

      that is my point.

      --



      I am the Alpha and the Omega-3
    203. Re:Certain types of programming... by WindBourne · · Score: 1

      Once rc starts the progs, you're likely done with shell scripts.
      He did not know about rc files or anything doing with shell at all.

      ...Or, I totally missed the point...
      Fork returns in 2 places( child and parent) with the pid of child or 0 (or error). He thinks that fork is singular returning a handle to the child process. What he describe was spawn on MS.

      He's an EE.
      I was not so sure of that.

      Not knowing about a library function (exec) is not the end of the world.
      If you know fork, then you know exec. Unless you do not know either.

      First, a pipe *is* a FIFO. Sounds like he knew the concept, but not the terminology.
      Yes, a pipe is a FIFO, but he did not know that. MS systems have FIFO's, but not pipes.

      His main focus was EE, but you penalized him for not knowing a number of "CS" specifics when it's clear that he's taught himself a number of related concepts.

      The only focus of this job was as a senior software engineer on Linux/Unix. He assured me that he had years of work (more the interesting that he said 15 years of Linux; when quized about 15 on Linux, he assuered me that he had it). Not only did I give him a fair shake, but I allowed the charade to continue for far too long.

      BTW, I do pay attention to EE's as a background.I figure that they have aquired the logic and math required to do the job. In fact, it is why I allowed several intereviews. But He obviously lied about the linux/unix. And I will always take a "Fresh" CS over a lieing EE any day.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    204. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      proven ;)

    205. Re:Certain types of programming... by SlashdotStu · · Score: 1

      Of course, plumbers need math too.

      When I saw the link, I was sure you were linking to the following joke...

      One professor of mathematics noticed that his kitchen sink at his home broke down. He called a plumber. The plumber came on the next day, sealed a few screws and everything was working as before. The professor was delighted. However, when the plumber gave him the bill a minute later, he was shocked. "This is one third of my monthly salary!" he yelled. Well, he paid and then the plumber said to him: "I understand your position as a professor. Why don't you come to our company and apply for a plumber position? You will earn three times as much as a professor. But remember, when you apply tell them that you completed only the seventh grade. They don't like educated people."

      So it happened. The professor got a plumber job and his life significantly improved. He just had to seal a screw or two occasionally, and his salary went up significantly. One day, the board of the plumbing company decided that every plumber has to go to evening classes to complete the eighth grade. So, our professor had to go there too. It just happened that the first class was math. The evening teacher, to check student's knowledge, asked for a formula for the area of the circle. The person who was asked was the professor. He jumped to the board, and then he realized that he forgot the formula. He started to reason it and soon filled the board with integrals, differentials and other advanced formulas to conclude the result that he had forgotten. As a result he got "negative pi times r squared." He didn't like the negative, so he started all over again. He got the negative sign again. No matter how many times he tried, he always got a negative. He was frustrated. He looked a bit scared at the class and saw all the plumbers whisper: "Switch the limits of the integral!!"

    206. Re:Certain types of programming... by redwyrm · · Score: 1

      If you simply put together something from prefab pieces, it is NOT computer science. So you'd be willing to claim that the interconnections between prefab pieces has absolutely no scientific merit, and that any old codemonkey can pull a build system like GNU make or Apache Ant out of his ass?

    207. Re:Certain types of programming... by McSnarf · · Score: 1
      Now this makes more sense - just remember that proofs are just a small part of what IS taught. I remember having to take calculus, numeric math, linear algebra and a "general math" course - none of which even included the concept of proof. High school, however...

      Still - most software development IS plumbing, not proofs. :)

    208. Re:Certain types of programming... by warrax_666 · · Score: 1
      Concepts like the Mandelbrot fractal absolutely require this form of manipulation.

      The concept of a Mandelbrot fractal requires nothing of the sort. It's just a variation of function composition: f(f(f(...))), where, instead of asking the obvious question, "what is the result", you ask the question "how many times you have to apply f until the result goes out of bounds?". The fact that someone chooses to implement that using iteration and assignment is irrelevant to the underlying mathematical structure. You can, in general, view assignment as function application (that's sort of what functional programming languages do).
      --
      HAND.
    209. Re:Certain types of programming... by sql*kitten · · Score: 1

      This kind of stuff makes Baby Knuth cry. At least learn enough to know that there are no other options besides "true" and "false".

      Actually, in PL/SQL, that would make perfect sense, because a boolean result can be true, false or unknown if either of the inputs are null. True = true, false = false, true != false, true != unknown, false != unknown, unknown != unknown.

    210. Re:Certain types of programming... by Christopher+Bibbs · · Score: 1

      Wow. One spelling mistake and I get a spelling flame. Couldn't you at least try and critique some thing else? Maybe you can find a place where I should have added a comma.

    211. Re:Certain types of programming... by ThePretender · · Score: 1

      seems that it is mostly the support jobs going to India, from what I've seen. And the Indians I know that have come here (so not taking your job by outsourcing, technically) most certainly did have the time and inclination to learn graduate level mathematics and are good at it. Face it, the US is no longer top notch by far in science and math. I'm pretty sure there was even an article to that effect here. I'm not disagreeing that the low-level web work you so smugly stare down your nose at isn't as wonderfully brilliant as work for someone with higher-level math skills. That goes without saying (though you've wasted many more words than necessary saying it, just so you can insult that portion of Slashdotters who do this for a living - not me, but I'm sure someone who does it thinks you are a total asshat about it). My comment was that higher-level jobs do get outsourced, though you seem to feel comfortable on your pedestal so I'll move along and not bother you with reality.

    212. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      You are a faggot and a nigger, you fucking cumdumpster. Burn in hell.

    213. Re:Certain types of programming... by das_cookie · · Score: 1

      Actually, a friend of mine (welder) was always fond of saying that "the only two things a plumber needs to know are which way the prevailing wind blows and that shit flows downhill".

      --

      You! Yes, YOU! Out of the gene pool!

    214. Re:Certain types of programming... by DuckDodgers · · Score: 1

      It's a shame it works that way. I took a lot of proof-oriented classes in college.

      I think if you can prove a concept correctly, chances are you understand the subject matter pretty well. Once you have that, solving any particular equation on the subject is usually a cinch.

    215. Re:Certain types of programming... by DuckDodgers · · Score: 1

      I'm sorry, I should have been more clear with my point: I would have preferred a more mathematical and programming concept orientation in the software engineering program. I feel cheated that I didn't get it.

      If I wanted to move into a graphic calculating application job, the learning curve would be much steeper for me than for your average Software Engineering or Computer Science MS. I'm not at all happy about that.

      My degree is really only useful for attracting attention to the resume when conducting searches on Monster.com.

    216. Re:Certain types of programming... by McSnarf · · Score: 1

      Yes, a pity. But that college (at that time one of the best for commercial computer sciences) later produced graduates that ONLY knew MS operating systems and would not know how to (or why) implement locking of records for multiuser applications. (Not hiring a graduate of a college that youself used to visit for lack of skills is like slapping your own face :) ).

    217. Re:Certain types of programming... by kin_korn_karn · · Score: 1

      1) if you judge people by their email expect to die alone and miserable.
      2) I went to Ohio University and majored in Business. You're a really smart guy!

    218. Re:Certain types of programming... by kin_korn_karn · · Score: 1

      I chose not to go, and I laugh at your pretentiousness. suck me raw.

    219. Re:Certain types of programming... by John+Courtland · · Score: 1

      And since you can't do it by hand, because it would take the better part of your life, you use a computer. How do you think the iterations are stored? I=I+1

      --
      Slashdot is proof that Sturgeon's Law applies to mankind.
    220. Re:Certain types of programming... by ACPosterChild · · Score: 1

      And then there's random bit flips, stack / pointer corruption. Who knows? I almost always put in a clause like that (except I say "Can't get here"), and I've seen a few of those messages. Sure, it's typically when the conditional is a screwed-up pointer or something more advanced than an int, but consistency is important. Also, our stuff is deployed in a high-radiation environment and I'm a little paranoid about totally random weirdness.

    221. Re:Certain types of programming... by Zareste · · Score: 1

      I really haven't time to deal with someone who's bent over and taken it where the professor put it. I've got a job to get back to. Go shovel someone's driveway or something.

      --
      I am NOT a number! I am a - oh wait, I'm number 761710. Look! 761710!
    222. Re:Certain types of programming... by alienw · · Score: 1

      You need to know some computer science to write GNU make. It has stuff like lexical parsing and a language interpreter. It has quite a few innovative elements. I mean, you could actually write pseudocode for some algorithms in make.

      You don't need to know any CS in order to write web frontends, various simple GUI apps, and so on (which is what many programming positions are for). You just need to know a programming language and an API. The reason those tasks are not trivial is because nobody came up with a really good set of prefab pieces for web apps, not because there is some intrnsic complexity.

    223. Re:Certain types of programming... by HeaththeGreat · · Score: 1

      lol...business... What are you doing reading /.?

    224. Re:Certain types of programming... by burritoKing · · Score: 1

      Hmmm, I believe there is a difference between the universities in the US and here in the UK. I have to say that here, it only seems to be the [better] universities that place an emphasis on maths in a CS or CS related degree


      I am doing a Bsc(hons) in Software engineering in the UK, my first year classes were more of less made up of maths classes. In which we covered everyting from differentiation and integration to matrix's and vectors. (the last 2 are especially pertinent to CS).

      Even though our dedicated maths classes stopped after first year we still have classes which although are not math classes in name are still maths classes. For example classes like Graphics or Software Correctness all require more than a passing knowledge. Not only that but I believe that it is a requirment of the BCS (British Computer Society) that certain maths classes are taught, and must be passed (in the UK you can fail an exam but if you ace all the others then the exam board may make it up to a pass, however you still need to get over a certain % before this happens, however the BCS does not allow this with maths classes, if you fail them your out on your arse) . On a slightly different note, we (Software Engineering students) are required to take classes on hardware design and structures. Now this class in itself doesnt require any hardcore mathematics, but it does require you to follow/solve a lot of equations. So if you have a solid maths background this is simpler for you.


      I believe that the both programming and maths are so closely related it would be silly to say that you can become an efficent/good programmer without a good knowleged of maths.

    225. Re:Certain types of programming... by Anonymous Coward · · Score: 0

      But he spelled "judgment" wrong!

    226. Re:Certain types of programming... by kreyg · · Score: 1

      ? OK, whatever.

      I really had no particular interest in university while I was there, choosing to program rather than go to classes (or, occasionally, exams). I still did get a lot of knowledge about algorithms, logic, calculus and matrix math that I probably wouldn't have been exposed to as quickly or completely otherwise. Mostly I just became a more mature developer, moving beyond some pretentious prick who thought he knew everything about computers because he could write a little code.

      In any case, I'm now a lead programmer at a major game company, and per your web page, was easily out of debt within three years. I have no regrets about the path I've taken, and I do wish you well on yours.

      --
      sig fault
    227. Re:Certain types of programming... by kin_korn_karn · · Score: 1

      waiting to be chastised by uber badasses like you.. spank me, rape my ass, you hot manly stallion you!

    228. Re:Certain types of programming... by sribe · · Score: 1

      We have had wild success in finding very talented people because we are not looking for a person with skill A. How long will skill A be relevant for anyway? Will the person with skill A be able to do good work if we try to teach him skill B later? That seems pretty important to me.

      Well said. I'll go further: if you don't understand proof by induction, you cannot write reliable code. Period. I'll grant that there are a few people who understand this intuitively, but most need a bit of math education to get it.

      Unfortunately, there's boatloads of miserably mediocre code monkeys out there who have no clue about what they don't know...

    229. Re:Certain types of programming... by Laxitive · · Score: 1

      Well, I havn't spent 5 years on VMs, but I'm interested in them.

      I've worked at a company writing code to handle different targets for a retargetable C compiler for a while. Aside from that, no. Most of what I know about VMs, I generally pick up from books and papers and just thinking about different problems for long periods of time.

      I wouldn't consider myself _that_ knowledgeable with VMs.. because I havn't done much actual work in that area. I tried for a while when I was in school.. but now I'm working in bioinformatics, and I don't really see myself switching away from it anytime soon.

    230. Re:Certain types of programming... by ACPosterChild · · Score: 1

      OK, I buy it :)
      It's just the way you described a few things, I got the wrong impression. When he said 15 years, did you ask him how it was working with Linus? :>

    231. Re:Certain types of programming... by CreatorOfSmallTruths · · Score: 1

      Laxitive, Thanks for replying - that was really informative, What is the connection between CS and bioinformatics? I fear going in that direction since it has to do with biology (or does it?) Would you recommend going down that path? sounds like you are very pleased with it

    232. Re:Certain types of programming... by WindBourne · · Score: 1

      No. By that time, I was already heading down the suspicion path that we were being snowed. Besides, it would be teaching Linus at that time, after all that is what Tannenbaum was doing.

      I have to admit that I admired his chautzpah at first. Once he got agressive and tried to defend his wrong answers ("well, ansi C only uses 2 parmaters" in reply to how many parameters in the main; "Well, in embedded Linux, we have no need of shell or perl"), .....

      --
      I prefer the "u" in honour as it seems to be missing these days.
    233. Re:Certain types of programming... by Laxitive · · Score: 1

      Well, thanks for asking :)

      About bioinformatics.. I would definitely recommend it. The connection with CS depends on what you mean. There are applications for both theoretical work and more applied programmatic work in bioinfo.

      For CS people, bioinformatics starts with sequence data (coming from sequencers). The scientists and biologists generate some sequence data, and ask you to help them find out as much as possible about it. The ultimate goal of bioinformatics is to make it seamless and easy to go from raw sequence data (e.g ACTACGATCGTAAAGCATCGATCGAT) to a more useful functional description of what that sequence represents (what protein does it synthesize? What bilogical processes is that protein involved in? etc.)

      The field is pretty young.. biologists have only recently figured out that computers can take care of a lot of the gruntwork for them. There are some pretty sophisticated tools in the business (phred/phrap, lucy, blast, interpro, crossmatch, clustal, etc.) to handle various different computations to do. However, there's very little in the way of standardized formal models, or communication methods, which deal with the field.

      Most research groups end up using what tools are already available, but writing their own ad-hoc tools to put them all together into a pipeline that does what they want. As a CS person, it's immediately noticeable that there is a lot of potential for how to apply computational resources to greatly improve the state of the field.

      I'm not at all educated on the biology side of things.. but I'm learning as I go. The thing is, the bioinformatics field is _hurting_ for people that have both good CS and Bio backgrounds. They are rare, and extremely useful - because they're the people that can both identify problems on the biology side of things, and then attempt solutions on the CS side of things.

      It's a lucrative field.. but it requires a lot of study. At least bachelors in CS, and a degree (preferably masters of PhD) in an area of biology, will take you a _long_ way in this field. I have the CS knowledge.. I'm thinking I might go back to school at some point to get a Bio degree. I just graduated from school, though, so I don't feel like going back anytime soon.. but sometime in the future, maybe.

      The work is pretty interesting too, if you're of that mindset.

      -Laxitive

    234. Re:Certain types of programming... by CreatorOfSmallTruths · · Score: 1

      Wow!

      Thank you, Thank you, Thank you!

      This is, by far, the most helpful, inteligent and thought out reply I got on /. !

      Regretebly, I am not into biology, never was, I have a bachelor degree in CS and I might switch area of interest sometime, but your post really made my day.

    235. Re:Certain types of programming... by Impy+the+Impiuos+Imp · · Score: 1

      > fraternities and sororities offering free test answers

      That they keep massive filing cabinets full of answers to previous years homework and tests is nothing new, "just in case" another student needed it.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  2. A Warning by ziondreams · · Score: 5, Interesting

    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? :-)

    --
    01000001 01011001 01000010 01000001 01000010 01010100 01010101
    1. Re:A Warning by NixterAg · · Score: 4, Insightful

      The majority (I'd say 70%) of the skills I've obtained have been acquired by means of self-teaching and learning from friends.

      This is pretty much the case no matter where you go to school. A good school will only give you the tools and understanding to be more efficient at acquiring and utilizing the skills. A good school will not be teaching you those skills.

    2. Re:A Warning by Anonymous Coward · · Score: 1

      Can someone explain to a dumb European what this "DeVry" thing I keep hearing about is and how it is different from the rest?

    3. Re:A Warning by hJordanH · · Score: 5, Interesting

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

    4. Re:A Warning by Dana+P'Simer · · Score: 2, Interesting
      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.

    5. Re:A Warning by Matrix_X · · Score: 1

      I've said it and I've heard many other people say it. "I dont feel like I learned anything in college." Up until my last semester in school, this was the case. What I did realize I had was a different way of looking at problems and the world. Compared to the HS Student that i was 4 years ago, I might as well be Einstein b/c I never would've been able to understand half of the stuff I do now.

      That's what college is all about, learning how you learn, not memorizing facts. College is an experience that changes every part of a person, not just their IQ.

    6. Re:A Warning by Nick+of+NSTime · · Score: 3, Funny

      What do you know about "many state universities" if you're attending DeVry? Last time I checked, University of Texas at Austin (my alma mater) wasn't advertised between CHiPs reruns.

    7. Re:A Warning by Anonymous Coward · · Score: 0

      I'll agree with the parent, i'm enrolled at devry and while i dont' want to say that it's a bad experience by any means, i was just shocked to see how little math was required for the CS degree. I'm going to take additional math courses that aren't required in my degree just because i think it's a huge mistake to omit any form of calculas requirement. but in the end, it's really all based on what you make of your time there rather then blame the school for not doing enough. For example, the school doesnt' teach me stuff as fast as i learn, so i use lab time to my advantage and learn new things they havn't covered yet. otherwise i would be incredibly bored and no doubt fall asleep in class

    8. Re:A Warning by Sepper · · Score: 1

      Same Here up in Canada... I'm in Engineering School (Computer Eng.) and the only thing I REALLY have learned is HOW to learn...

      That and doing stuff in 3 days with notions that you didn't know 2 days ago...

      Of course fast crammed learning like that feels like crap cause you don't remember anything 6 months later...

      I especialy blame the school for teaching us good programming pratices in year 3 and how to code in year 1... You realise that you old code is mostly crap... Although it compiled and runned...

      I will finish this 4 year 'training' next year and I just learn what exception(in C++) are.... and I had to change the idea that:
      'If it works, it's right'
      to
      'If it's right, it works'...

      --
      I live in Soviet Canuckistan you insensitive clod!
    9. Re:A Warning by jtwJGuevara · · Score: 4, Insightful

      A good school should be teaching you that your schooling never ends. As in, never stop learning or you will be left in the dust. Any school that doesn't enforce this opinion on their students in any subject matter are already putting their students at a disadvantage.

    10. Re:A Warning by Anonymous Coward · · Score: 0

      You know, there's all this crap about how college expands your horizons and about how you're more mature when you get out of college.
      Has anyone thought that maybe because you're just...older? As people mature, they tend to become more nuanced in their thinking anyway...
      Class divisions in America are pretty strict, but does anyone with experience in both blue-collar and white-collar environments have anything to say about this? It would be a nice test case.
      If college really does broaden your horizons, then we'd expect a college grad to be much more nuanced in his or her thinking than a high school grad of the same age. Anyone want to comment?

    11. Re:A Warning by Anonymous Coward · · Score: 0

      My University doesn't seeem to focus on anything. Math, Com S, then BS LAS classes that have nothing to do with anything (International Perspectives, what a crock; I didn't come here to learn their politics).
      But the CS is good, the math is good, they just like to make it harder than it is.

    12. Re: A Warning by Black+Parrot · · Score: 2, Informative


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

      --
      Sheesh, evil *and* a jerk. -- Jade
    13. Re:A Warning by megarich · · Score: 0

      I went to a state school(SUNY Binghamton) and I can't complain too much about the curriculum. You had you're data structures, basic programming courses, advanced programming courses, a course dedicated to the theory of programming languages, etc. Not to mention too a mandatory of 5 math classes. Not once did they focus on any management side of things. Everything was programming/computer related. Of course the degree did me little use since I am now a System Administrtor but that's another story. Point is check out the college/program before you think about enrolling. Ask many question and questions that matter to YOU and I don't think you can go wrong....

    14. Re:A Warning by Anonymous Coward · · Score: 0

      DeVry has one of the worst reputations in the Tech Industry. I hope you were joking when you said that. I don't know anyone who would hire a DeVry graduate. You are fucked.

    15. Re:A Warning by Anonymous Coward · · Score: 0

      Last time I checked, University of Texas at Austin (my alma mater) wasn't advertised between CHiPs reruns.

      Of course not. "CHiPs" stands for California highway patrol.

    16. Re:A Warning by Glonoinha · · Score: 1

      I had to change the idea that:
      'If it works, it's right'
      to
      'If it's right, it works'...

      Shit, that's the most insightful thing I have read all week. Good job Sepper, I'm going to keep that one handy.

      --
      Glonoinha the MebiByte Slayer
    17. Re:A Warning by Anonymous Coward · · Score: 0

      DeVry and similar schools popped up when there was high demand for programmers in late 90s, and when any housewife could find a extremely well paying job as a Computer Programmer, by learning "mainframe", "SQL", and "C++". That's what these schools do best - teach "mainframe" to housewives. From my own experience - there was a whole class of newly taught "mainframe programmers" that could not explain what these words mean - to me, then a regular accredited university freshman undergrad.

    18. Re:A Warning by Perl-Pusher · · Score: 2, Informative

      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.

    19. Re:A Warning by LearningHard · · Score: 1

      I've been attending a small school in south arkansas. I took a break and tried to finish my degree up a year ago. Didn't work and this is why...
      When I was there previously we only had two CS professors but both were old school in the sense that they wanted us to learn about how to solve problems, not just sit there and tell us "their" way of doing it. I loved this approach and hated leaving school. Last year I returned and the two profs were gone and replaced by two profs that were from the "new" school of thought. Neither one of them wanted us to learn anything on our own. When I would use a method I came up with instead of the crap that my teacher tried to shove down my throat I would get griped out. That seems to be a trend I've encountered at a couple of different universities. The teachers have stopped teaching how to think and solve problems and now just tell the students what they want done. I hate it.

    20. Re:A Warning by mark-t · · Score: 1
      You miss the point.

      A degree program, in general, isn't there to teach or to train you. That's just a convenient side benefit that you might get out it.

      When all is said and done, at the end of those 4 years you will have have started and completed something... something hard, something not everyone has the patience and ability to do. Having this track record can help give others more confidence in your abilities to do the job in the first place, and yourself more confidence, founded on real experience, not mere ego, that you can complete the tasks you are given.

    21. Re:A Warning by cavemanf16 · · Score: 1

      Well, if the previous poster is anything like me, then he knows that the state schools he attended sucked in whole different ways from DeVry, couldn't stand the State school institutional learning program, (i.e. actively try to flunk 30% of your 500+ person undergrad English and History classes to keep the over-achieving work-aholic kids in the priveledged engineering programs later down the line while encouraging 5-6yr programs for half the students to keep those athletic programs raking in the money - which a whopping 10% (maybe) of students can ever put on their resumes) and after working a couple years doing something he enjoyed finally decided on the type of "piece of paper" he wanted hanging on the wall as his undergrad degree.

      Listen you 31337 big state school undergrads: DeVry is not so very different from your big 20,000+ college campus filled with drunkards, potheads, and sorority chicks. There are a good deal of DeVry students I see which own their own businesses already, have salaries comparable to or better than what state school college grads twice their age currently make, or generally are just more interested in learning than some of the recent state-school undergrad meatheads and sorority girls I live around. And I'm one of those DeVry types.

      Yes, I'm ranting about a somewhat offtopic issue, but remember: just because I decided to not fudge my way through a 'Communications' degree fresh out of HS because I found that I wasn't ready for such "committment" to getting the undergrad degree at the time in no way reflects my ability to be a productive worker, an intelligent scientist, or an entrepenaur (sp?). The connections people make at schools like MIT or Stanford are going to generally be much better and more frequent than at schools like DeVry, I'll give you that, but connections to other smart folks does not a smart person make.

    22. Re:A Warning by Sepper · · Score: 1

      Good job Sepper, I'm going to keep that one handy.

      Thank you but the actual credit is not mine. I didn't come up with this idea... But I don't remember where I've first seen it...

      --
      I live in Soviet Canuckistan you insensitive clod!
    23. Re:A Warning by comedian23 · · Score: 1

      Go to UALR. I know it sounds crazy but seriously consider it, they have a good CS department. Take classes with Dr. Minsker and Dr. Ford. The higher level classes are GREAT and will give you a lot of opportunity for creativity, while still teaching you how to solve the problem. Most of the programs for Dr. Minsker you can write in any language you want, from COBOL to C to LISP. I can't recommend their department highly enough, especially the junior and higher courses.

    24. Re:A Warning by LearningHard · · Score: 1

      Thanks, I'm fixing to move up to that area anyways and was considering attending UALR. It's good to hear that about the school.

    25. Re:A Warning by jneemidge · · Score: 2, Interesting

      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.

    26. Re:A Warning by Anonymous Coward · · Score: 0

      look at the people that didnt go to college.
      and tell me how much they changed and how there interests have expanded.

    27. Re:A Warning by grendel's+mom · · Score: 1

      As a programmer of 8 years with a CS from a major university, I have news for you: writing software is EASY. Designing and managing software proejcts is difficult. THAT is why coding is being out sourced. It is relatively straight forward once a good design is in place. Coding is easy...design is tough.

    28. Re:A Warning by rrhal · · Score: 1

      CS degrees really don't teach you how to program. Getting a BSCS shows you have some analytical skills, some writing skills, and enough intelligence (or stubborness) to finish a college degree.

      There are mathematicians that couldn't program their way out of a wet paper bag - but all good programmers seem to have some faculty with math. I think the analytical skills needed to debug a nasty bit of code are pretty similar to those needed to constuct a complex proof.

      I have a an MS in Math - I was mostly interested in numerical methods and digital Time Series Analysis so I was doing some programming. The math department was a small one. One sememster I needed a class and the only thing available was Database so I took it.

      The class consisted mostly of doing "proofs" in relational algebra. Being a math major I was good at this. I think I had to write a very basic SQL select statement - but I learned almost no SQL. This teacher was interested in theoretical underpinnings of relational database. Getting a A in this class started a 20 year career in database programming - although it should be clear that I got almost no practical skill in the class. Within 5 years I was a DBA of a database in which each row represented hundreds of thousands of dollars.

      That's the thing you run into in the University setting in Computer Science. These people don't program; they write papers for journals. What they know best is how to do theoretical CS. This is a cool thing to be exposed to - it gives you a view of what people are working on and what's next. And math is the window to this view. But it doesn't teach you anything about programming.

      Bottom Line - I haven't done an integral at work ever, I did some spherical trig (because I had the math degree) once 15 years ago, and a little 9th grade algebra from time to time. You wont use math to program most applications. However, math makes you a better analyst. (however it does nothing for your spelling)

      --
      All generalizations are false, including this one. Mark Twain
    29. Re:A Warning by naryco · · Score: 1

      Most people seem to agree with the rather heavy emphasis of mathematics on CS degree, but I don't. And yes, I do have Msc degree in CS and almost 10 years of work experience on software development. While I agree that mathematics are very important in certain fields of software development, I would say that for most software development jobs the only benefit of the math classes is the supposedly improved logical thinking.

      Nowadays, and even more so in the future, development tools take care of most of the work that previously have been done by software developers. They optimize your code, and they provide the algorithms and data structures. The people who still need math are either doing low-level programming or work in some special field such as games development. I would estimate that those jobs are less than 30% of all programming jobs, and that it will decrease in the future.

      In the software projects I have been involed with, the key shortcomings have typically been in requirements gathering, project management, version control etc. I.e. while we did good software we got it done later than we estimated and it did not meet the real requirements of the customers even though they of course had approved the requirements documents. Thus, increasing the understanding of software development processe and project management at the expense of mathematics is not necessarily a bad idea in my opinion. Personally, I remember very little if nothing of all the math courses I had to take at my university even though it is not THAT long ago.

    30. Re:A Warning by Big+Jason · · Score: 1

      Fucking t-sip, =).

    31. Re:A Warning by WindBourne · · Score: 1

      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?

      It is not really about offshoring. It is hard to teach good technical studies. Most of these school that claim CS (and even CE) are actually doing CIS and have been the whole time. Devry, itt, phenix, etc. are not worth it. Never have been and never will be. If you do not get a good, well-ground program, you will not have the ability to deal with changes that come. Think about aspect programming that is coming. How about logic coding (mercury, prolog) or functional (scheme, lisp, R)? What is important is understanding the algorythms, and structures that underlie each approach (procedural, funcational, OO, aspect, Logical, aspect, etc). As times and experience change, so will our approachs. Simple degrees will not prepare you for them.

      --
      I prefer the "u" in honour as it seems to be missing these days.
    32. Re:A Warning by fitten · · Score: 1

      Thanks, I'm fixing to move up to that area anyways

      Spoken like a true Southerner (I am one too, btw) :)

    33. Re:A Warning by UconnGuy · · Score: 1

      I agree with you. I remember when I was graduating from UCONN in December of 2002, I was pissed because I thought that nobody would want me and I knew basic programming skills (C++, JAVA, basic SQL). I thought the theory was meaningless. Now I have a great job and I find myself applying the theory more and more. I think it is generally true that it is easier to teach syntax than semantics and the way you need to approach problems. Nowadays, most languages are similar in syntax anyways (OO languages at least) and learning a different one takes a minimum amount of time (compared to learning the theory and algorithms to make the program run efficiently).

    34. Re:A Warning by Anonymous Coward · · Score: 0

      Any person who doesn't know this already is completely ignorant.

    35. Re:A Warning by superflippy · · Score: 1

      It's good to hear that. When a friend of mine graduated with her degree in Math & Computer Science (our Uni didn't have a plain CS degree), she fretted about having learned so much theory and so little "practical" stuff. She read one of those "teach yourself C++ in a weekend" books and credited that with getting her her first job. But several years later, she is a successful database programmer, and I don't think it's all due to that one book. Being able to check off the skill boxes will get you in the HR door, but it's real knowledge and understanding that will get you farther.

      --
      Your fantasies contain the seeds of important concepts.
    36. Re:A Warning by Anonymous Coward · · Score: 0

      I graduated with BSCS from Purdue University and had a fellow coworker from a previous employment tell me my thinking was 'too theoretical' and not 'practical enough for a real world application' - you could of heard my jaw hit the ground.

    37. Re:A Warning by CHICK543 · · Score: 1

      Amen to that,
      I was in our school's CS department. They were so freekin rigid. I took a class one semester where I learned about B trees, hash tables and the evils of recursion. What do you know, the next class in the CS track, I am forced to create a senseless program where recursion is required. I did the program non-recursively because it was immensely faster. By this time, re-writing the code would have taken WAY too much time. I argued that nonrecursive is better because it's faster and my professor decides that I should be cast into the pit and suffer a failing grade on the project simply on the basis that recursion is required. It dropped my grade at least a full letter grade and as a result (combined with a few other experiences) I dropped out of the CS program.
      I am now in the IT program. There is still some of the same crap, but I might be able to work with the professors. We'll see.

    38. Re:A Warning by jtwJGuevara · · Score: 1

      You'd be amazed at the % of college students who simply jump through hoops for their shiny piece of paper with the word "degree" on it. These are the same students who sleep and yawn through lectures and then go back to their residences, drink beer, watch the Real World, and sleep for the rest of their collegiate existence. The unfortunate thing is, most of these students have immense potential, but don't know how to learn because they are hand-held, catered to, and not challenged in their K-12 public education. They will never "learn how to learn" unless that quality is pumped into them by their college faculty and advisors.

    39. Re:A Warning by Perl-Pusher · · Score: 1

      I maybe wrong on the no outside accreditation, I last looked at a technical school in the 1980's. There is a problem with technical schools perception among companies. There are more than a couple in the Hampton Roads area of Virginia. I interviewed several graduates from ITT tech. & ECPI (local) for my previous employer, they frowned on their educational background because of a lack of higher Math skills. That was why they weren't selected. We decided on recent William & Mary and Old Dominion graduates. They contracted for NASA and Jefferson Labs and the DOD mostly Navy. I just looked at the websites from those schools and they are listed as local employers for their graduates. Well they may be getting jobs there it's not for too technical. I know of one computer 'operator' who worked for the company and he graduated graduated from ECPI.

    40. Re:A Warning by Anonymous Coward · · Score: 0
      connections to other smart folks does not a smart person make

      Such connections are not sufficient, I agree. But they are most certainly necessary.

      Sorry, proleboy.

    41. Re:A Warning by Anonymous Coward · · Score: 0

      I suppose you don't give a flying wingnut about such purely theoretical concerns, but recursive vs. iterative is a fundamental distinction to understand in C.S., and there are cases where one is better to use than another. If you only do things one way (iteratively, for example), you lose all the insight of knowing how to do things both ways, and the pros/cons.

      The fact that you did your project without using recursion, even though it was required, shows that you missed the point, because you didn't learn anything in that course about implementing recursive algorithms, which I imagine was one of the points. I imagine you were a real hardass about it, too, refusing to redo your project or whatever because you insisted you were right, and your professor was just wrong/dumb. Not everything can be done iteratively, and some things are just more easily done recursively. In fact, tail recursive Lisp can do everything recursively, and just as fast or faster than an iterative language.

    42. Re:A Warning by Anonymous Coward · · Score: 0

      Judging from the quality (or lack thereof) of the sw architects I've had to deal with, I'ld say they should be outsourcing the design.

    43. Re:A Warning by Lodragandraoidh · · Score: 1

      It was pumped into me by the US Army...lol

      As an older student, I learned alot - not only about the computer science art as taught by the school - but in my own independent scholarship. I was self motivated and deeply interested in the craft, unlike most of my younger school mates.

      My young peers did indeed go back to the frat house and drink beer. I have a good job now - while I have to fix what they (or others like them) break on a daily basis. Of course, I have some good job security, as a result.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    44. Re:A Warning by 10am-bedtime · · Score: 1

      deceit and trickery is the nature of most management. the managers you want to work for use their skills of deceit and trickery against time and over-expectation. the rest use their skills of deceit and trickery against both those above and below them in the organization. should you become a manager, try hardest never to deceive yourself into believing otherwise.

    45. Re:A Warning by KReilly · · Score: 1

      whoop!

    46. Re:A Warning by Big_Al_B · · Score: 1

      Several comments:

      I know the pain of senseless assignment requirements. One time I arrived 10 minutes late to a Csci class (after sitting in traffic behind a rush hour fender-bender for 20 minutes) and handed in my typed assignment. Typed. "Assignments are due at the begining of the class-0 [zero]" was the grade written on the front page when I got it back. I had A's on every other test and assignment, but this still dropped me to a B overall.

      Curse the rabid bitterness of Ph.D's who've just suffered through their dissertations! Ugly people, the lot.

      HOWEVER, you should pay close attention to the Anonymous Coward who also replied to your post. I couldn't say it better, other than to add a bit.

      Recursion is a vital algorithm, with applications in numerical computing and rendering that iterative algorithms couldn't even address. A good programmer is conversant in both styles.

  3. oh good lord yes by 74nova · · Score: 3, Insightful

    we have to know math because the math majors cant program, usually. as a programmer, youll have to work with NUMEROUS different people from all sorts of other fields. you might be designing heat control systems, biochem simulation software, or electronic simulation software like me. the more you know the better in this field, i think.

    --
    use your turn signal! you people act like it's divulging information to the enemy
    1. Re:oh good lord yes by ad9798 · · Score: 1

      If everything goes down to toilet after got a degree of CS due to all those outsourcing and current economy, we can at least get a job as a math teacher.

    2. Re:oh good lord yes by ponxx · · Score: 5, Insightful

      > we have to know math because the math majors cant program, usually

      Conversely this is the very reason why physicists and mathematicians have good job opportunities in IT, consulting or banking. In many cases it's easier to teach a physicist programming (or economics) than to teach a programmer the relevant understanding of mathematics.

      Of course it depends on what you're progrogramming and of course a programmer who is good at the kind of maths required for the job will have the edge anyway...

    3. Re:oh good lord yes by 74nova · · Score: 2, Insightful

      agreed. we have more programmers at my office that are engineering than computer science majors. i think it is easier to teach a physicist programming than vice versa, but its difficult to teach either to be good at the other. id like to think that ive learned something important in the last 4 years that a mathematician couldnt pick up in a couple months. conversely, i dont think i could pick up biochem quickly. you have to be good at taking on a thought process completely foreign to what youve known in the past, i think.

      --
      use your turn signal! you people act like it's divulging information to the enemy
    4. Re:oh good lord yes by Anonymous Coward · · Score: 0

      omg, u r n asshole

    5. Re:oh good lord yes by pjt33 · · Score: 1

      "I mean, it isn't as though I had to do this, you know, I could be making, oh, 3000 dollars a year just teaching." -- Tom Lehrer

    6. Re:oh good lord yes by ucdoughboy · · Score: 1

      Thats not true, i'm a cs and math double at CAL. Thinking back math has helped me alot with critical reasoning, you'd be surpised after doing obscure profs on theorum you'll never use in real life can make you good at picking out bs from other programmers.

    7. Re:oh good lord yes by JohnRambo · · Score: 1

      The ability to do symbolic computation has nothing to do with the field one selects but is more an innate ability. You will find people who are good at both data structures and numerical analysis... Its just a question of training and having exposure to both...

    8. Re:oh good lord yes by 74nova · · Score: 1

      what part of what i said is not true? i said most, and that was to imply people who are double majors in cs as well or who program are excepted. i dont see how what you said is anything contradictory to what i posted. in fact, i agree with the second sentence completely.

      --
      use your turn signal! you people act like it's divulging information to the enemy
    9. Re:oh good lord yes by 74nova · · Score: 0, Offtopic

      Perhaps, good sir, I am somewhat unique in this fact: I am completely capable of being lazy when I type on /., but I am intelligent. I have above average grammatical and spelling skizzilz, but I do not find it necessary to properly keep them displayed while posting on message boards. If I were being absolutely proper, I would not have even used contractions at all. I will admit to poor sentence structure on your second point, that was terrible.

      --
      use your turn signal! you people act like it's divulging information to the enemy
    10. Re:oh good lord yes by das_cookie · · Score: 2, Insightful
      we have to know math because the math majors cant program, usually.

      Is this your opinion, or do you have some sort of factual evidence to back up this claim? I have a math degree and can program quite well, thankyouverymuch. I know two PhD's in math who can sling code better than most CS majors ever will. I know other math degree holders in the programming field who are extremely competent. While I have no actual statistics to back up my observations, at least I have anecdotal evidence gained over my 25+ years in the IT field, and I find your statement to run counter to my observations.

      To relate this to the original article: the article is dead on, but I'd take it a step further. Ditch the CS degree. Get a math degree and use your electives to learn about computers, programming, databases, and software engineering, the emphasis being on practical rather than theoretical. This approach will likely gain you a minor in CS as well, an impressive 1-2 combination. By the time you complete the CS degree in the article, you're 2/3 the way to a math degree anyway. Want to distinguish yourself from the crowd? The math degree folks hold an edge over CS degree folks in this regard. If you can do math, you can do anything you set your mind to.

      That said, I'm not slamming CS majors. I know several of them, too, who are all quite proficient at their careers. IME, the book on CS majors is that too many of them don't pay enough attention to the math side.

      --

      You! Yes, YOU! Out of the gene pool!

    11. Re:oh good lord yes by dawdygod · · Score: 1

      i think you need to take an english grammar course, i think.

    12. Re:oh good lord yes by Palindrome99 · · Score: 2, Informative

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

    13. Re:oh good lord yes by TedCheshireAcad · · Score: 4, Insightful

      I beg to differ. I am majoring in Mathematics, and have had to take a year and a half of programming. I am fluent in Java and C++, and I use them both on a regular basis in my course study and research.

      In a Linear Algebra class, it is useful to check yourself by computer, and you can really get a good understanding of operations like inversion, Gaussian reduction, and determinanat computation by writing the algorithms.

      Moving on to a course in Nonlinear Dynamics, a computer is almost an essential tool for modeling dynamical systems that can't be solved in closed form. I had to write my own methods in Mathematica to model these sytems, seek out points of equilbria, and examine their stability. Want a hard core programming exercise? Write a program that will attempt to find Lyapunov functions for a given dynamical system - that will really test your self-worth as a programmer.

      Even in a course like Abstract Algebra, you're going to need a grip on programming to get a deep understanding it, for example, reducing polynomials in GF(256), as is done in Rijndael. You can sit there and mechanically do it out by hand if you like, but if you want to get anywhere, use a computer. Write it in C++, another good programming exercise if you want to link mathematics and computer science.

      Most math majors in their time will need to take a numerical analysis course, which will include most of what I have previously mentioned. Numerical Linear Algebra, root-finding, interpolation, and differential equation solving. It's a much larger challenge to write an RK4 solver for a given differential equation than it is to move information from a database to the web. You'd have alot more self-respect as the 'computer guy' if you wrote a program to fit an optimal Bezier curve or cubic spline to a set of points, instead of simply hitting 'smoothe curve' in Excel. You'd also understand why the 'smooth curve' function doesn't work so well sometimes.

      just my $.02.

    14. Re:oh good lord yes by NichG · · Score: 2, Insightful

      Actually, undergraduate physics programs often include some basic programming classes as part of a lab component (not hefty programming, but the kind of stuff needed to do data processing). And by the end of it, most people end up having some knowledge of programming just because it was needed or useful for one of their other courses. The impression I get is that the physics software at most universities is written by physicists, as opposed to non-physicists who were given the algorithm to implement.

    15. Re:oh good lord yes by eric76 · · Score: 1
      we have to know math because the math majors cant program,

      Hahahahahahahahahahaah

      There are some math majors who don't want to program, but just about every programmer or software developer I've ever met who had a math degree were well above average. Those with master's degrees have always been outstanding.

    16. Re:oh good lord yes by mlu035 · · Score: 1

      I am not sure how the system works in the US, but here in the UK, most maths degrees require that the students program software during their course. In my 5 years working as a programmer I have noticed that some of the best programmers I have worked with have had maths degrees. I therefore drew the conclusion that either people with good maths degrees are significantly more intelligent than most other subject graduates, or that maths graduates' minds are better suited to programming. My French degree on the other hand doesn't help at all.

      --
      "Feel the force, mother fucker." (Shaft Windu)
    17. Re:oh good lord yes by ph43thon · · Score: 1

      Saying,"Even in a course like Abstract Algebra, you're going to need a grip on programming to get a deep understanding of it." counts as 'fighting words' as far as I'm concerned. When it comes to thinking about homomorphisms between different vector spaces, it's very easy just to lean on Matrix representations.. which naturally is what programming would require. BUT the higher structure of homomorphisms is much more meaningful if you eschew matrices and focus on diagramming what's mapping to where and how.. it'll give you a better understanding of Kernels and Quotient Groups etc..

      Also, who says that the answer is what is important when it comes to finding roots (or reducing polynomials)? For you to be able to program an algorith to find roots, you have to do it by hand or think through the process to get an insight into ways to speed up the process. Maybe you're assuming one must need to write a program, in order for them to be prodded into really thinking about the processes. I'd say a "real" math major doesn't need any prodding to think about the deeper structures of what they're learning.

      p

      PS I like how you use all your fancy math terms. It sounds smart to people who don't study math.

    18. Re:oh good lord yes by Anonymous Coward · · Score: 0

      wow i've never seen so much masturbating done in a slashdot post ever!

      -- a fellow math major who shakes his head at you for trying to look cool but coming off as a prick with knee-deep knowledge of math

    19. Re:oh good lord yes by iso_bars · · Score: 1

      Having just sat (2 hours ago) a "Mathematical Methods and Graphics" exam in my first year Computing MEng degree course, I can happily clarify that although math majors may not be able to program... Lots of CS Majors can't do the maths!

      Argh. If i ever have to see another complex number, I may shoot myself.

      Oh, and if anyone at Imperial is reading this... hope yours didn;t go as badly as mine!


    20. Re:oh good lord yes by Anonymous Coward · · Score: 0

      RK4? Just put in the formula... k1=blah, k2=blah, k3=blah, k4=blah.. then yn+1=yn+h*(k1+2k2+2k3+k4)... etc... you can look that up on online. Database on the other hand requires understanding queries, sql, interfaces, api, etc... much much larger beast. If you want to know WHY you are using a RK4 system rather ABM for example then that will take some theory.

      You are learning a tool in both cases, but don't let the fact that it's math make you feel holier than god.

    21. Re:oh good lord yes by Oligonicella · · Score: 1

      Puh-lease. I've had the 'pleasure' of working with two physicists and several mathemetaicans in my IT career. *None* was worth a shit. Couldn't touch-type, couldn't write logical code.

      Like you, they seemed to think that programming and design were 'easy'. Utter bullshit.

    22. Re:oh good lord yes by ponxx · · Score: 1

      > Puh-lease. I've had the 'pleasure' of working with two physicists and several mathemetaicans
      > in my IT career. *None* was worth a shit. Couldn't touch-type, couldn't write logical code.

      How ironic, accusing others of poor touch-typing skills...

      But seriously, just because you had some lousy colleagues with a science/maths background does not prove that all of them are bad. I know a lot of CS majors that are completely useless because they did not keep up with technological advances over the last 10 years, but that doesn't mean CS majors are all terrible sys-admins.

      For most any career out there the general skills you learn in your degree are worth much more than any detailed information (with a few exceptions like medicine). Logical thinking and understanding the world in terms of models and parameters are things a good maths or physics degree will teach and they're invaluable for a good programmer. Of course they need to learn to program, but so do most CS majors.

      A lot of IT recruitment (certainly in the UK) actively targets maths and physics graduates, i can only assume that they must have had some positive experiences....

    23. Re:oh good lord yes by sql*kitten · · Score: 1

      we have to know math because the math majors cant program,

      In my experience, all the heavyweight programmers come from maths, physics or engineering backgrounds. The CS types are relegated to coding up GUIs and doing customer support. Why? Because they focus on the computer, everyone else focusses on the problem to be solved.

  4. HS math question. by grub · · Score: 5, Interesting


    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.

    --
    Trolling is a art,
    1. Re:HS math question. by JM_the_Great · · Score: 1

      Evidentally our Physics classes aren't too strong either... you really shouldn't have to explain all that to him :)

      --

      --Justin Mitchell
      "2nd Place is a fancy word for losing" --Bender (Futurama)
    2. Re:HS math question. by Xiaotou · · Score: 1


      Silly me! I read that as "my father was still able to obtain fuel for the fireplace."

    3. Re:HS math question. by taped2thedesk · · Score: 1
      He said "I've never used graph paper."

      Graduated in 2001 - used graph paper for geometry, or at least had a piece of xeroxed graph paper that we'd put under our loose-leaf so that we didn't have to buy special paper. It's the reality of non-existant school budgets these days.

      Non-geometry graphing has been replaced by graphing calculators (TI-83 is very common). Graphing is still taught though; we spent the first few weeks of pre-calc learning the graphs of various important functions (e^x, 1/x, trig and inverse trig functions, etc) and being tested on being able to graph them and the various shifted/stretched permutations of them (without a calculator).

      Are you sure he just didn't know it by the name "graph paper"? I can't imagine that you could make it through high school without at least seeing it a few times.

    4. Re:HS math question. by grub · · Score: 1


      Are you sure he just didn't know it by the name "graph paper"? I can't imagine that you could make it through high school without at least seeing it a few times.

      He knew what I was talking about, he just had never used it.

      --
      Trolling is a art,
    5. Re:HS math question. by AgentAce · · Score: 1

      We really didn't need to know about your father's ^H^H^H^Hwood...

    6. Re:HS math question. by (trb001) · · Score: 4, Insightful

      Unfortunately, graphing calculators were invented. They're the bane/saviour for many an engineer, since they allow you to get away with an awful lot when you're pressed for time, but they allow many people to skip out on the fundamental lessons of geometry. Personally, I used them in school but not before I had a firm grasp of triginometric principles, ie, I memorized sin-cos-tan tables and could figure things out on paper sans calculator.

      I'm amazed these days at what kids use calculators for. My buddies fiance is student teaching a class of 8th graders and says that for simple *addition*, kids are breaking out their TI's. Really, if you can't add 96 + 48 within a few seconds in your head, you've got issues. Graph paper is going the way of the dodo, unless you're an electrical/computer engineer, then you take stock in engineering pad companies.

      --trb

    7. Re:HS math question. by Mandi+Walls · · Score: 4, Funny
      Fess up. You never used graph paper for math class. You used it for D&D.

      --mandi

    8. Re:HS math question. by Anonymous Coward · · Score: 0

      So, can your brother still get wood?

    9. Re:HS math question. by grub · · Score: 1


      haha! Not all of it but a high percentage :)

      --
      Trolling is a art,
    10. Re:HS math question. by kabocox · · Score: 1

      My buddies fiance is student teaching a class of 8th graders and says that for simple *addition*, kids are breaking out their TI's.

      When I was in HS, we'd graph the equation to solve it, or we'd type our an entire equation. 96 + 48 is an easy step, but when you have 10 problems of 10x^3 + 20(a^2+b^3)^3 where a = 5, b = 3 & x = 2 for a 5 min. daily quiz. It helps to be able to put it all in one line and solve it in one step.

    11. Re: HS math question. by Black+Parrot · · Score: 4, Funny


      > my little brother who recently turned 18 for a beer

      In my day we turned 18 without any such incentives.

      --
      Sheesh, evil *and* a jerk. -- Jade
    12. Re:HS math question. by Anonymous Coward · · Score: 0

      I lost the ability to do math in my head as soon as I found bc. This isn't a serious problem, though, because computers are everywhere. Even if they weren't, I still know HOW to do math, I'm just much slower now. If we lost all computers, I'm sure I would pick it right back up.

    13. Re:HS math question. by Anonymous Coward · · Score: 0

      At a temp job last year I coded and checked expense reports on a weekly basis ... I didn't use the 10-key calculator except when I was rushed (due to my supervisor at noon wednesday, it's 11am and I have a half dozen left). I looked on the hand addition and such as mental exercise.
      My supervisor disagreed, but he was an engineer.
      (too lazy to log in)

    14. Re:HS math question. by Ctrl-Z · · Score: 1

      Practice. If you start without a calculator, you can easily work up to the level where you can do that type of quiz without one. The problem is that the calculator has become a crutch, and people don't seem to care.

      --
      www.timcoleman.com is a total waste of your time. Never go there.
    15. Re:HS math question. by Anonymous Coward · · Score: 0

      I think he was trying to explain the 20 year difference in ages between him & his half-brother.

    16. Re:HS math question. by Anonymous Coward · · Score: 0

      when you have 10 problems of 10x^3 + 20(a^2+b^3)^3 where a = 5, b = 3 & x = 2 for a 5 min. daily quiz.

      What kind of problem is that supposed to be? Are you just evaluating the expression?

    17. Re:HS math question. by Anonymous Coward · · Score: 0

      Try using dc instead of bc (if you haven't already). You might like it.

    18. Re:HS math question. by comedian23 · · Score: 1

      LOL. You beat me to this comment! I don't remember using it in school, but I sure remember drawing countless castles and underground dungeons on it. I actually used it for an old-school game of Car Wars less than 3 weeks ago.

    19. Re:HS math question. by Anonymous Coward · · Score: 0

      What do schools use now to teach geometry?

      Hm, in my day (about 5 years ago), geometry was mostly proofs, and any construction that you had to do did not require graph paper. I mean what's the point of constructing a 90 degree angle when you can just follow the lines?

      We did have to graph equations in algebra ("algebra 2", I think, which I got through just before they moved to after geometry), but accuracy wasn't an issue, so we could fake it on regular lined paper.

      For science classes we had to do graphs, and they had to be straight, but iirc graph paper was only a strong suggestion. If you could get a nice looking graph on blank paper, that was fine, but few could.

      [0] I'm 38; mom died in '82, dad remarried and could still get wood.

      Ok, I vote for a definite TMI on this one...

    20. Re:HS math question. by damiam · · Score: 1

      As a current high school sophomore, I can say that I've used graph paper (although nto extensively) in every class from prealgebra through precalculus. I've never seen computers used to teach math, although graphing calculators are enormously popular.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    21. Re:HS math question. by Matthew+Weigel · · Score: 1

      Graph paper showed up in my 6th, 8th, and 10th grade math classes, the last being about ten years ago. Then again, if your 18-yo brother was drinking beer in a pub, perhaps we are in different areas of the world...

      --
      --Matthew
    22. Re:HS math question. by Anonymous Coward · · Score: 0
      I'm 38; mom died in '82, dad remarried and could still get wood.

      I don't even want to know how you know that your dad still gets "wood".

    23. Re:HS math question. by NotAnotherReboot · · Score: 1

      I would have replied sooner, but I was still trying to add those two numbers without a calculator.

      I think the answer is 124.

    24. Re:HS math question. by wass · · Score: 2, Funny
      It's even worse than you imagine. I was a TA for the introductory physics course for biological majors at Johns Hopkins University. Because of things like graphing calculators, as well as the ability to store vast amounts of textbook information in calculators/PDA's, students weren't allowed to use calculators on the exams (so as to level the playing field). In turn, the math was made easier (ie, no finding the square root of 743.2 for instance).

      It was really sickening that several students couldn't do relatively simple math or utilize scientific notation. For example, a simple quiz question could boil down to the student multiplying 4000 x 0.00007 and not being able to do it! Some students told me to my face that they couldn't do this type of stuff without a calculator! Sometimes after I explain it to them and point out how obviuos it is, they kind of slap their foreheads for not knowing it. But still, these kind of simple scientific notation calculations should have been taught to them at least in high school, if not earlier.

      The scary part is this school is one of the top top pre-med schools, and many of these students will go on to become top doctors in their fields. Some of whom were baffled by simplistic mathematical calculations.

      An amusing anecdote, although probably urban legend, goes as follows. Understand that for pre-meds physics is usually considered the hardest class because it's the only one where full-blown memorization doesn't work. A pre-med, frustrated with his/her physics class goes to complain to the professor. He/She says "Physics is stupid, why do pre-meds need to know physics anyway?". The physicist responds "Oh, it saves lives." Premed inquires how. Physicist responds "It stops the idiots like yourself from becoming doctors."

      --

      make world, not war

    25. Re:HS math question. by kabocox · · Score: 1


      What kind of problem is that supposed to be? Are you just evaluating the expression?

      I know I had a hard time thinking of an example right of the top of my head. Usually you'd have something like the quadratic formalua and you'd have to solve it for some point. It is hard the couple of times, but gets really easy. Ax^2+Bx+C=y There were several classes of problems that just find the consansts or fill in what you know, plug in an x or graph an y as a consant and just find the intersection of the lines. There are dozens of ways to solve problems. We'd find one that we'd like and stick with it.

    26. Re:HS math question. by SleazyC · · Score: 1

      I am a high school senior graduating this year and I must admit that I am not the best in math, and did initially want to go into CS, until I saw the heavy math side of it and pretty much knew I would never make it through it.

      What I observed through my school years is that teachers are relaying heavily on the graphing calculator to teach students more and more. Instead of teaching them the fundementals and concepts, it all comes down to mechanics. I finally had a great teach in AP Calculus this year that would not let us use calculators unless totally necessary and who went through proofs and the concepts with us. I have learned more this year then I did in my past three years.

      Now that I look back on it, I wish I had had more teachers similar to her who would push the concepts, and make us work problems out by hand instead of just pointing us to a graphing calculator

    27. Re:HS math question. by Anonymous Coward · · Score: 0
      I'm amazed these days at what kids use calculators for. My buddies fiance is student teaching a class of 8th graders and says that for simple *addition*, kids are breaking out their TI's. Really, if you can't add 96 + 48 within a few seconds in your head, you've got issues.
      Calculator???

      I'd rather just wait for "Microsoft Add Ninetysix to Fourtyeight" to be released.

    28. Re:HS math question. by (trb001) · · Score: 1

      By the time you've reached a certain level, IMHO college, I think that a regular ol' calculator (read: not something with memory) should be allowed on most exams. I say this mainly because I remember the frustration of messing up a simple calculation that then led me down the wrong path. Should I be able to do a simple calculation? Yeah, but during a test you're stressing and rushing and I can understand screwing up and adding or forgetting a negative sign.

      Calculators with memory, though, should just not be allowed...I'll admit to putting in every single physics equation I ever came to, and my calc is possibly the only reason why I got through "Signals and Systems (Networks II)" in college.

      --trb

    29. Re:HS math question. by eric76 · · Score: 1

      When I was teaching math, I would let the students decide whether or not calculators would be allowed.

      But I made sure they understood that if calculators were allowed, there would be fewer problems that they would help on.

      For a trivial example, instead of "If John and Mary have 13 apples and oranges ... " it would be "If John and Mary have X apples and oranges.

      Also, I was more concerned with how they were working the problem than the results. A simple calculation error was a minor deduction. Having the right answer without sufficient work to show they knew how they were doing would result in no credit at all for the problem.

    30. Re:HS math question. by wass · · Score: 1
      I agree with you completely. Calcaulators SHOULD be allowed. At this level we don't care about student's arithematic, or even algebra. Maybe some of the applied calculus.

      But the problem is with people with super-duper graphing calculators and storing tons of extra 'equations' that they would otherwise have to derive, etc. That's where the problem came from.

      We decided in the class that the rich students with the fancy calculators shouldn't have an advantage over students that couldn't buy one. Therefore no calculators allowed at all, with the values of the physical parameters chosen such that the numbers work nicely.

      We were just shocked that some students couldn't do the relatively simple arithematic without their calculators.

      --

      make world, not war

    31. Re:HS math question. by wass · · Score: 1
      A simple calculation error was a minor deduction.

      Yeah, that's how we generally ran it. Partial credit for everything, we didn't care too much about the final answer. And as i explained in a different reply above, we didn't want to give students with fancy calculators an advantage over those that couldn't afford one.

      Anyway, many of the problems we did were in algebraic form where calculators wouldn't have helped (unless it had some symbolic software similar to Mathematica). But of course no introductory physics class is complete without being able to predict and calculate physical measurement values. Thus, some of the problems were of the numerical variety.

      But yes, we're of course more concerned about the general problem than the results. And if they left the answer as 3000 x 0.0003 they'd only have a small penalty, as long as their methods were correct. But it was still shocking that they would tell me to my face that they couldn't do this without a calculator.

      --

      make world, not war

    32. Re:HS math question. by khold · · Score: 1
      Really, if you can't add 96 + 48 within a few seconds in your head, you've got issues.


      I have issues with this statement. Some people actually have trouble doing math in their heads, without the fault of a calculator. For instance I am getting As at my university but I usually need a calculator for what most people would consider simple math because I can't figure it out in my head very quickly. It isn't the fault of the calculator either. Even back in elementary school, when I wasn't allowed to use a calculator, I was still really really horrible at doing math in my head. The calculator doesn't necessarily make someone shitty at math.
      --
      rm -rf sig
    33. Re:HS math question. by eric76 · · Score: 1

      A good friend of mine in grad school used to regularly set up the problem, but never solve it.

      I asked him why he did it that way. He said that some profs who will take off half or more for a simple calculation error but won't take off anything if you set everything up right. So, at some point, he had quit doing calculations on tests.

      My guess is that although the guy was brilliant, he was prone to making minor errors on simple calculations.

    34. Re:HS math question. by Anonymous Coward · · Score: 0

      Personally, I don't understand what's wrong with letting people use a basic 4 function or scientific calculator; they aren't very expensive, so it's no big deal to require people to get one if they only have a graphing calculator. (And I very much doubt most people are going through these classes with no calculator at all, since you generally get tricky decimals in any practical problem.) I always toted around a scientific and a graphing calculator (just a TI-82, although it's starting to show its age in how long I need to wait to compute simple parametric curves).

      I almost never use the graphing calculator unless I want to solve the same equation repeatedly with differing parameters (the table features are especially handy for this sort of thing), or a really long expression where the ability to recall and edit when you make a mistake is really invaluable. Still, it always makes me feel more comfortable to have the scientific for even simple calculations, because I can run the computation quick enough to check it several times in a row.

    35. Re:HS math question. by wass · · Score: 1

      i've never heard of anybody taking off half or more for simple calculation mistakes. For difficult problems w/ lots of calculation (usually non-numerical but strictly symbolic) I don't take off any points for minor mathematical errors. If they do something conceptually wrong, e.g. integrate over the wrong regions, etc, then I might take off a point or two.

      --

      make world, not war

    36. Re:HS math question. by Anonymous Coward · · Score: 0

      Isn't that the truth. I used to spend maybe 50-90% of my test time going through minor arithmetic errors. :) In retrospect, it probably would have been smarter to do just what your friend did, and worry about the calculations if I had free time at the end.

    37. Re:HS math question. by Anonymous Coward · · Score: 0

      Most people I know can't add 96 + 48 in their heads. Keeping everything straight can be quite tricky, because you have to carry this and that and whatever. If you're quick enough to realize you can round one number up (96 to 100, then take the 4 off the 48 so it's 44, and you get 144), or maybe break it down by common factors (2 * (48 + 24) = 4 * (24 + 12) = 12 * (8 + 4) = 12 * 12 = 144; doesn't work too well for this problem, but it's gangbusters for others), then yes, you can do it in your head easily enough.

      If there isn't a convenient shortcut, though, I find doing the math in my head to be rather tedious, since I tend to forget what I've computed already, and have to go back and redo it. I don't think most people are different in this regard. Doing math in your head is mostly about these shortcuts, but usually I just round off and estimate the answer, since if I'm doing it in my head it probably wasn't very important. When doing any sort of tricky math without a calculator, and when the answer is important, I absolutely have to seek out something to scribble down my working results on, even for a simple addition/multiplication problem.

      Perhaps it'd be more relevant to ask how many people can do long division in their heads (at least very quickly). You'll find most people can't. :)

    38. Re:HS math question. by chris_eineke · · Score: 1

      We used it to play a simpler version of Go. :-)

      --
      "All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
    39. Re:HS math question. by Anonymous Coward · · Score: 0

      haha...(I'm aware the above is a joke)
      96 + 48 =
      take the 8 and 6
      take 2 from the 6 and add it to the 8 to make 10 and 4
      now you have 90, 40, 10, and 4

      90 + 10 = 100
      100 + 40 = 140 + the 4 =

      144

    40. Re:HS math question. by Anonymous Coward · · Score: 0

      Read Isaac Asimov's short story "The Feeling of Power"

  5. Nail on the Head by millahtime · · Score: 5, Informative

    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.

    1. Re:Nail on the Head by 74nova · · Score: 1

      i agree totally. we have a class here at okstate called numerical methods that gives an intro to this sort of thing. newtons method, etc. there should be much more of it, i think. a buddy of mine is a double major with math and cs, which seems like a great idea to me.

      --
      use your turn signal! you people act like it's divulging information to the enemy
    2. Re:Nail on the Head by AKAImBatman · · Score: 5, Interesting

      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.

    3. Re:Nail on the Head by RetroGeek · · Score: 1

      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.

      Maybe you should break down the complex math into simpler steps?

      One of the great things I like about being a developer is that I get to work with many different subjects (businesses). Each new topic gives me a learning experience, sometimes from scratch. I am not an expert, but I can learn the basics.

      I work with SMEs from many fields. Each one needs to break down their problem into "baby steps" which I then use in the application.

      Yes I know math. I am NOT a mathamatician. Nor should I be. That is not what I do. I am not an engineer. Any bridge which I design you would not want to cross :-))

      So learn enough basics across ALL subjects to be able to understand what the SME is talking about.

      SME: Subject Matter Expert. The one who DOES know his business.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    4. Re:Nail on the Head by Kenshiro · · Score: 0, Offtopic
      (Assuming that they're still *teaching* high school math. Grrr...)


      If they did that, a child might be left behind (you insensitive clod).
    5. Re:Nail on the Head by Anonymous Coward · · Score: 0

      Yup ... that's where I've built my niche. I'm an engineer by training, but have picked up enough computer science & coding to be dangerous :)

      So, while I'm probably about average, average++ in my relatively small field, I'm one of the few that can quickly implement something quickly that's more complicated then just a quick & bloody fortran hack.

      Has definitely opened alot of doors for me career wise.

    6. Re:Nail on the Head by Kenshiro · · Score: 0, Offtopic

      Wow - some asshole thinks *that*'s offtopic?

      Fine, let me put it another way, so that an idiot without rudimentary reading skills can understand.

      High schools are not interested in you excelling at math. All their money has to go to making sure everyone can achieve the same level.

      So it's up to you to pursue higher math education. I completed up to calc 4 in high school, but I was lucky that there were other interested students and administration support. I'm not sure I would have done it if the school (more than 10 years ago) hadn't made it easy to pursue.

      But if you're a high school student who has to pursue it on your own (ie by taking a night class at a junior college), it's worth it!

    7. Re:Nail on the Head by comedian23 · · Score: 1

      Hopefully these people are programmers with two-year programming degrees, and NOT B.S. in CS. CS majors from every college I have ever heard of take a good deal of math. Remember though, programmers do not do complex math every day like engineers do so it may be that they have simply forgotten some things. Maybe just spending an hour or so giving them a refresher course would solve your problem?

      If you hired people with two year programming degrees and they don't know math I would say that is your companies fault. Not that there is anything wrong with two-year degrees but you can only squeeze so much into two years.

    8. Re:Nail on the Head by Creepy · · Score: 1

      It's not always trivial, but by complex math, do you mean implementing complex math (i = sqrt(-1)) or complex as in difficulty? Judging by your "I'm an engineer," I'm guessing the former, probably electrical or computer, which require complex math to calculate things such as inductance. Complex math may be restricted by the computer language - C and Fortran contain complex (imaginary) math libraries, but some languages don't (BASIC and Pascal didn't when I learned them on the Apple ][) which would require the rules to be implemented by hand. Still, many complex math libraries in common use need to be implemented by the programmer - quaternions, for example. These are not simple to understand - take a look at this page and tell me it's straightforward and easy to understand. I've written the things several times for 3d programs and still struggle through the equations when I try to figure them out (most people just skip the figuring out and go straight to the implementation, tho).

      Complex equations (as in difficulty), such as solving an integration on a computer from, say, n to infinity, technically would take infinite time on a computer, so artificial bounds are necessary - but what is a good infinity? This varies depending on the accuracy required, what n starts at, sometimes the type of curve/function, etc., so the programmer needs to know approximations of certain characteristics and then estimate the values. On computers, these points are estimated using several learned techniques for estimation. I've learned a few of them in school - Newton-Raphson, Runge-Kutta, Euler's method - I personally haven't used any of them in years, so I don't remember which applies to this particular case, but I know they exist if I ever need them and could probably find the one I need fairly quickly (I know the books I would look in, at the very least). Half of the problem is knowing a where to look for the solution.

    9. Re:Nail on the Head by Anonymous Coward · · Score: 0

      I hear you! I'm a programmer (of the CS major flavor) that has returned to get my masters in applied math so that I can get out of all this monkey work. Don't get me wrong, I enjoy programming, but writing GUIs and web apps is horribly redundant after a couple years, and a complete waste for someone who actually can solve tough problems. Someone earlier called such things "trade skills", and I couldn't agree more. I've already been reaping the rewards of my study already by working on GIS applications, something new and different. Want some crazy math, start dealing with map projections! Absolutely terrifying at first!

    10. Re:Nail on the Head by Anonymous Coward · · Score: 0

      What kind of class is calc 4? That's odd numbering, even for high school. Frankly, such a number really doesn't mean anything to me. If you divide up some material and number it however you feel like, without regards to standard labeling--that really doesn't give any sort of indication to *what the class is*.

    11. Re:Nail on the Head by Anonymous Coward · · Score: 0

      Where do you stop, though? At a certain point, you're going to end up practically teaching people the subject. Systems of partial ordinary differential equations don't translate in easy steps down to 1 + 1 = 2. I thought part of the point of hiring smart programmers was to reduce the workload, not increase it. :) If the poor guy has to turn the formulas into very very simple baby steps, he might as well write the code himself at that point, at least the numerically intense bits of it.

    12. Re:Nail on the Head by Anonymous Coward · · Score: 0

      If you're writing your own integrator, you probably have other issues. Granted, it's a fun exercise (which I've done several times), but if you have the resources, a well-tested, off-the-shelf integration routine is a much better choice. Why deal with the NIH syndrome? :)

    13. Re:Nail on the Head by RetroGeek · · Score: 1

      At a certain point, you're going to end up practically teaching people the subject.

      Yup, been there. I had to have a document tracking system explained to me this way.

      at least the numerically intense bits of it

      Yes, and then all the OTHER stuff is done by the developer. Also, once it is coded it can be re-run over and over. So the effort goes into a valid model, then the rest is just hardware speed.

      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
    14. Re:Nail on the Head by Mentally_Overclocked · · Score: 1

      I don't know what kind of engineering classes you are taking, but I wouldn't consider differential equations, complex numbers, Laplace transforms, and Fourier transforms high school math. And those are in a 200 level EE class, most of the stuff isn't seen until 400 level math, perhaps some in 300 level courses depending on the university.

      Cheers

      --

      Mathematician, n.:
      Someone who believes imaginary things appear right before your i's.
    15. Re:Nail on the Head by AKAImBatman · · Score: 1

      I was referring to software engineering. Can't remember the last time I actually needed to use anything more than high school + a some basic college math. Matrix math is about the most complex thing I can think of needing.

      That's not to say that you shouldn't *learn* the more complex maths, but they aren't often a requirement in most of what software engineers do.

      Sorry if I was confusing.

  6. Math is fun! by Anonymous Coward · · Score: 0

    Discrete Mathematics for Computer Science. Know it love it!

  7. Math requirements? by rworne · · Score: 1

    For my CS degree, I was required to take all the same math courses a math major would have to take. After numerical analysis, my head was spinning.

    --
    I tried every decent and legal way I could think of to resolve the issue w/the business before I rented the chicken suit
    1. Re:Math requirements? by TedCheshireAcad · · Score: 1

      then why don't you have a degree in math, too?

      you took calculus and discrete math, not modern algebra and galois theory.

    2. Re:Math requirements? by An+Onerous+Coward · · Score: 3, Funny

      My Numerical Analysis final is in 30 minutes. Can you explain the whole predictor-corrector thing? Cuz' I'm lost.

      --

      You want the truthiness? You can't handle the truthiness!

    3. Re:Math requirements? by rworne · · Score: 1

      I could have, but there was an additional semester's work to meet all the requirements for a degree in math (two more classes). Since I was already graduating and had a job lined up, I cut my losses and left. In retrospect, it was a good thing. All the math I use currently was taught in algebra. If I don't use it on a daily basis, it's promptly forgotten. If I had a math degree today, it would be a joke.

      Though the only bright point I can remember was that after linear algebra, math seemed to get easier rather than harder.

      --
      I tried every decent and legal way I could think of to resolve the issue w/the business before I rented the chicken suit
  8. Computer Science != Programming by Anonymous Coward · · Score: 5, Insightful

    Coding is not as important a part of computer science as you may think it is. CS is full of theorems and proofs. Computer science is the science of making algorithms more efficient. Programming is about implementing algorithms.

    1. Re:Computer Science != Programming by Gumshoe · · Score: 5, Insightful
      Dijkstra summed that sentiment up best:

      "Computer Science is no more about computers than astronomy is about telescopes."
    2. Re:Computer Science != Programming by UTPinky · · Score: 5, Interesting

      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.

      --
      I'm only paranoid because everyone is against me...
    3. Re:Computer Science != Programming by jshaft · · Score: 3, Insightful

      Here here! As a CS Major I couldn't agree with you more and I'm very offended when people think CS is coding. Coding is just a means to an end, nothing more.

    4. Re:Computer Science != Programming by drudd · · Score: 1, Troll

      Thank you! I can't stand how, in the minds of the masses, Computer Science = programming.

      Computer Science is fundamentally a branch of mathematics, essentially algorithm and information theory. If all you want to do is be a code-monkey, then a (good!) CS program probably isn't for you.

      Doug

      --
      Venn ist das nurnstuck git und Slotermeyer? Ya! Beigerhund das oder die Flipperwaldt gersput!
    5. Re:Computer Science != Programming by Wayfare · · Score: 1

      You know, they told us that here at VT too, but all I saw was codecodecode... Changed majors to more using computers than making them work.

    6. Re:Computer Science != Programming by wwest4 · · Score: 5, Insightful

      I have to call bullshit on this knee-jerk arrogance.

      MANY CS majors become coders, and it is a perfectly acceptable outlet for the skills, knowledge and wisdom gleaned from a good CS degree program.

      Just because some people are fortunate enough to be able to pursue a career in academe or in bleeding edge R&D or other theoretical pursuits, does not mean that good programming is not applied computer science.

      If anyone believes otherwise, have another gander at the standard courses in a modern CS degree at any reputable university. You'll find tons of software design theory that can be DIRECTLY applied to writing software.

    7. Re:Computer Science != Programming by spellraiser · · Score: 1

      This is very true. Computer Science is certainly not the same thing as programming. It's generally much more high-level, focusing on genenal solutions to problems instead of specifics. Essentially, it's a very math-based subject, in that it deals with mathematical structures and concepts, such as algorithms and abstract data types. The problems in Computer Science are quite often similar to those in mathematics - they take a very similar mix of creativity and intellect as problems in mathematics do.

      However, there are some fields of Computer Science that are less rigid, such as the study of development processes, interface design, and such. Other fields are very, very intensely mathematical; AI and graphics are prime examples. And within every field, the level of programming that you do is mostly dependent on your own interest in programming. Computer Science covers a fairly wide spectrum; it is fairly easy to find a niche that suits your skills and interest. Many Computer Scientists hardly ever program anything, while others are dedicated code-writing machines.

      Of course, it is possible to be a programmer without being a Computer Scientist, but I like to think that CS gives you a much broader and more fulfilling view of what programming is. Plus, it always helps to know some theory before sitting down and spewing out code.

      --
      I hear there's rumors on the Slashdots
    8. Re:Computer Science != Programming by Dyslexicon · · Score: 2, Interesting

      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.

    9. Re:Computer Science != Programming by tonythepony · · Score: 3, Informative

      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.

    10. Re:Computer Science != Programming by kalpol · · Score: 1

      man, that Automata Theory class nearly killed me!!! But you're right, it was CS reduced to its rubbery essence. how i miss the pumping lemma....

      --
      12:50 - press return.
    11. Re:Computer Science != Programming by Seekerofknowledge · · Score: 2, Interesting

      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.

    12. Re:Computer Science != Programming by djplurvert · · Score: 1

      I agree. What I find annoying is that so many undergrad programs that should rightly be called "software engineering" are called computer science. I would like to see a shift in programs where CS moves back into math departments and "software engineering" attaches itself to engineering departments. The are not really the same disciplines.

    13. Re:Computer Science != Programming by andalay · · Score: 1

      Haha i remember all the snickers when the pumping lemma was introduced.

    14. Re:Computer Science != Programming by fnord42 · · Score: 2, Insightful

      Finally people are starting to get it

    15. Re:Computer Science != Programming by Carewolf · · Score: 1

      It really depends on what kind of CS you talk about.

      In Denmark we have discipline called datalogy (the science of data/computation). We usually translates this to computer science in english, but in Denmark datalogy is a university level theoretical science. We no mere learn to program than math students learn to calculate. The biggest outlet is software designers and tech-managers.

    16. Re:Computer Science != Programming by SatanicPuppy · · Score: 1
      Here Here!

      I got into CS through Symbolic Logic, not through Math and Physics, so for me the true down and dirty is never going to happen. I'm never going to build a filesystem, or a super fast paging alogrythm, or a high framerate graphics application, or my own programming language.

      But being good at making those things is not the only skillset useful in programming. When you're working with those things, rather than on them, its a whole different world, and I'd rather be doing something in it than theorizing about it.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    17. Re:Computer Science != Programming by mrtroy · · Score: 2

      Dont mod that up just because the author is disagreeing.

      CS != programming. He is correct in saying that.

      And then you go off topic and say MANY CS majors become coders, and it is a perfectly acceptable outlet for the skills, knowledge and wisdom gleaned from a good CS degree program
      Well no shit sherlock, CS teaches algorithms and theory which would be used in programming, providing people with the background to become a good programmer. The parent did not say anything like CS students do not become programmers.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    18. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      But is that not his point CS theroy and a CS degree are about just that theroy its your job to apply that in industry so you can earn a living with that skill set. A CS program should teach porgramming but that is not its focus and that is fine. If you take a few pretty basic programing courses in any languae C or LISP or whatever then assuming you picked up the rest of the skills you should have, then you will have no problem teaching yourself the rest.

      I read allot of those Teach Yourself XXXYYYXXX books and others in junior high and highschool and became a releatively proficent C programer for and amature but certainly no place near the skills of a professional. Three years into my CS program at Baldwin-Wallace, I can go back and read those same books and get LOTS more out of them, particually thanks to my Descrete Mathmathematics courses. Math is an important part of CS and almost every CS question that starts out "Why" has an answer rooted in descrete math or calculus.

    19. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      Yes, there are courses about applied computer science, just as there are courses on theory. But hopefully, at those universities, like here at Vassar, you cannot graduate with a CS degree without the theory classes. That's where the science is. The applied stuff is there because it's understood that many CS graduates will become programmers, and they can take those courses to help.

    20. Re:Computer Science != Programming by lotaris · · Score: 1

      When I did CS at UC Santa Cruz it was heavy into theory, math and algorithms. The CS program there was designed to create computer scientists, not software developers. Our CS chair David Huffman (the huffman encoding guy) had never even logged onto the unix box sitting on his desk.

      See http://www.soe.ucsc.edu/programs/cs/undergraduate/ curriculum.html#bamr

      for the current program guidelines (they have a BS now, they only had a BA when I was there).

      Many of the courses are directly applicable to software development, but other than a handful of scattered classes they didn't teach programming directly.

      Bottom line, look at the website for potential colleges and see what their particular requirements are. Some are more practical than others.

    21. Re:Computer Science != Programming by deceptakahn · · Score: 1

      The longer I'm out in industry, and the more I interact with my peers from different universities, the more I thank my lucky stars I got my CS degree from UT. The theory you learn in that program will sustain you through a lifetime of technological upheavals.

      I'm a sysadmin, not a programmer, but the things I learned in Operating Systems and Computer Architecture I use every day.

      --
      deceptakahn
    22. Re:Computer Science != Programming by kalgen · · Score: 2, Insightful

      Of course many computer science majors become programmers. However, computer science is not about programming -- it's about deciding what to program.

    23. Re:Computer Science != Programming by chialea · · Score: 1

      >To explain mysef, relatively new programming languages are all just context-free grammars...

      In addition to this, you might also want to note that programming langauges are also heavily invested in type theory, which is another interesting area of computer science.

      Possibily the most important part of automota theory is decidability. It is /extremely/ important to understand what computers can and cannot do. It also leads to not a little amusement on the part of theorists at the expense of more "practical" people, who fail to understand that what they are attempting is provably impossible.

      Lea

    24. Re:Computer Science != Programming by efflux · · Score: 1

      Do they *not* have separate programs at the schools you are familiar with? I went through a "Computer Science and Mathematics" functional degree (which was in the *Math* department). The school, however, (and it was a lowly state school), had another department, Computer Information Systems. This was software engineering with a management bent. I would find it odd if my alma matter was that progressive.

      --
      Do I contradict myself? Very well, then I contradict myself, I am large, I contain multitudes. -- Walt Whitman
    25. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      It also leads to much amusement when the practical people find a good-enough solution to a problem that the theorists had rightfully proven to be impossible to solve perfectly.

    26. Re:Computer Science != Programming by Johnny5000 · · Score: 1

      "Thank you! I can't stand how, in the minds of the masses, Computer Science = programming." It's even worse than that. In the minds of the masses, computer science makes one qualified to answer "Why doesn't my mouse work?" or "How do send email?" or "What does this blue screen mean?" ack.

      --
      The libertarian solution to the failures of capitalism is to apply more capitalism til the failures are fixed.
    27. Re:Computer Science != Programming by Ian+Bicking · · Score: 1
      I think you underappreciate the skill and thought that needs to go into programming. Design and implementation are one and the same. Designing and implementing efficient algorithms is a niche skill in both programming and computer science, more and more so as time goes on.

      There's a lot of mathematical/philosophical ways to think about application programming, though it takes a little more imagination, and a little higher math (abstract algebra and further, calculous isn't really related).

      Sometimes I think this isn't appreciated because mathematics can't deal very well with systems as complicated as those in the typical application, and mathematicians have a hard time dealing with systems which they can't describe completely. When you factor in I/O, many of the traditional CS theorums don't apply. But without I/O you aren't doing anything very useful.

      And in the end, computer science without code isn't computer science, it's just math.

    28. Re:Computer Science != Programming by Yaztromo · · Score: 1
      To explain mysef, relatively new programming languages are all just context-free grammars, and computers are just exceedingly complex Turing machines.

      I have yet to find a home PC with infinite memory. Maybe if there were such a thing, one could get Windows to run somewhat decently well :).

      You can't really call a computer a Turing machine, as there are more bounds on a computer than there are on a Turing machine. The Turing machine is, however, very useful as a mathematical construct for determining what computers can and cannot do, and is something every Computer Science student needs to have in their mental toolkit.

      This whole confusion surrounding the differences between Computer Science and Programming is one reason why I don't tell people I'm a programmer, but instead a Computer Scientist (who sometimes happens to do programming on the side to pay the bills). Programmers are a dime a dozen, and there are a whole lot of them out there who may know syntax, but have no idea how to write good code, and I don't want to be associated with them :).

      Yaz.

    29. Re:Computer Science != Programming by chialea · · Score: 1

      I don't know if you've seen this, but there's actualyl quite a lot of work on variants of undecidable problems which are themselves decidable.

      Redefining the problem is not the same as solving it. Both are important.

      Lea

    30. Re:Computer Science != Programming by UTPinky · · Score: 1

      I totally agree. I've been out now for a lil over a year, and am so thankful that I made UT my choice. The theory they teach there is CS in its truest form, and really made you think. Anyone can pick up a book and learn the fundamentals about Java in a day... hell that's how I learned it. But it takes a great theoretical understanding to understand the "why" and the "how". which as far as I'm concerned is far more exciting.

      --
      I'm only paranoid because everyone is against me...
    31. Re:Computer Science != Programming by UTPinky · · Score: 1

      Killed you? Oh how I loved that class! That was if not my favorite, definately one of my top 3. But then again, I had several friends that would get mad at me whenever I would say that... hehe... oh well... guess not everyone understands.

      --
      I'm only paranoid because everyone is against me...
    32. Re:Computer Science != Programming by Just+Some+Guy · · Score: 1

      Classic example: "Can you figure out how to tell if this program is going to crash?" Sure! As long as I can publish my solution to The Halting Problem without your name on it.

      --
      Dewey, what part of this looks like authorities should be involved?
    33. Re:Computer Science != Programming by wwest4 · · Score: 1

      > CS != programming.

      I agree, that is why I didn't complain w/ grandparent. Parent was implying that it is not worth it to get a CS "just to program" which sounded to me like elitist rhetoric. Maybe you're right and I misjudged his tone when he referred to rank-and-file programmers as "just code monkeys."

    34. Re:Computer Science != Programming by wwest4 · · Score: 1

      > However, computer science is not about programming -- it's about deciding what to program.

      Cute profundity. How about this: deciding what to program is usually called marketing.

      Engineering and theory are inextricably co-dependent; it should be obvious that one cannot exist without the other. The idea that theory is "pure science" while applied science is somehow peripheral just doesn't follow.

    35. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      Sure it does. You're just an idiot.

    36. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      So liberal arts colleges don't require correct spelling anymore?

    37. Re:Computer Science != Programming by sellers · · Score: 1

      I so agree. CS may help you program, but it's constructs or methods that it teaches you. It's just that most places use programming as the mediumto teach the concepts. If anything CS is a math science more than say an engineering one.

    38. Re:Computer Science != Programming by Jagasian · · Score: 1

      A Turing machine doesn't have an infinite tape. It has a tape of unbounded size, and at any given time, it has only used a finite amount of tape. Hence, a computer could be considered a Turing machine as long as more memory can be added to the computer as needed. This could be accomplished via a connection to an ever expanding internet.

    39. Re:Computer Science != Programming by Anonymous Coward · · Score: 0

      In my automata class just a year or two ago, we had this very discussion of the merits of math. And the professor was involved, and shocked to find that so many CS kids didn't like true CS. But they'll all end up as PHB's or web developers.

    40. Re:Computer Science != Programming by warrax_666 · · Score: 1

      There is no difference between inifite tape and arbitrary amounts of tape (i.e. "you can get arbitrarily much more tape if you just ask nicely"), at least for a Turhing machine. Internet notwithstanding, computers cannot ever obtain arbitrary amounts of memory, they are limited by the amount of possible information storage capacity of the universe (with is AFAAK bounded).

      --
      HAND.
    41. Re:Computer Science != Programming by Jagasian · · Score: 1

      There is a difference between actual infinity and potential infinity. The distinction has been brought up time and again in the study of mathematical foundations. Constructivists, for example, deny actual infinity, and only allow for things as large as unbounded in size. Classicists do allow actual infinities, but these tend to lead to paradoxes. For example, the set of all functions on naturals can be proven to be both uncountably infinite and countably infinite.

      So in short, infinite tape implies that at any given moment you have an infinite amount of tape. While unbounded tape implies that at any given time you have a _finite_ amount of tape... but at any given time you can increase the amount of tape by a finite increment.

      Now, whether or not the universe is finite in storage capacity is a question that I don't think we can answer.

    42. Re:Computer Science != Programming by warrax_666 · · Score: 1
      I am well aware that there is a mathematical difference between infinity and "arbitrarily large" (and indeed diffent variations on infinty itself, such as countably infinite, uncountably infinite, etc.), but the difference is irrelevant wrt. tape size in the context of TMs.

      Note that in the original post, "arbitrarily large" included being able to modify the tape size at run-time.

      The mathematical difference is irrelevant wrt. TM tape size, because if you just always have the tape size increase dynamically to accomodate the read head position then the arbitrarily large tape is indistinguishable from an infinite tape (from the POV of the TM). Also, no computation that ever terminates can possibly require the use of infinite (note: not just arbitrarily large) amounts of tape. (I would do a rigorous proof that they are equivalent, but frankly I can't be assed right now. :))


      Now, whether or not the universe is finite in storage capacity is a question that I don't think we can answer.

      Well, I certainly can't answer it, but I think most physicists believe that the amount of energy in the universe is fixed and that the lifetime of the universite is finite. That would imply that there is only such much information that one can ever hope to store (simply because of time/energy contstraints).
      --
      HAND.
    43. Re:Computer Science != Programming by nuggo · · Score: 1

      Where? Where?

      As others have pointed out, it's "Hear, hear."

  9. Math and CS by MarkPNeyer · · Score: 3, Interesting

    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.

    --

    My blog
    1. Re:Math and CS by kyle_b_gorman · · Score: 1

      funny seeing you here mark

    2. Re:Math and CS by SplendidIsolatn · · Score: 1

      Just to add to that, at XU (CompSci class of '00 here) since the Math and CS (and to an extent, Physics) student population is so small, in many of the foundation classes, you find yourself intermingling and working with people from other disciplines and learning from them as well. It gives you a good exposure into how a person who is a physics major tackles a Discrete Math (assuming that course is still around) problem versus how you might.

      --
      sig--we don't need no goddamn sig
  10. Why is maths useful for computer scientists? by sweet+cunny+muffin · · Score: 5, Insightful

    Useful?! You can't do anything without it. You can't study graphics without maths. You can't study 3d graphics and simulation without quite advanced maths. You can't study audio without maths. You can't study just about anything in computer science without maths.

    Only a Mickey Mouse comp sci course would not require maths to quite a high standard.

    1. Re:Why is maths useful for computer scientists? by appelflapje · · Score: 2, Funny

      Advanced math? You call linear algebra advanced math? Hmm... Maybe I overrated math. :)

    2. Re:Why is maths useful for computer scientists? by elwell642 · · Score: 1, Insightful

      Oh.

      Well, I for one have designed, written, and implemented several large software solutions & websites for a number of growing ($1M+) small businesses, and I've never needed a single bit of the matrix algebra or trig stuff I was often forced to digest in college. But maybe I'm the minority here.

      *puts on a pair of huge round black ears*

      --

      <insert witty linux comment here>

    3. Re:Why is maths useful for computer scientists? by JustNiz · · Score: 1

      I strongly don't agree.

      I graduated with a BSc. (Honours) degree in CS from University of Reading, England (University started in the 1800's to be the overflow university for Oxford Uni). Reading has a very respected CS department.

      I make the distinction between logic (discrete maths) and 'higher' maths being all that esoteric algebraic stuff.

      I am good at logic but higher maths was never my strong point, so I took a Psychology option just to avoid the required (unnecessarily intensive) maths courses in the first year. For the rest of the degree and the rest of my (extensive) career as a software developer and consultant I have not once found anything that I missed out on because of that.

      In fact rather the opposite, the Psychology has helped me with lots of AI stuff. It seems to me that the maths was thrown-in largely as an academic exercise, and because the CS dept. happened to be (in my opinion, incorrectly) grouped in the same school.

    4. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      Apparently you can be a computer scientist without basic grammar and spelling. Or should I say, without basic grammars and spellings.

    5. Re:Why is maths useful for computer scientists? by Coryoth · · Score: 1

      Advanced math? You call linear algebra advanced math? Hmm... Maybe I overrated math. :)

      I agree. I am quite surprised by the low expectations of many people here for "advanced math". To be honest I would have expected a CS major to, depending on their area of interest, done courses in commutative algebra (groups, rings, fields etc.) and basic galois theory, or, if heading if a different direction differential geometry. The prerequisites for those courses of course covering a lot of other very valuable material.

      Jedidiah.

    6. Re:Why is maths useful for computer scientists? by SatanicPuppy · · Score: 1

      HA! Yes!

      I was a philosophy major specializing in logic. I actually did a double major in Philos and CS. Was going to go for cognitive science which is the place where the two meet, but I didn't care for all the neurophysiology.

      Philosophy helped me a hell of a lot more on AI than the ability to run a Taylor series or do a Trig Integral ever did.

      People keep talking graphics and sound. It's not all about that.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    7. Re:Why is maths useful for computer scientists? by Glonoinha · · Score: 1

      Common perception is that 'websites' are the processing and presentation of static pictures and text, and are the graphical recreation of work that could be done by cutting pictures to size and placing them on a piece of paper, and cutting and pasting text onto that same piece of paper and making it asthetically pleasing.

      In the context of this discussion, 'programming' is all encompassing to include all the data processing, real time number crunching, computer sims of real life things, and determining how much fuel to put into a rocket to get to the moon and back. This work, if recreated in real life would take engineers, calculators, slide rules, lots and lots of math, and if done incorrectly people could die.

      Calculators vs Crayons. I rewrote this three times, the first two came across as implying that doing web pages isn't programming - which I would never say if I thought a web guy was listening (ok, yes I would.) I'm not saying it isn't important, because it is important. I'm just saying it isn't 'programming' in the context that the word 'programming' is being used in this thread.

      --
      Glonoinha the MebiByte Slayer
    8. Re:Why is maths useful for computer scientists? by sweet+cunny+muffin · · Score: 1

      You don't sound like a computer scientist. You sound like just another code monkey. Computer _scientists_ need maths.

    9. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      Reading's computer science department is not "very respected". It's 23rd in the country. Just above Surrey. Nothing special. http://education.guardian.co.uk/higher/unitable/0, ,-4664366,00.html?start=20

    10. Re:Why is maths useful for computer scientists? by daehrednud · · Score: 2, Insightful

      That's because you're being a computer programmer, not a computer scientist. Think about what computer scientists/engineers have done to make your job not require mathematics. You're working with webpages over a network I presume, thank many CS's for routing algorithms and queuing theories that make such traffic feasible and practical. You can thank statistical analysis for the memory and process management that so fluidly works underneath your code at the OS level. Think of all the math involved in the complexities of circuits, each capacitor and inductor are placed in perfect mathematic precision to generate a proper current/voltage. There are possibly thousands more examples that I couldn't possibly imagine. Don't kid yourself, you are merely an end user standing on the shoulders of giants. You don't need to know about the mathematical complexities of your underlying system and your customers don't need to know about all the lines of code you've written.

      Oh, by the way, any logic(ands, ors, or nots) appear anywhere in your code?

    11. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      Oh citizen. You forgot cryptography. Ever try to do cryptography without math? It's all about problem solving, set theory, modular arithmetic, dealing with huge numbers (billions of decimal places --an engineer can afford to drop the trailing digits "Good enough"-- here you need every one down to the last), complexity theory, and studying noise /Shannon and chinese remainder theorums is all part of the package (ok, statistics too, and combinatorics including permutations, combinations, Euclids algorithm, onto functions, derangements. Coding theory and finite fields are useful too. I know I'm missing a lot. Being able to read and do proofs is useful too.

    12. Re:Why is maths useful for computer scientists? by sweet+cunny+muffin · · Score: 1

      I'm British. I say maths, short for math(ematic)s. Get over it, yank. It's our language.

    13. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      It's our language.

      You'd think you'd know how to use it then, dumass.

    14. Re:Why is maths useful for computer scientists? by sweet+cunny+muffin · · Score: 1

      "It's" is a contraction of "it is". The apostrophe in this case shows a contraction.

      See http://www.comcul.ucalgary.ca/Web/efwr/apostrophe. html

      "The rule to remember is simple: it's = it is or it has (otherwise, write its)"

      I'm awaiting your apology for calling me a dumbass for a grammatical error that I did not make.

    15. Re:Why is maths useful for computer scientists? by elwell642 · · Score: 0

      I am totally willing to give hats off to all those out there who built these incredible tools that I use daily. I'll be the first to admit that I know pretty much jack about how HTTP, TCP/IP, RPC, and other protocols work.

      Nonetheless, I think it's unfair to say that someone isn't a programmer just because they don't write in assembly. I assume that isn't your language of choice. But if not, are you not also just standing on the shoulders of giants?

      How do you define computer scientist? Does it mean that they design and manufacture circuitboards and write space shuttle flight pattern code? Or could it refer to someone who examines a problem and then solves it using computer technology?

      I'm not trying to flame here, seriously. I'm just trying to make the point that just because biochemists didn't invent the amoeba it does not mean that they aren't biochemists.

      --

      <insert witty linux comment here>

    16. Re:Why is maths useful for computer scientists? by elwell642 · · Score: 0

      First, I wasn't trying to say that ALL math is useless. By all means, basic logic and modeling are ESSENTIAL to computer scientists. I'm just saying that being a math major/minor in college is hardly necessary.

      --

      <insert witty linux comment here>

    17. Re:Why is maths useful for computer scientists? by elwell642 · · Score: 0

      Thanks for your mature insight. You're very right! I should have been clearer. While it is true that I write websites, what I mostly mean by that is not layout and presentation but rather the database and ASP backend that does the work of allowing users to, say, design their own customized widget in realtime via a web interface.

      Does that justify my comment a little more? =)

      --

      <insert witty linux comment here>

    18. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      You try to prove your point by linking to a canadian publication? Their English is worse than limeys like you.

    19. Re:Why is maths useful for computer scientists? by Anonymous Coward · · Score: 0

      Actually, I was calling you a dumass for "maths", not "it's". So, no apology this time, retard.

    20. Re:Why is maths useful for computer scientists? by sweet+cunny+muffin · · Score: 1

      Sorry? A "dumass"? What's that?

    21. Re:Why is maths useful for computer scientists? by daehrednud · · Score: 1

      I agree that there is some gray area here, else this topic wouldn't have reached 900+ posts. But I would define a pure Computer Scientist as someone who studies the fundamental laws of computability, which is practically pure mathematics.
      Like Dijstrka implied the computer is only one of the tools available to us to help study this field. All of us lay somewhere in between that pure "Computer Science" definition and the stereotypical Visual Basic "code monkey", and I believe mathematics AND problem solving is a great determiner of where we are.

    22. Re:Why is maths useful for computer scientists? by elwell642 · · Score: 0

      Well said.

      --

      <insert witty linux comment here>

  11. MAth is fun!! by justkarl · · Score: 1

    Probability theory would probably(ha, ha) be a good one, and I think that calc is pretty essential for anyone majoring in anything having to do with math. But if you have to take MAT 99 or 100, you probably are in the wrong field...

    1. Re:MAth is fun!! by corngrower · · Score: 1

      No, no. Physics is Phun.

  12. is math important? by Anonymous Coward · · Score: 1, Informative

    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.

  13. supposedly it helps, I never saw it. by Anonymous Coward · · Score: 0

    When I was in college CS majors had to take Calc and Discrete Math.

    I can see the need for the discrete math but the Calculus was unnecessary as far as I could see.

  14. lots of math by genner · · Score: 2, Insightful

    Excpect everything up to calculus 3, and possibly physics which is a calculus class in disguise They have litte or nothing to do with programming, Most of what you will learn in colledge has little to do with anything.

    1. Re:lots of math by JofCoRe · · Score: 1

      Most of what you will learn in colledge has little to do with anything

      Hear hear! All the programming and system administration knowledge that I use daily in my job wasn't taught to me in college. I learned perl in my off-time during college... I learned a lot of other things in college though... like how much you can drink and still go to work the next day. And then there was that pipe construction 101 class... but I guess that wasn't really a class after all... ;)

      --

      Place sig here.
    2. Re:lots of math by JofCoRe · · Score: 1

      Dammit, I'm an idiot. I previewed that comment twice and I still forgot to close my italics...

      argh...

      --

      Place sig here.
    3. Re:lots of math by foidulus · · Score: 1

      Most of what you will learn in colledge has little to do with anything.
      Such as spelling? It is college last time I checked...

  15. Heh. Try Neural Networks without linear algebra by Anonymous Coward · · Score: 3, Insightful

    Neural Nets store their information in matrices of varying dimensions. Without knowing how to manipulate them, you'll be in a world of pain.

    1. Re:Heh. Try Neural Networks without linear algebra by Anonymous Coward · · Score: 0

      Netcraft confirms it, Linear Algebra is dying...

  16. These are required most places. by AlexanderYoshi · · Score: 1

    Calculus, Probablility and Statistics, Discrete Math And the prereqs for it.

  17. A few suggestions by Brackney · · Score: 1

    3D graphics - Linear Algebra
    Digital Signal Processing (for Audio) - Complex Math

  18. Of course you need math... by OEJack · · Score: 3, Funny

    How else are you going to figure out how much money to ask for in Rupees? ($1USD = 44.5641 Rupees as of this morning)

    1. Re:Of course you need math... by kaellinn18 · · Score: 1

      Probably the same way you did... Google it. :-)

      --

      --------
      This isn't the sig you're looking for. Move along.
  19. All you can get by Anonymous Coward · · Score: 1, Insightful

    Analytical skills are developed in large part due to math. Take all you can get and pay attention!

  20. VT's CS program by Anonymous Coward · · Score: 1, Informative

    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!

    1. Re:VT's CS program by GigsVT · · Score: 1

      As someone who was also fucked over by VT's CS program, I have to strongly disagree with the conclusion of this article.

      If you plan to do business programming, you will need just about none of the math they teach in CS.

      If you are weak in math, I would strongly recommend NOT majoring in CS at a school that likes to masturbate their math professors at every turn.

      Discrete math was the only math I took that really was useful. Sure, it might help to understand the basics of differentiation and integration, but I've never found much use for it in all my programming.

      The only time it's ever come up in "real life" is in my pursuits of electronics as a hobby, and even then, you can usually find someone who's already done the math for you, and you just plug and chug.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    2. Re:VT's CS program by strictnein · · Score: 1

      Sounds similar to the Univ of Minnesota. I believe the amount of math required to just get your CS degree automatically qualifies you for a math minor.

      If you've got a lot of math to take, get it done early. It's not fun having some of the tougher math classes at the same time you're taking 2 or 3 upper division CS classes.

    3. Re:VT's CS program by serial_crusher · · Score: 0
      I'm a junior at VT now and haven't had much work experience yet, but I can see the math being useful for a lot of people.

      One thing to consider is that mathematicians use computers all the time. They need you, the computer scientist, to write their software for them.

      I've heard that it helps in the senior level CS classes too. I'll be taking a lot of those next year, such as Computer Graphics (which relies heavily on graph theory), and Cryptography (well, it's actually a math course), and Artificial Intelligence (which should have a lot of stat, right?)

    4. Re:VT's CS program by GigsVT · · Score: 1

      They need you, the computer scientist, to write their software for them.

      Doubtful... besides, writing programs for mathematicians isn't a career, unless you work for the NSA or something.

      I think it's safe to say 95% of the programmers out there write business, desktop, or server apps. None of which require much math past the basics.

      The other 5% that write game engines, AI, crypto... let them learn the fucking higher math. Most of that math can be learned as you go along anyway.

      Being able to write well is much more important for a programmer in the real world, and yet only a class or two is usually devoted to that.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
  21. wrong assumption by Anonymous Coward · · Score: 2, Informative

    programming != computer science

    if you think programming is all there's to computer science, then don't study computer science.

  22. Here it comes ... by Daniel+Dvorkin · · Score: 1

    Cue up all the "i d0n7 N0 4nY m47H & i 4m 7eH 1337!" comments from people who write shitty, bloated, inefficient code because they didn't have the brains or dedication to pay attention in their math classes.

    --
    The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    1. Re:Here it comes ... by Mark+of+THE+CITY · · Score: 1

      Maybe they did pay attention, as the math classes I attended for a computer engineering degree weren't concerned with algorithmic efficiency. That came in the algorithms class (for non-numeric algorithms) or the numerics class.

      However, I do agree there's a lot of slow code out there.

      --
      The clearance system sounds logical. It is not. It is completely arbitrary. -- John Bolton
    2. Re:Here it comes ... by micromoog · · Score: 1

      Do you realize your post can be basically summed up as "i d0 N0 m47H & i 4m 7eH 1337!"?

    3. Re:Here it comes ... by haystor · · Score: 5, Interesting

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

      --
      t
    4. Re:Here it comes ... by Daniel+Dvorkin · · Score: 1

      Well, I'm a math major (as an undergrad -- currently working on my MS in CS) who does business programming too, and I'd argue there's a hell of a lot of math involved. SQL, in particular, is set theory at the root; if you've used set theory in any of the traditional math applications (real analysis, linear algebra) then it's a hell of lot easier to write efficient queries.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    5. Re:Here it comes ... by Daniel+Dvorkin · · Score: 1

      Yes, it can, and yes, I am. ;)

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    6. Re:Here it comes ... by Daniel+Dvorkin · · Score: 1

      Most math classes aren't directly concerned with algorithmic efficiency, no, but I'd argue it's pretty much impossible to understand a good algorithms or numerics class without a solid math background. Maybe I'm wrong, and there's another route to this understanding, but I've never seen it.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    7. Re:Here it comes ... by haystor · · Score: 2, Insightful

      Sure.

      There is math in carpentry too, but you don't need to attend college to be a brilliant carpenter.

      SQL is all about learning the constraints of data i/o and organization. Claiming it is steeped in Set Theory makes it sound a lot more complicated than it is. Sure there are aspects of it that will help, but you could learn all of Set Theory or just learn the one specific instance of that database. Practical experience and common sense will help you more than Set Theory.

      Of course, I'm talking about SQL from a programmer's point of view. This usually assumes the database is already made. In this situation I'll take the person with industry experience and SQL skills over the person with SQL skills and Set Theory (Learning Set Theory does have an opportunity cost, you know).

      Anyhow, my point was that there are vast areas where very mundane programming is done that don't require real math (good math skills always help though). So much of business programming fits into the business way of doing things. Like running something once a day that looks up a list of data and sends notifications to the people on that list. Simple, simple stuff that needs tobe done and can be done well by a plain coder. It is the coder that understands the business logic (hey, they don't need a notification *every* day, except in California where it is required by law, unless they are a private entity) that will excel. There are numerous positions for whole careers for these kinds of programmers. I tend to think of this kind of position as a translator, where his foreign language is "computer".

      One little caveat to what I'm saying. I'm saying there is room for programmers who don't have formal math skills. I'm not saying having no math skills is beneficial. The fact is that the people who have what it takes to be good at programming tend to gravitate toward college and formal math. This means that it is uncommon for a really skilled person not to have pursued math. There is a glut of people without a clue doing the job right now that would disprove my point, if my point was "people without math skills make good programmers".

      --
      t
    8. Re:Here it comes ... by Anonymous Coward · · Score: 0

      'probably has a good sense of when his numbers add up'

      Eh... Mathematicians can't count. We just diddle proofs and equations and abstract things up another level whenever we get too close to actually having to do any calculations :)

    9. Re:Here it comes ... by haystor · · Score: 1

      I said a 'good sense of when his numbers add up', not 'is good at adding up numbers'.

      It is exactly that skill with proofs that is so beneficial. I notice myself thinking that way sometimes when I 'sense' the numbers to be wrong. I end up proving my code is wrong by setting up an example that is clearly wrong.

      Sure we can't count, but we know what "f(x) is less than f(y) for all values of x less than y" implies. Those sorts of things are second nature.

      A good example of something like that would be "we're taking in less money than we're spending". Accountants have all sorts of rules to avoid just that statement but it won't change the reality of the numbers.

      --
      t
  23. Different applications by Anonymous Coward · · Score: 1, Insightful

    The problem is is that alot of college courses I have seen focus on computer science which deals alot more with low level programming and algorithms, in which case you need some extensive math.

    I however write more applicatons/user interface type stuff, and use the libraries that CS guys create (STL to just name an example), thus I rarely ever write anything myself that I need advanced math skills.

    Programming in and of itself doesnt require math, but when you start writing advanced data structures, thats where you will need calculus/algebra and some others. It all depends what kind of programming you plan on doing.

  24. co-workers without a good math base... by hornrimsylvia · · Score: 3, Insightful

    ..i never want to touch their code. usually it lacks basic logic. the programmer/designer usually does not have a good grasp on other mathematical concepts either. this is true for even simple business logic. the code is usually inefficient...in my experience anyway. the math really helps you to deal with thousands of processes working together, as well as potentially avoiding deadlock by looking at things on a grand logical scale. again, just my experience. take the math.

    1. Re:co-workers without a good math base... by Anonymous Coward · · Score: 0

      Yup, but that skill isn't taught in university. Some people just get it in grade school, most don't.

  25. Statistics also important by GGardner · · Score: 4, Insightful

    Perhaps the most related, useful, but most underappreciated related discipline is statistics. Of all the non-CS classes I took, stats is the most relevant to my day-to-day life. For example, doing analysis of performance and tuning software system, I often see people use bogus statistical analysis, and making mistakes based on those results. Even if your curriculum doesn't require it, I would highly recommend taking a stats class or two.

    1. Re:Statistics also important by zymurgy_cat · · Score: 3, Insightful

      For example, doing analysis of performance and tuning software system, I often see people use bogus statistical analysis, and making mistakes based on those results.

      Such behavior is incredibly prevalent in all fields and industries. I've been in meetings and seen analyses that make my skin crawl because people make fundamental mistakes when using statistics. Part of it is due to the fact that it's not something that's integrated into any cirriculum when it should be. Another part is due to the age-old problem of using a hammer on screws because all you were ever taught was using a hammer.

      The final part is a basic misunderstanding of probability, statistics, and math. I've actually had a customer want me to guarantee no failures by developing test results and analyzing them with statistics to "prove" no failures before a certain point. I tried explaining how one can never absolutely rule out such things with stats and prob. There's always a chance, no matter how small.

      --
      -- Fugacity: Confusing chemists since 1908
    2. Re:Statistics also important by bfields · · Score: 1
      Perhaps the most related, useful, but most underappreciated related discipline is statistics. Of all the non-CS classes I took, stats is the most relevant to my day-to-day life. For example, doing analysis of performance and tuning software system, I often see people use bogus statistical analysis, and making mistakes based on those results. Even if your curriculum doesn't require it, I would highly recommend taking a stats class or two.

      Amen. Mod parent up some more. A little statistics and experimental design will go a long way.

      My list of math courses would be:

      • A couple semester's worth of applied statistics.
      • A couple semester's worth of combinatorics/discrete mathematics. Graham, Knuth, and Patashnik's "Concrete Mathematics" is my personal favorite for this.
      • The usual year or two of calculus, including a bit of multivariable calculus and at least a semester of linear algebra.

      And if you're really into it, throw in some algebra and number theory, just because it's fun, and has some amusing computer science applications. Oh, and some differential equations never hurt anyone. Just get your BA in math and then MS in computer science....

      --Bruce Fields

    3. Re:Statistics also important by bfields · · Score: 1
      My list of math courses would be:

      Oh, and one more recommendation: make sure that you take at least one real theoretical math class; you'll know you're in the right class if 90% of the homework problems are of the form "prove the following statement". The subject matter doesn't even matter that much; abstract algebra or real analysis are often the first courses where math departments start expecting students to understand proofs, but ask a professor in your local math department and they'll be able to recommend the right course.

      A good program is *exactly* like a good proof: clear, concise, and convincing.

      --Bruce Fields

    4. Re:Statistics also important by chialea · · Score: 1

      There are, though, absolute proofs that use probability. There is a technique that I believe was pioneered by Erdos, where one takes a random graph on a certain number of nodes, and proves that the probability of a certain characteristic (or the probability that if it doesn't have it, it can be manipulated to do so) is either 0 or 1. Thus, all graphs of that size have the characteristic (or don't have it), but proving it the other way around is a real pain. Random graphs are a useful tool, and they do give you an unequivical answer in this case.

      Lea

    5. Re:Statistics also important by carn1fex · · Score: 1

      I totally agree with this. In fact, i think you should have to take and pass a basic statistics class in the US to be able to watch the news. So often stats associated with surveys etc are so screwed.. "500% increase in the number of escalator deaths this year alone!" holy shit! oh wait does that mean it went from 1 to 5 people? Maybe thats more obvious but sit 90% of people down and say "Ok what does it really really mean when the news says eating pork loins increases your chances of cancer by 5%?"

      --

      ---------

      No matter how thin you slice it, its still baloney.

    6. Re:Statistics also important by throbbingbrain.com · · Score: 1
      I often see people use bogus statistical analysis, and making mistakes based on those results.
      Part of it is due to the fact that it's not something that's integrated into any cirriculum when it should be.
      It's part of a good BS.IT program.
  26. From a current CS/Math major by heyitsme · · Score: 1
    I am pursuing a double BSc in Math and Computer Science. My school makes this extremely easy. To obtain a math degree in addition to a CS BSc, you have to take two additional classes. The typical person in this sort of track takes the following "math" classes (some classes are on the cusp of CS and Math):

    Calculus I, II and III

    Discrete Structures (graphs, trees, etc.)

    Linear Algebra

    Numerical Analysis

    Algorithms

    Abstract Algebra I

    Also you have to take one or two math electives.. I opted for a course on Game Theory.

    This is just a snapshot of my school career... YMMV, however one can see that CS and Math degrees are still heavily linked.

    1. Re:From a current CS/Math major by Anonymous Coward · · Score: 0

      I am graduating in two weeks with a BS in Computer Science; and I've taken 18 math credits, including:
      Calc I, II, III
      Probability & Statistics I, II
      Mathematical Logic ...as well as a basic trig class that all majors are required to take. It does help you think with a view towards efficiency. I took Assembler and Calc II at the same time, and I've written better code since then.

    2. Re:From a current CS/Math major by ucdoughboy · · Score: 1

      Ah i see i'm not the only Double major here. I'll be done in a year. But to be honest, it really hard to see direct influence with math and cs sometimes. Especially when it comes to classes like Real Analysis, or even abstract algebra. I mean sure i can do modular math better and i have a slighly better understand of hashtables, but really what can u do with that in real life. To be honest unless you wanna be a researcher or work for a research institution, most cs jobs don't give sheat about your math skills. Sometimes i wonder if i should have just ditched my math classes and learned some more usefull applicable things. oh yeah classes numberical analyiss, abstract algegra, linera algebra, calculus courses, stats, complex analysis, algorithms...

    3. Re:From a current CS/Math major by jellomizer · · Score: 1

      And now those are the requirement. But why is this important to a CS programmer.

      Calculus helps out a lot when programming real time application such as a Missile Guidance program, Robotics, Programming dealing with complicated sound and electricity. When you are dealing with an analog world with limits calculus helps out a lot.

      Discrete Math. This is a really useful math that helps out a lot in programming. This forces you to know why a math works in a detailed level. As well it help you to find out if a solution is computable or not in a good speed range.

      Linear Algebra and Matrix Theory, If you are going to be doing a lot of 3d graphics this comes in handy.

      Numerical Analysis, This is similar to Discrete Math in its usefulness.

      Algorithms. DUH! This is the core of Computer Science coming up with good algorithms. to get something done quickly.

      Abstract Algebra. Similar to Discrete Math it give you an idea on how Algebra works for numbers that you may not get a handle on.

      Programming is not usually like solving a math problem every minute or your always pounding away numbers. But this stuff is really handy and can turn a 1000 line program into a 20 line program. Also in real life you may not always remember every formula but with the general understanding you can pick up your book and reread the formula and work with it.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:From a current CS/Math major by Impy+the+Impiuos+Imp · · Score: 1

      I hope one of the other two classes is differential equations. While most CS don't require that, I wouldn't want to hire a math major who didn't know that.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  27. Double Major by ePhil_One · · Score: 5, Insightful
    I double majored in Math/Comp Sci. I took a lot of logic courses, Diff. Eq., etc. The benefit is really understanding how all the numbers work so you can find intelligent methods of calculating things, instead of simply brute forcing your way through it all.

    I usually thought of it as the difference between learning how to program vs memorizing a bunch of useful code snippets and how to translate them to different languages.

    --
    You are in a maze of twisted little posts, all alike.
    1. Re:Double Major by Qui-Gon · · Score: 1

      I also graduated with an undergrad in Math and Computer Science. The University I attended initially didn't offer a traditional Computer Science degree. They offered a Math with a concentration in Computer Science. Shortly after my Sophmore year they started offering it and I ended up getting both. Starting out though, I asked the typical questions... Why do I need Calculus II? What the hell does Math have with Computer Science!?

      Well, I got my answers 4 years (and a few math courses) later...

      In the end I too really ended up enjoying courses like Diff Eq, Discrete Math, Linear Algebra and Numerical Methods. While I wasn't top of the class in these subjects (I spent most of my hours in front of a *nix machine)... I still did learn a lot about different ways to attack a problem... Whoa! There is more than one way to solve the derivative and its "computer friendly"!? Some programming concepts orginated from graph theroy!?

      --

      We are blind to the Worlds within us
      waiting to be born...
  28. I recommend by NixterAg · · Score: 4, Informative

    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.

    1. Re:I recommend by SurgeryByNumbers · · Score: 1

      Discrete math is more of a logical than arithmetic course. If you're going to throw that in the list, you should also definately take a course of computation theory and automata.

      Calculus isn't really used THAT often, but if you consider the massive numbers of problems that can be abstracted to a matrix, or be done easily using a matrix, it's easy to appreciate the power of linear algebra. Differential equations builds on that further, and couldn't really hurt.

    2. Re:I recommend by Anonymous Coward · · Score: 1, Informative

      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.

    3. Re:I recommend by sqlgeek · · Score: 1

      As a reformed mathmatician myself, I agree with your list and would order it as follows:

      1. linear algebra -- Take more than one course that covers linear algebra. Make sure that you really understand that it is not about rows and columns of matrices, but rather that it is about vector spaces and dimensionality. If you understand linear algebra you will use it in all manner of places, if not you will brute force your way through inefficient implementations.

      2. topology -- A good understanding of metric spaces will be of enormous use to you in understanding how to optimize your code.

      3. discrete math/combinatorics -- This will give you the right background to talk intelligently about whether your code is O(N) or O(N^2), etc.

      Now we get into areas that _may_ be useful, depending on the type of coding you do.

      4. calculus -- This and numerical analysis allow you to write computational approximations of problems that cannot (easily) be solved analytically. Now go model the weather.

      5. number theory -- This is crucial to encoding/decoding data. Audio/video file formats are all instanciations of number theory. In this vein abstract algebra is also essential and finite geometry (all praise Ernie Shult) is terribly useful.

      6. abstract algebra -- If you ever plan to write compilers, scripting languages, etc. then abstract algebra will give you the relevant mental framework.

      Cheers,
      Scott

    4. Re:I recommend by katharsis83 · · Score: 1

      No courses on Fourier Series? It's pretty damn impossible to code any application relating to audio/video/imaging without hitting Fourier Series/Frequency domain analysis or stuff related to it (Wavelets, etc...) A good Signals & Systems processing course that includes feedback, Z/Laplace Transforms is also invaluable for coding many types of network applications/design.

    5. Re:I recommend by Anonymous Coward · · Score: 0

      I have both computer science and mathematics degrees, and know quite a bit about metric spaces, but I fail to see how a knowledge of them is "enormously useful" in understanding how to optimize code.

      I agree with the rest of your assessments, though.

    6. Re:I recommend by sqlgeek · · Score: 1

      I am a topologist by training, so I'm probably biased here.

      However, given that, I often find that algorithms are attempts to find a minimal metric. Whenever I try to make a physical process more efficient (packing, routing, etc.) I find that there is an inherent metric that I am working with. This has repeatedly been key to my work, but of course your results may vary.

      Cheers,
      Scott

  29. Not hard to calculate 2xEbay items @$10.00 by nmoog · · Score: 1

    In the olden days programmin' was about numbers - now its all about strings. You really dont need much maths to write a shopping cart applications, or a "content management system" or something equally as boring.

    1. Re:Not hard to calculate 2xEbay items @$10.00 by Finuvir · · Score: 1

      Yes but that stuff can't reasonably be considered Computer Science any more than butchery can be considered biology. Note that this doesn't imply anything bad about coding or butchery, it's just a distinction.

      --
      Why is anything anything?
  30. Programs are math by aim2future · · Score: 4, Interesting

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

  31. Computer Science isn't programming. by Mikesch · · Score: 1

    If you're majoring in CS, the major isn't really about programming. Math and logic help for some programs you'll end up writing, but they're a lot more helpful overall for studying algorithms and the rest of CS.

    Programming is the same to CS as learning how to use lab equipment is to chemistry. Helpful in studying fundamentals, but far from the point.

  32. I did both by Xiaotou · · Score: 1

    I have BS degrees in both CompSci and Math, an MS in CompEE and am finishing an MS in Math. I work as a SW Dev doing image processing. For me, Linear Algebra and a little bit of probability are very useful, sometimes on a daily basis.

    Of course, someone doing Financial stuff, for instance, would probably really need some DiffyQ and more calculus. Since all of these are mentioned in the article, I'd have to agree with the author.

    Oh, and knowing more math than my boss is terribly handy for getting out of those long, boring hallway conversations. After a certain point, I just start bringing up quaternions and rotaion matrices, and voila! Meeting's over!

    1. Re:I did both by Anonymous Coward · · Score: 0

      I have BS degrees in both CompSci and Math...

      Well, at least you're honest about the BS. :)

  33. Well for my Undergrad by ajiva · · Score: 1

    I went to CalPoly San Luis Obispo (http://www.calpoly.edu/) and Computer Science was in the College of Engineering so we had to take the same Calculus and Physics classes as the other engineers, not to mention tons of theory classes. This on top of the normal programming and general education classes. Did these classes help me to become a better programmer? Definitly, by helping me to expand my critical thinking to include more than just "how to code". I think that any CS person that DOESN'T take at least a few classes of some high level math is just hurting themselves.

  34. CS != programming by bigox · · Score: 1

    Let's be clear here. Computer science is science, not engineering. When I got my degree, there were no programming classes. Any monkey can learn how to program, and many dropped out just to do that. But, please don't say that computer science is programming. That's like saying sugery equates to cutting meat with a knife.

  35. You don't need much maths to program by Anonymous Coward · · Score: 0

    I don't know about anybody else, but I never use more than basic algebraic skills whilst programming. Saying you have to be strong at maths to be a good programmer is a myth as far as I am concerned. Algorithms and data structures rarely contain any complex maths and are more about understand how many simple actions work together to create something useful. I'm not saying learning maths won't help in any way, but I think it is very overrated. There is little maths behind most programs and they are more about program state, how it is transformed and control paths. If you actually need some sort of complex maths to solve a problem, the work will already be done for you in text books and you will just have to implement it.

  36. Computer Science is More Than Programming by william_lorenz · · Score: 1

    Computer Science is so much more than programming. Artificial intelligence, complex adaptive systems, learning algorithms, efficient distributed systems, systems, usability, algorithms and computability, image and pattern analysis, scientific computing, and more. A good computer science student will have the mathematical background to be able to work with any information in an efficient and intelligent way.

  37. Recollections of an Old Fart by Anonymous Coward · · Score: 0

    Did my CS Major in the 80's (crank the INXS, please)

    - Calculus, calculus and more calculus
    - Linear algebra
    - Discreet Structures (which was basically advanced trig)

    Calc I was the ball-breaker ; I seem to recall taking 5 pages of notes on my first day of class - even before the syllibus was handed out. Only "D+" I ever got in college. Bell curve was such that if you could pull a 50 on a take-home test, you passed with a 'C'. However, this made Calc II and III easier. Go figure.

    1. Re:Recollections of an Old Fart by ObviousGuy · · Score: 1

      Bell curve was such that if you could pull a 50 on a take-home test, you passed with a 'C'.

      Ah, grade inflation. The great equalizer.

      I remember watching 90% of the class writhing in pain because they didn't know an integral from their elbow, yet somehow the curve always brought them up to a B.

      The bell curve describes an standard distribution. It should not dictate it.

      --
      I have been pwned because my /. password was too easy to guess.
  38. The reason we take math... by baudilus · · Score: 3, Insightful

    Most people don't ever use mathematics much more complicated than basic arithmatic, so why do we have to take it in school? Math isn't about math; it's about thinking. Complicated problem teach impressionable young minds how to tackle problems logically, using what you know to be true to determine what you do not. I happened to love it (of course), but a lot of kids were always complaining about how they were never going use Modus Ponens in life. Turns out they were very wrong...

    1. Re:The reason we take math... by hoggoth · · Score: 1

      > a lot of kids were always complaining about how they were never going use Modus Ponens in life. Turns out they were very wrong...

      No they weren't - most computer programmers dont get very much Ponens (downloading pr0n doesn't count)!

      --
      - For the complete works of Shakespeare: cat /dev/random (may take some time)
    2. Re:The reason we take math... by Znork · · Score: 2, Insightful

      "Math isn't about math; it's about thinking."

      That's always the excuse for any subject that gets criticised as a timewaster. Once it gets hard to defend it's always really about something else.

      If the point really is to teach thinking, why not develop teaching methods and subjects that would be far more efficient at teaching that? Why not teach 'critical thinking', 'memorization techniques', 'problem solving', 'logic' and other general approaches instead of subjecting the impressionable young minds to subjects that many find boring and pointless (critiques with a certain level of validity too), and are likely to turn them off from learning at all?

      Teaching kids to think by teaching them math is like teaching them to cook by setting fire to them. It may get the general concept of crisping meat across, but it's a bit painful and not quite to the point.

    3. Re:The reason we take math... by Daniel · · Score: 1

      Math isn't about math; it's about [logical] thinking.

      Unfortunately, a lot of people seem to make it through school without learning either skill. I think the primary/secondary curriculum could really use a larger dose of informal (ie, non-mathematical) and formal logic, so more people can at least be prepared to spot obvious fallacies that come up again and again.

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
    4. Re:The reason we take math... by Anonymous Coward · · Score: 0

      Of course, I could say the exact same thing about English. :) After a certain point, English classes have very little to do with English.

    5. Re:The reason we take math... by Jerf · · Score: 1

      Ironically, math is the one discipline your argument doesn't apply to.

      Bluntly, if you're not thinking mathematically, you're not thinking, you're just feeling or assuming... or just fooling yourself.

      It helps to understand that there is much more to math then just "arithmatic", and that there are entire mathematical disciplines devoted to the study of things like "uncertainty" (statistics), so you can't cop out on claims that math can't handle the real world.

      Logic is critical thinking. Trying to teach critical thinking without logic is a waste of time. Trying to teach "problem solving" without algebra and basic logic is a waste of time.

      One could successfully argue that one of the faults of the current system is the obsession with numbers and algebra, to the exclusion of statistics, logic, and other mathematically useful disciplines.

      Of the things you mention we should be teaching directly, the only one that isn't mathematical is "memorization techniques"... and as I understand it, the only technique of value requires a hell of a lot of up-front investment that nobody is really willing to put the effort into.

      The very fact that you might disagree with the definition of "math" used in this posting, or that you don't see the connection between "logic" and "problem solving" is itself a sign of the weakness of your education (which isn't necessarily your fault, though ultimately and sadly it is your responsibility), not the incorrectness of this post. Teaching math (and not just "numbers") is ultimately the only way to get what you are calling for.

  39. Pretty much everything for EE.... by nathansu · · Score: 1

    I'm a CS major in my Junior Year. We are expected to take pretty much all of the Math EE majors take which is all of the Calc Series (I-III), DE, Linear Algebra, the Physics Series (I-III) and other Engineering related Math. It's quite related to CS so if your looking to get into a degree program without Math, I wouldn't reccomend it because if you ever do grad work in CS/want to be well rounded, you will need some of this math.

  40. I graduated two years ago by metalhed77 · · Score: 1

    Graph paper was ubiquitous 2 years ago at my school. Of course I was a forgetful bastard, always ran out, and ended up drawing in lines on line paper..........

    --
    Photos.
  41. 18 credits by mjh · · Score: 3, Interesting

    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.

    --
    Key to financial independence: Spend less than you earn. Save and invest the difference. Do it for a long time.
    1. Re:18 credits by Peyna · · Score: 1

      I was able to complete a math minor here at Purdue University in Indianapolis with my degree with no extra effort at all. We're required to take:

      Calc 1: 5 credits
      Calc 2: 5 credits
      Calc 3: 4 credits
      Linear Algebra (Grad level): 3 credits
      Stats (more calc than stats): 3 credits

      All math courses for us are considered "major courses" and therefore we have to meet the same requirements in them as we do for CS courses.

      We're also required to take 5 physical science courses, most of us opted for physics, which would be impossible without the calculus background we already had.

      --
      What?
    2. Re:18 credits by Anonymous Coward · · Score: 0

      *sudder* I don't know what it was about Calc2 but that was such a bitch.

      Am I alone?

    3. Re:18 credits by nns6561 · · Score: 1

      This is much more typical of math in a CS program than Illinois. I would guess most programs would require 3-5 semesters of math. I completely disagree with avoiding precalculus. Make sure you understand it before coming to college. It is foundational to calculus and the only way you will stay on track to graduate. Most programs expect precalc, but not calculus. Finally, your mileage will vary in regards to high school calculus. Figure out if the teacher knows their stuff. It can save you one terrifying freshman experience, as calculus courses tend to be large and intimidating to freshmen.

    4. Re:18 credits by genner · · Score: 1

      Critical thinking skills are learned in every class, why waste the time on skills athat you won't be using when you graduate. Thats why so many UWM students cross the brdge and get MIS degree's. Also he have better labs, staring at the phosphor green miller prompt really got annoying after a while.

    5. Re:18 credits by zorander · · Score: 1

      I don't know what the exact credit count is, but here at CMU the math requirements for CS are considerably heavier:

      Minimum for CS:
      - Calc 1
      - Calc 2
      - Matrix or Linear Algebra
      - Concepts of Math (intro to discrete math)
      - Great theoretical ideas in computer science (much much more difficult discrete math, with a computer science emphasis)
      - a Probability/Statistics course (ranging from easy to impossible)
      - One 'higher' math elective (such as graph theory, topology, combinatorics, etc.)

      Calc 3 is *highly* recommended and the vast majority of CS majors take it as well, even though it only counts as a general elective. Lots of higher CS courses require it as a prereq.

      As for my opinion about this, I think that the more math I come away with the better. Computer science seems to be a highly transient field, built upon mathematics. If I can conceptualize computer science concepts in terms of the much much more generally applicable ideas of mathematics then I am that much better off.

      The department here, however, strongly emphasizes the theoretical side of CS (though it's a large enough department that there's plenty of everything). This would probably explain the seemingly heavy math requirements.

      Brian

  42. Since when... by heyitsme · · Score: 0, Flamebait

    Since when did DeVry have a "surprising reputation" ?

    I thought everyone knows that vocational tech schools suck.

  43. DSP by bsd4me · · Score: 1

    I have a degree in CMPEN. I took three semesters of calculus, one semester of differential equations, and one semester of linear algebra. Several CS classes could classify as math, such as discrete math and some of the more theoretical ones (automata, lamba calculus, etc). Some optional courses can include numerical programming and numerical analysis.

    I did DSP and digital communications simulation for a long time. Without a very firm grasp of math, you are not an effective programmer in this field. Most people who don't really understand DSP and digicomm, both theory and implementation, can trace their problems down to the math.

    --

    (S(SKK)(SKK))(S(SKK)(SKK))

  44. math list for CS around here by deuce868 · · Score: 1

    Discrete
    Calc 1-3
    Probability and Statistics
    Diffy Screw
    That was what I had to take I think.

  45. CS != Programming by Peyna · · Score: 1

    Maybe only 1/4th of my CS classes involved programming projects outside of the introductory courses, and in those courses the programming aspects were just to test what you learned more than anything. You were expected to learn how to program on your own time.

    --
    What?
  46. This article is for PHD students by Anonymous Coward · · Score: 0

    HEy , why on earth would a typical computer science student require mathematical skills

    I would be hapy if they had added Logical Skills

    Besides ,unlesss you are in Research , jobs like sys admin , programming , DBA , etc dont require math very much.

  47. Math and CS are different things by superpulpsicle · · Score: 1

    I came from the same CS/MIS disipline, and honestly math and CS do NOT go hand in hand.

    For some reason people think CS needs calculus and differential equations and a whole lot more to get by. Listen to me.... you use calculus to find the derivitives of a curve. If you're a CS major you don't need freaking calculus, your typical windows box can solve it for you. And if you can't figure how to calculate numbers with a computer, you shouldn't even be a CS in the first place. Go ahead gimme the -5 troll for being upfront and honest with my 4 year experience.

    1. Re:Math and CS are different things by tssm0n0 · · Score: 2, Informative

      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.

    2. Re:Math and CS are different things by Skidge · · Score: 1

      While I did have to take calculus as part of my college curriculum, so did just about every science & engineering student. When I think of Computer Science math, I think more of the discreet math, computational complexity, logic, and probability sort of courses. They really are a different sort of animal than calculus: much more abstract and having little to do with numbers at all (perhaps with the exception of probability). These courses give you insight into how computing fundamentally works, turning a programmer into a computer scientist.

    3. Re:Math and CS are different things by 4Lorn · · Score: 1

      I'd like to see a winbox perform a simulation of a noncompressible fluid with vorticity confinement and added force for convection. Sounds physical, but it's 7000 lines of code (including a model editor and a visualisation module) and solving thousands of linear differential equations within minutes, all done by 5 students in 4 months to pass a subject called Team Programming.

      Looks like this.

      They use the same differential equations in computer graphics, like the simmulated water in Ant Z.

    4. Re:Math and CS are different things by madcow_ucsb · · Score: 1

      Boy my math major gf would probably kick you in the nuts if she heard you say that "CS doesn't need calculus so CS doesn't need math".

      There's a lot more to advanced math than calculus. It's set theory. Graph theory. Linear algebra. And proofs, of course. Lots of proofs. Same stuff I did in my CS classes (although I was CE and focused more on EE stuff).

      Incidently, that gf was amazed when I saw some of her graph theory stuff and understood it. It never occured to her that that stuff has actual practical applications all over the place (network routing, etc)

  48. Philosophy also good by catherder_finleyd · · Score: 2, Interesting

    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.

  49. CS = Math by Dana+P'Simer · · Score: 3, Insightful

    The SCIENCE of programming requires math. The art of programming may not. There is a distinction. That is why the lawyer in the next office over from me was able to put together a fairly good system to manaage his office and case load in a 5GL but couldn't truley understand the difference between a quick sort and a bubble sort. Of course, almost no one writes sorting algorithms any more. If you are writing a program that utilizes mathmatics to accomplish a goal ( e.g. the matrix algebra used in 3D graphics development ) it is not the programming that requires the math it is the problem space. The thing to remember is that, in a way, when you are studying computer science you are not learning how to program you are learning how to learn to program. Now and Information Systems degree would be more about learning to program and leaving it at that.

    1. Re:CS = Math by JewFish · · Score: 1

      You cannot just go around and redefine your maths and sciences, CS == Math.

    2. Re:CS = Math by corngrower · · Score: 1
      If you're using pascal, that would be


      CS := Math;

  50. Calculus Required But Unnecessary by XopherMV · · Score: 1

    The amount of math you actually need is really minor. My school required calculus just to get into CS. However, we never used it. Algebra was the highest math most classes required. The closest I got to higher-level math was in 3D graphics working with vectors and matrices.

    Requiring calculus for CS majors is unnecessary. I think the schools use that to only weed out candidates. Considering this, I imagine schools will now remove this requirement since less students overall are entering as CS majors.

    Before everyone says the sky is falling, I don't necessarily think this is a bad thing. I certainly haven't used any calculus while doing professional development. So, why we require it of undergrads is beyond me.

    1. Re:Calculus Required But Unnecessary by mrtroy · · Score: 1

      My school required calculus just to get into CS
      You never took calculus in post-secondary?

      That might be your first sign that your program is not top notch.
      The second is that you think calculus for CS majors is unnecessary, because you need it for a variety of things.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    2. Re:Calculus Required But Unnecessary by XopherMV · · Score: 1

      Yes, my school required calculus taken in college. In fact I took Calculus 1, 2, and 3, Differential Equations, and Discrete Math. However, that was all before I entered my CS major.

      How about you attack my argument and not me?

  51. CS != Programming by Anonymous Coward · · Score: 0

    Computer Science is just that, the science of computation. Algorithms and stuff. Of course maths is necessary. In my degree we had 3 years of statistics/queuing theory, and one year of calculus.

    People complained about it. They thought that computer science meant PHP programming and a bit of Java. Hence the very high (almost 50%) drop-out rate after first year!

    Programming is easy, computing is a challenge.

  52. Some math is Useful by xTMFWahoo · · Score: 1

    The most important classes I took were Discrete Mathematics 1 and 2 which covers predicate logic, number theory ect and Algorithms which is useful in programming.
    I'd say Calc 1,2 and 3, Differential Equations are of no real use.

    --
    "Patriotism is supporting your country all the time, and your government when it deserves it." Mark Twain.
    1. Re:Some math is Useful by FooAtWFU · · Score: 1
      Agreed. Around Wake Forest University the main requirements are Math 113 (Calculus), 117 (Discrete), and 121 (Linear). Discrete math is sets, trees, loops, graphs, et al. Linear algebra is vectors, vector spaces, projections, eigenvectors, eigenvalues, least-squares.

      But I have to go study for my Linear Algebra exam right now .

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
  53. Bah... by D-Cypell · · Score: 1

    During my time at schoool, I was told by a careers advisor that to become a software developer I would require at least an A-Level (Im not sure of the US equivilant) in Maths.

    A-Level maths covers subjects like calculus and imaginary numbers.

    After 5 years of professional software development, I cant remember one time where I have needed this level of mathematics.

    Now a business course, that would have been useful, some kind of analyst training would have been ideal, but advanced maths.... definatly not.

    Im sure there are exceptions in the development world, I figure those doing 3D simulation would require a basic grasp of newtonian physics, and there are obviously scientific systems that would require a bit more knowledge, but even for the fairly advanced finacial systems I have worked on, the most that was required was some floating point aritmatic and percentage calculation... and thats what the computer is for anyway!

    1. Re:Bah... by gowen · · Score: 1
      I was told by a careers advisor that to become a software developer I would require at least an A-Level
      And for a great many applications he'd've been right.
      for the fairly advanced finacial systems I have worked on, the most that was required was some floating point aritmatic and percentage calculation...
      To paraphrase Truman Capote... "Thats not programming, thats typing."
      --
      Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    2. Re:Bah... by D-Cypell · · Score: 1

      And for a great many applications he'd've been right.

      Bullshit! Go to your favourite Jobs database and list the programming jobs that require advanced mathematics. The most mathematically advanced algorithm I have EVER had to write during my career was a formula for converting lat-long to grid references and that was mostly converting well known formulas into the 'syntax-du-jour'!

      I have never used the kind of maths that I was taught during my A-Level (infact I have forgotten 98% of it, a sure sign that its largely useless knowledge!), I still manage to be pretty successful as a software developer.

      Either you are a student, or you work on shuttle launce/missle guidance systems... neither are good positions to view the software development industry as a whole.

    3. Re:Bah... by gowen · · Score: 1
      you work on shuttle launce/missle guidance systems... neither are good positions to view the software development industry as a whole.
      Not a bad guess. I do Geophyisical Computational Fluid Dynamics.
      --
      Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
    4. Re:Bah... by D-Cypell · · Score: 1

      Not a bad guess. I do Geophyisical Computational Fluid Dynamics.

      Ahhh... that clears things up. I can understand why you would require more advanced mathematics for a scientific field such as this...

      However, its not that you need your maths skills to do your programming, but you need them to understand your problem domain.

      A programmer writing an application that manages an eletricity grid would need to understand how that system worked for example.

      The skill of 'programming' by itself, doesnt require any of these skills, and competancy with basic algebra and a comprehension of working in different bases are pretty much all that is required.

      The area you specialize in presents its own requirements, and maths may be one of those, but that is peripheral.

  54. as a recent cs major... by miseryinmotion · · Score: 1

    I've found that the mathematics courses required are a bit more than what I expected. The article certainly states the current situation with most colleges and universities requiring more math courses, something I wish I had a better idea of when signing up and scheduling my first year. The idea that programming doesn't require math is sadly prominent in most of the mindsets of students around here.

    Yeah, I just did my scheduling for next semester, with Calc II set up for an 8 am course...

    "calculus III is slightly harder than calculus I but not nearly as hard as calculus II"

    Yeah, that's just GREAT news to hear.
  55. Logics by condensate · · Score: 1
    I think maths as such is not really an issue when it comes to programming. I mean, anybody can read about a certain algorithm or ways to derive a function most efficiently and so on. What does matter is the way you think. A computer is pure logics and that's the principle underlying mathematics. If you want to learn structural thinking, then basic mathematics are indispensable.

    So I would suggest some basic knowledge in algebra (the part of maths that deals with collections of mathematical items, fields, groups, equations...) which lies at the very heart of maths. Then, some calculus to round it off (just in case someone wants you to calculate an integral...) and a little statistics (suppose you want to write analytical software). The real geeks might want to learn about number theory, too, but mainly for academic purposes (i.e. for fun). If you know your basic math, you can easily develop into other parts.

    This is the programming part. I agree that if you just want to do web development, then the above seems questionable.

    Anyway, where I studied, the department of computer science teaches the above subjects to students who want to obtain the bachelor. But as they grow, I observed that they do not really know much about maths...

    --
    Black holes were created when god tried to divide by zero
  56. Think!!! by jmac880n · · Score: 2, Insightful

    More than anything else, higher math teaches you how to solve problems.

    How to approach complexity step by step and break it down into manageable pieces.

    How to deal with abstraction.

    How to THINK.

    Anyone who is an accomplished programmer will appreciate these skills.

    It is by no means the only way to learn this, it just seems to work. If you can master higher math, you can usually pick up programming.

    1. Re:Think!!! by dtfinch · · Score: 1

      Well put. Though it was the opposite for me. I started programming, and became good at math. Now the two skills compliment each other on even the simple CIS tasks that people claim they can do fine with math. Even if you don't use math directly, it helps to have the skills. Like with CIS, the common example of programming that "doesn't need math", you can typically abstract away 90% of the backend code of a complex web site with a little bit of forethought, like noticing "Hey, these are all variations of the same damn thing", but you rarely ever see CIS people figuring that out. They'll often just write these linear pages with little or no modularity or generalization. Many will take five times as long, for half the functionality, and unfortunately for the client, earning five times as much because they're paid by the hour. And they get jobs based on what they know, what certifications they possess, rather than how they think.

  57. Well it all depends by mrtroy · · Score: 2, Informative

    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.

    --
    [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
  58. Math/Comp by JosKarith · · Score: 1

    I started a Math/Computing joint degree course, and talking to people on both sides I worked out that there was about a 1/3rd overlap between the courses.
    Course this meant I ended up doing 4/3 of a degree. Which didn't sit well with my plans of having a social life so something had to give.
    My point is that there is always going to be a level of overlap - maths goes a lot easier if you know how to get a machine to crunch the numbers for you, and computing studies need a certain level of numeracy.
    Oh, and set theory is just bloody essential if you end up anywhere near databases.

    --
    'Don't worry' said the trees when they saw the axe coming, 'The handle is one of us.'
  59. Computer Science AND by NotWallaceStevens · · Score: 3, Insightful

    The rest of the world is filled with mono-educated outsourcing fodder that have crammed a narrowly-targetted CS education into as short a time as possible, memorizing syntax and call center protocols. The best possible insurance of future employability for someone considering CS is to add something else to your curriculum to expand your horizons. Math is certainly one likely candidate, but some other excellent combinations are CS and Music, CS and the Humanitites, CS and Foreign Languages, or CS and English. The suggestion is somewhat counter-intuitive. Most CS majors will frown on your interest in the Humanities. Exactly. Set yourself apart. Study what you are interested in, distinguish yourself from the pack, and seek an advantage through challenging, broad study.

    1. Re:Computer Science AND by monique · · Score: 1

      My philosophy minor has been a great asset to me, even though my employers don't really notice it. It's amazing to me how often I realize that communication glitches relate back to a certain some theory or puzzle that I studied in college. The philosophy background makes it easier for me to see things from another person's perspective and put it to them in terms that they will understand or be willing to receive.

      --
      -monique
    2. Re:Computer Science AND by Dasein · · Score: 1

      CS AND Economics. Now you can understand why your dev job is being outsourced and what to do about it.

      --
      You are not a beautiful or unique snowflake -- but you could be if you got off your ass.
  60. Dual Major! by bondjamesbond · · Score: 1

    Yeah, baby. Dual Major CS/Math... that's what I'm doing. Nothin else to do, so why not?

  61. Short answer: NO by aardwolf204 · · Score: 1, Interesting


    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

    --
    Im dreaming ofa big bndwdth, That can resist the /.crowd.May ur days b merry & bright & may al
    1. Re:Short answer: NO by Anonymous Coward · · Score: 2, Insightful

      OK, fine. So you can program.

      What does any of that have to do with Computer Science?

  62. "Single-digits-are-best"??? by Vexler · · Score: 1

    Try "Binary-digits-are-best".

  63. linalg and physics a must for graphics by zer0mass · · Score: 2, Informative

    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.

  64. Re:CS has very little to do with math by nathansu · · Score: 2, Insightful

    Wow, are you sure about this tough guy? If you want to be a programmer that does nothing but hack java code for your run of the mill application, sure you don't need any math. But if you want to do somthing USEFUL in the CS field (research, grad work, etc.) you cannot DO WITHOUT the math.

  65. College by duffbeer703 · · Score: 4, Interesting

    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.

    --
    Conformity is the jailer of freedom and enemy of growth. -JFK
    1. Re:College by (trb001) · · Score: 2, Interesting

      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

    2. Re:College by jmays · · Score: 1

      "...US secondary schools are so malfunctional..."

      "If you are a serious student, you can come away with a good education from almost any school."

      I believe the second statement I quoted can be said of the first statement I quoted, as well.

      I would argue that US secondary schools are ALSO supposed to teach you how to think & learn and that college is a higher level addition to that process.

      And that your sentiment regarding 'serious students' can also be applied to 'malfunctional' US secondary schools.

      BTW, 'malfunctional' is not a word.

      --
      KARMA TAG! You're it.
    3. Re:College by duffbeer703 · · Score: 1

      Secondary schools are more about behavior modification than education. If you compare the curriculum and social atmosphere of a typical public school with a typcial middle-class private school, that becomes readily apparent.

      While serious students do come away with good public educations, they also need dedicated parents to back them up. I can think of a half dozen people that I know whose education suffered because their parents were unwilling or unable to fight the byzantine and irrational bureaucracy that exists in any district.

      --
      Conformity is the jailer of freedom and enemy of growth. -JFK
    4. Re:College by gcaseye6677 · · Score: 2, Insightful

      I agree that the primary purpose of higher education should be for the student to become well rounded and to learn fundamentals so they may later teach themselves new technologies. However, schools do need to provide students with some practical, real world knowledge in order to make them employable. The fact is, employers hire someone to do a specific task. Whether they should do this or not is up for debate, but its what they do. The well rounded thinker with a lot of theoretical knowledge who has no real experience in any particular area will be at a huge disadvantage compared to someone who can say "I programmed in C++ and Java for 3 years". In order for a CS/CIS curriculum to properly prepare a student for the working world, there needs to be a mix of theoretical education in fundamentals along with practical, trade school type of skills.

    5. Re:College by HBPiper · · Score: 1

      Then there is the classic line about colleges and universities as gatherers of knowledge. The reason for the gathering being that incoming freshmen bring a little knowledge with them. The outgoing seniors take none with them. So the knowledge kind of just piles up.

      --
      "I went on a diet, swore off drinking and heavy eating. And in fourteen days, I had lost exactly two weeks. Joe E. Lewis
    6. Re:College by Otto · · Score: 1

      The fact is, employers hire someone to do a specific task. Whether they should do this or not is up for debate, but its what they do.

      Depends on how you define "employer". If you're talking about most any kind of corporation, then who exactly is your "employer"? The company? Your boss? His boss? It's not as simple as that.

      In most medium to large companies, employment works like this: Position is available to be filled. Requirements are drawn up, probably by the immediate boss of that position. Requirements go up the chain a bit, sometimes, but more usually they go directly to HR. HR tries to find people in-house that fit, or they go out looking for people, or they pass it on to headhunters, or all three. Whatever.

      The point being that the person actually out looking for someone to fill the position isn't the one who needs the position filled in the first place. There's a gap there, and that gap tends to break the position down into specific tasks and keywords and such things.

      The person who actually needs someone to fill the position needs a very general kind of person, say. Somebody who knows C and Linux, somebody who can use an Oracle database, and is a good coder/reader, learns quickly, etc. They need a general developer to develop things, in other words.

      But in creating a document for the HR person to go find somebody, this tends to get damped down into easily explainable parts like "C Experience" or "Unix experience" or "Oracle experience" or "CS Degree". Just the obvious stuff that is needed *right now* makes it onto the sheet. What they really need is not "somebody who knows C and Oracle databases", what they need is "a developer who can get the job done, and who has some experience at the sort of crap we're doing so we won't have a hard time training the guy".

      But yes, you do need knowledge of specifics, but not specific knowledge of those specifics, if you get my meaning. It's more important to understand databases than it is to know any particular database system. Yes, this well rounded person has a disadvantage, which is why someone can do "creative resume writing" and get away with it.

      I've used Oracle. I've used MySQL. Not extensively on either one, but hey, how hard is it to connect to a port and shoot some SQL at it? If you know relational databases and you know SQL, then you can pick up the fundamentals of Oracle or MySQL or SQLServer or whatever in a very short period of time.

      I've programmed in Java before.. Only small applications and applets, but hey, all programming languages are pretty much the same, really. If you can do C++ well, then hey, you can pick up Java and whatever IDE they're using there real quick. It's more important to know OOP than to know Java in specific detail.

      That sort of thing.

      --
      - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
  66. No Duh! by Prince+Vegeta+SSJ4 · · Score: 0

    If they don't know math how could they 5p34k 1n uB3r |33t 53|\|t3n[35.

  67. no math necessary by avandesande · · Score: 1

    Unless you are doing stuff with finance, you will almost never encounter any 'higher' math if you end up doing programming in the business environment.

    If you want to use your head get involved with actuarial science or with bioinformatics. I am sure that there are other fields I have missed.

    --
    love is just extroverted narcissism
  68. True! by BradySama · · Score: 1

    Any CS degree that is worth anything generally requires a math minor as part of the graduation requirements (if your school requires minors, as most do - particularly if you're in the College Arts and Sciences with Math, Meteorology, etc.). If you're going the computer engineering route instead, you can believe you'll have even more math. CS is just that, a 'science' - and the theories are described by and demonstrated with math.

    1. Re:True! by UrgleHoth · · Score: 1

      In the late 90's, the podunk university which I got my CS degree from required a math minor. The core requirements for the degree were also 2 credits shy of a physics minor. Math requirements included (after the basics of algebra and trig) 12 credits of calc, 3 of statistical calculus, 3(or 4) of numerical analysis, 6 of algorithm analysis, and 3 of diff-Eq.

      We had "major fair" days when all the majors would set up booths to inform and recruit undeclareds. A lot of interested students would inquire about CS desgrees. One of my professors would ask, "Can you hack math?" If the student looked doubtful or said no, he would point accross the hall and say, "CIS is over there."

      --

      Dogma - "let's just say we'd like to avoid any empirical entanglements."
    2. Re:True! by AnonymousKev · · Score: 2, Funny
      "Can you hack math?"

      Should I be scared that my first thought was an image of a nerdy math-type hunched over an HP calculator and unleasing PI=2.7 on the internet.

      "I've done it! I've successfully hacked math!
      1 0wnZ0rd j00 Py7h4g0r4z!"

      --
      Anonymous Kev
      Proudly posting as AC since 1997
      (Finally got a dang account in 2004)
    3. Re:True! by UrgleHoth · · Score: 1

      Should I be scared that my first thought...
      That thought was in your head, not mine. Maybe you should be scared ;)

      In actuality, the professor didn't look like your stereotype nerdy professor. In fact, he looked more like an MD than a CS PhD. And he had a great hobby, homebrewing beer.

      --

      Dogma - "let's just say we'd like to avoid any empirical entanglements."
  69. Chemistry? by fudgefactor7 · · Score: 1

    Ok, I looked that the course listing, and everything looks ok to me, but chemistry? Can anyone explain why that's in there? Physics, Calc, those make sense...but chemistry?

  70. UCSB requires... by Anonymous Coward · · Score: 0

    At UCSB you're required to take 5 quarters of math for Computer Science and 4 quarters for Computer Engineering

  71. Combinatorics by Safiiru · · Score: 1

    I didn't see this mentioned in the article or in the comments so far, but I've found combinatorics to be very applicable to Computer Science. It's even crosslisted with CS at my school, along with discrete math and a few other courses. If taught well, a combinatorics course can give you a lot of insight into why certain problems in CS get approached the way they do.

  72. Good School by millahtime · · Score: 0

    Many schools such as the one I attended (University) do teach the right things. Such as software archicecture, good programming practices, etc. They give you the skills to get the job done. They may cost more but you get what you pay for.

    1. Re:Good School by Anonymous Coward · · Score: 0
      Many schools such as the one I attended (University) do teach the right things. Such as software archicecture

      Achicecture. Never took that course. Must be why I'm a shitty programmer.

    2. Re:Good School by Anonymous Coward · · Score: 0

      Grandparent - archicecture

      Parent - Achicecture

      Doesn't explain your shitty quoting methods, though.

  73. Speaking as a Math and Comp Sci double major by nebaz · · Score: 5, Insightful

    I find that the math courses I took in college had about as much relevance to the comp sci courses I was taking as the comp sci courses themselves had to the actual work I do as a computer programmer.

    On the one end of the spectrum is pure theory, and proof, and on the other hand, we have complete practice, and "get it done now".

    Math is a great theoretical background for computing, and made some of the algorithmic courses a breeze.

    Ironically, I found the proofs in algorithms classes an attempt by computer scientists to say "see, we are a real discipline, we do proofs too", but I found that I wanted the CS courses to be a counter to all of the proofs and theory I got in my math courses. I wanted some "hands on" learning.

    Once I got out in the real world, especially with languages like Java, even the CS theory/practice (this is a hash table, now write one), I found that most of the data structures/algorithmic stuff had been written and I just filled in pieces.

    Where am I going with this? I guess basically that math is useful for comprehension in CS classes, but depending on the programming you do, you may not even use the CS you learn in the real world, let alone the math. But understanding is good.

    --
    Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
    1. Re:Speaking as a Math and Comp Sci double major by microTodd · · Score: 3, Insightful

      Well, you have fallen into the typical trap. Computer Science is not really about writing code. That's like saying that being an architect is about cementing together bricks. Or being an aeronautical engineer is about bolting a wing onto an airplane.

      Computer Science is about researching and developing the mathematical theories behind the code. Why are certaing queing algorithms or sorting algorithms "better" than others? What is the "best" way to implement a neural network for a k-class classifier? What is the fastest way to get a packet from point a to point b? These problems have more to do with math, and almost nothing to do with if, switch, and for.

      --
      "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
    2. Re:Speaking as a Math and Comp Sci double major by pjt33 · · Score: 1
      depending on the programming you do, you may not even use the CS you learn in the real world, let alone the math.
      Conversely, you may find yourself in library trying to find textbooks on areas of maths which you've never studied but find you need. For example, I've had to learn spherical geometry.
    3. Re:Speaking as a Math and Comp Sci double major by Daniel · · Score: 1

      depending on the programming you do

      As far as practical applications go, I think that's the key phrase in your comment -- there are a lot of applications of CS; some of them don't require much math at all, some require just discrete math, some require discrete and continuous math, etc. To the extent that a CS degree is about practical applications, it generally covers enough ground to prepare you for as many possible situations as possible. So while you might not need to know about (eg) flow algorithms in your current job, you would have been able to deal with a job where they did come up.

      That's aside from the benefits of theory for its own sake, which someone else already pointed out :)

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
    4. Re:Speaking as a Math and Comp Sci double major by dangermouse · · Score: 1
      Once I got out in the real world, especially with languages like Java, even the CS theory/practice (this is a hash table, now write one), I found that most of the data structures/algorithmic stuff had been written and I just filled in pieces.

      Yes, but you have to remember that those libraries and APIs only save you the trouble of writing the data structure code. You, as a CS graduate, know why you want to use a linked list or a hash table, given the circumstances. You know this because you know how that library must be operating on the structures they provide, and you understand their costs and benefits.

      At least, you do if you paid attention in theory class. I know a lot of people who didn't, and who end up using entirely the wrong (provably wrong, mind you) library-provided data structures for their problem, simply because they only understand arrays or grabbed the first collection class that allowed them to grab an element by index.

    5. Re:Speaking as a Math and Comp Sci double major by Znork · · Score: 1

      "You, as a CS graduate, know why you want to use a linked list or a hash table, given the circumstances."

      Of course, if someone wasn't a CS graduate they'd have picked that one up one chapter into an O'Reilly algorithm book. It's not like it's a very hard or complicated concept to grasp.

      The relevant programming skills taught in CS are readily available in much more palatable form, so if you're only interested in learning programming it's not what you should be studying.

    6. Re:Speaking as a Math and Comp Sci double major by dangermouse · · Score: 1
      Of course, if someone wasn't a CS graduate they'd have picked that one up one chapter into an O'Reilly algorithm book. It's not like it's a very hard or complicated concept to grasp. The relevant programming skills taught in CS are readily available in much more palatable form, so if you're only interested in learning programming it's not what you should be studying.

      I never argued that you need a formal, institutional education in CS to understand the difference between a hash table and a linked list, or the algorithms that operate on them. All I said was that as a CS graduate, the parent poster has such an education and should have that knowledge.

      Sure, he could pick it up elsewhere on his own, but "picking it up elsewhere" (even in an O'Reilly book) is "studying CS", so I don't see that we're in disagreement.

    7. Re:Speaking as a Math and Comp Sci double major by microTodd · · Score: 1

      Interesting...a few hours later I'm looking back at my own post and thinking "What a troll".

      Too bad you can't moderate yourself down.

      --
      "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
    8. Re:Speaking as a Math and Comp Sci double major by 3.1415926535 · · Score: 1

      Ironically, I found the proofs in algorithms classes an attempt by computer scientists to say "see, we are a real discipline, we do proofs too" ...

      CS proofs are just as rigorous and important as math proofs. The reason they seem sort of half-assed is that often, completely correct CS proofs are incredibly tedious. Have you ever read or (god forbid!) written a soundness proof for a type system? They're one of the most tedious and boring types of proofs I've ever encountered.

    9. Re:Speaking as a Math and Comp Sci double major by Bluelive · · Score: 1

      Who writes sorting algorithmes for a living these days ?

  74. Computer Science is Applied Mathematics... by SocietyoftheFist · · Score: 1

    Just like other fields of engineering and science. Sure you can write a program without knowing much math but you can work on a car without knowing how to design and implement an internal combustion engine too. It's kind of like trying to compare the ASE certified tech to the engineer at the car company.

  75. At the U of Iowa in 2001... by PoderOmega · · Score: 1

    The math requirements to get a B.A. in Computer Science you must take Calculus I and II Linear Algerbra Discrete Structures Algorithms For the B.S. You need those classes plus 2 advanced stats classes.

    1. Re:At the U of Iowa in 2001... by Anonymous Coward · · Score: 0

      They're adding more next year, too. 61 hours in all, with one more advanced comp sci class (for both degrees), one more algorithms class, and an additional required math class. Current math/cs student at yer former college.

  76. Only one problem with that article: by Otto · · Score: 4, Insightful

    From the article:
    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. Please forgive me as I climb onto my soapbox, but keep in mind that I am a math teacher and I know a lot of this from experience.

    First, high school calculus teachers tend to be the teachers in the math department the longest. The problem with this is that while these teachers are more experienced, they have been away from calculus longer than the other math teachers in most cases. Besides that, these teachers are often near retirement and may not be as motivated as younger teachers.

    Second, calculus is the upper-crust of high school math. In college, it's one of the lowest math classes offered. This results in a completely different teacher mentality. A college calculus teacher will be used to working with struggling students because for many of them, that is the toughest class they will ever have to take. But high school calculus teachers will be more used to working with the top students in the school. If you aren't especially gifted in math, you may find that you don't get what you need from these teachers.


    Here's the problem with those ideas:

    1) In Calc I in HS, you're looking at a class of 30 people. 50, max. In Calc I in college, you'll likely be in a class with something on the order of 100-200 people. See, *everybody* takes Calc I their first year, not just the comp. sci's. All engineering majors, all the math geeks.. Hell, even English majors probably have basic math as a requirement... So most of the time, it's a big class, usually a seminar type of deal. If you're having a hard time with it in there, then you'll also likely need to take another not-for-credit class where they can give individual instruction or take some extra tutoring on the side. Whereas in high school, you've not only got a smaller class, you've got an experienced math teacher, who likely knows his stuff, and you've got a year to learn it as opposed to 1 semester only. Okay, so the HS teacher may be less motivated, but you've got a longer time period, a smaller class, and you're in that class with the top students in the school (who can probably help you out somewhat) instead of in there with everybody in the whole school (who likely need just as much help as you do).

    2) Yes, calculus is the upper crust of high school math. It's also a heck of a lot easier than a college level math class. But here's a thought: The high school class doesn't usually count towards your college GPA, while the college level one does. What's so bad about taking it twice? Take the high school calc if you can swing it, then take it again in college. You may still have a hard time in the college calculus, but it'll be somewhat easier because you've got at least some background to it already.

    --
    - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
    1. Re:Only one problem with that article: by swimfastom · · Score: 1

      "1) In Calc I in HS, you're looking at a class of 30 people. 50, max. In Calc I in college, you'll likely be in a class with something on the order of 100-200 people. See, *everybody* takes Calc I their first year, not just the comp. sci's. All engineering majors, all the math geeks.. Hell, even English majors probably have basic math as a requirement... So most of the time, it's a big class, usually a seminar type of deal. If you're having a hard time with it in there, then you'll also likely need to take another not-for-credit class where they can give individual instruction or take some extra tutoring on the side. Whereas in high school, you've not only got a smaller class, you've got an experienced math teacher, who likely knows his stuff, and you've got a year to learn it as opposed to 1 semester only. Okay, so the HS teacher may be less motivated, but you've got a longer time period, a smaller class, and you're in that class with the top students in the school (who can probably help you out somewhat) instead of in there with everybody in the whole school (who likely need just as much help as you do)."

      It all depends what univeristy you attend. Both my calc I and calc II classes had less than 25 people in the class. Graduate assistants did not teach the class, they were a full professors. I attend a school with 15,000 undergrads and 80% of my classes have 25 students. If you don't get enough individual attention, go to a different university!

      --
      http://tomgould.com/
    2. Re:Only one problem with that article: by Anonymous Coward · · Score: 0

      >A college calculus teacher will be used to working with struggling students because for many of them, that is the toughest class they will ever have to take. But high school calculus teachers will be more used to working with the top students in the school.

      My calc teacher in high school is an interesting contrast to that statement. Half of his classes are calculus, and the other half remedial algebra.

      >Hell, even English majors probably have basic math as a requirement...

      At my school they get to take easier math, not the "for Scientists and Engineers" kind.

    3. Re:Only one problem with that article: by Anonymous Coward · · Score: 0

      Hear, hear!

      Somehow I think this guy is generalizing his own experience: an elitist high school teacher who only wanted the talented students, and a generous and excellent college teacher.

      My experience was the exact opposite: the college-level calculus instructor was clearly pissed that he had to be teaching students who weren't the naturally-talented math students (otherwise they'd have taken calculus already...), and he did a perfunctory and terrible job. Could hardly have been worse.

      Whearas, my high-school level algebra teacher was a dedicated and wonderful teacher. If only I'd taken his calculus course instead of waiting til college.

    4. Re:Only one problem with that article: by misterpies · · Score: 1


      I was amazed to discover that calculus isn't an integral part of studying maths in American high schools. In the UK (at least when I was at school, 10 years back), trig and most of the rest of what americans call "pre calc" is examined at 16. If you choose to stick with maths after that (and anyone who wants to study science at university pretty much has to), you'll get a pretty good grasp of calculus and ODEs. In my first semester at university, all science students were plunged straight into multivariate calculus and PDEs. Sure, a lot of students struggled (and specialised in bio as soon as possinle), but the point of university is not to pass courses. It's to learn something.

      --
      The author of this post asserts his moral rights.
    5. Re:Only one problem with that article: by Otto · · Score: 1

      My personal experience was Algebra II (basically complex algebra with some beginning trig thrown in) at 13 (7th grade), Geometry at 14, Trig at 15, Pre-calc (which is just advanced trig and an introduction to the infinity and limit and summation concepts, really) at 16, and Calculus at 17 (with "Advanced Calculus" at 18, which was basically the first half of Calc II, taken really slowly). Note that I also went to what are listed as some of the worst school systems in the country too.

      It's quite possible, and somewhat easy in fact, to get a good education in American public schools, it's just that most people don't.

      A friend of mine once told me that, in his opinion, the public schools in America offered a better overall education than did the private schools. However, at the private schools, you are required to learn the material, and it is not possible to just "skate by", whereas in the public schools you have an opportunity at a better education, but you have to want to learn in order to get it. For the most part, I agree with his assessment. I've never been to a private school, though, so I don't have the ability to judge for myself on that side of his argument.

      Most colleges I've seen offer Algebra and Trig remedial type classes on a not-for-credit basis, for those who didn't learn it in High School.

      --
      - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
    6. Re:Only one problem with that article: by betis70 · · Score: 1

      I took Calc in HS and found it really helped for about the first 1/2 of Calc I at Uni. After that I was just as lost as the rest of my pre-Engineering and Science buddies in the class. But it did help.

      Too bad I hadn't taken PreCalc and Trig for over a year when I came into Uni (and didn't think to review)--I messed up the math entrance exam (which was all Algebra, Trig, w/ some PreCalc) and wallowed in PreCalc my first semester.

      --
      I forget...are we at war with Eurasia or East Asia?
    7. Re:Only one problem with that article: by Anonymous Coward · · Score: 0

      Not to mention that some schools use the first year courses to weed out people. My brother tried his hand at CS the year the University decided to make the final exam worth 100% of the grade for Calc I. Nobody had any incentive to do any work until the very end of the semester. By then, it was too late, and more than 1/2 of them failed.

    8. Re:Only one problem with that article: by TheSync · · Score: 1

      Data point: my calculus in high school was taught in tandem with intro physics, so that we could apply the calc we learned on day in math class in physics class the next day.

      Because these were not AP classes, I basically had to retake them in college.

      But on the whole, I had a much better calculus and physics education in high school than in college (The Johns Hopkins University).

    9. Re:Only one problem with that article: by steveorama · · Score: 0


      And in HS you usually have a whole year for calculus, whereas in college you cram it into a semester or trimester, at least that was my experience.

    10. Re:Only one problem with that article: by po8 · · Score: 1

      I took HS calculus and then took college calc. Twice, at two different schools. Did well grade-wise all three times. By the third time through, I finally got it pretty well :-).

      The worst teacher/course I ever had (and stayed in) in 13 years (not a typo) of college was a freshman calc course. One of the best courses I ever had was also a freshman calc course. It kind of depends who is teaching you and what the situation is (duh).

      Point is, I never regretted taking HS calc, and recommend it to my HS interns (I'm a CS prof now). Just plan on taking it again when you get to college. What're you going to take in HS instead, anyhow? I took 3/4 of the electives in our large curriculum, and had plenty of time for math classes.

      BTW, if your HS offers a course in logic (few do), jump at it. If not, take it first thing when you get to college. For an undergrad CS major, this is the most important thing they never bother to teach you, or at least not until too late.

    11. Re:Only one problem with that article: by pommiekiwifruit · · Score: 1
      IIRC we had calculus at my school in NZ in the last two years (when I was 15 and 16 (form 6, 7)) but the university mostly just recapped the form 7 stuff for the first year. It was useful having a cushy class, but the next year stuff got more interesting.

      When I was looking at my grandad's old textbooks it looked like it used to be harder than that in the old days too; when most people left school at 14, only the keen ones hung around for form 6 and 7, so high school maths was a bit more advanced in the 1950s.

    12. Re:Only one problem with that article: by servognome · · Score: 1

      In highschool I took 2 years of calculus courses which in total were far more in depth than what I got my freshman year of college.
      In college you have 3 hours/week and semesters are shorter. You don't have time to go into as much depth in college, you skim over alot of the material. Alot of people in my transport phenomenon class later in school didn't even the fundamental theorem of calculus (it helps to understand heat/molecular transport when you really understand what is happening when you take a derivative).

      --
      D6 63 0D 70 89 81 BB 8E 7B 7C 5F 5D 54 EA AB 73
    13. Re:Only one problem with that article: by slamb · · Score: 1
      Okay, so the HS teacher may be less motivated [...]

      In my experience, high school teachers are more motivated. It makes sense when you think about why they're there. For a high school teacher, it's not the research, and it's certainly not the money. Professors are better-paid and often teaching is secondary to their other duties.

      You're definitely right overall; high school is a better place to learn calculus.

    14. Re:Only one problem with that article: by Dan+D. · · Score: 1

      Furthering your number 2. I took calculus twice that way, and breezed through it with an A in college. My highschool class had helped considerably. Not only that but it was an easier semester (even though it was loaded with 18 credits) and immediately my GPA had a big step up (college GPA being sadly way important than I think is necessary, but still... I'm a computer scientist... I know how to play games). A lot of schools will let you skip calc one and possibly even calc two. I don't recommend it unless you are more than a little confident (cocky) about your ability.

      --
      People who quote themselves bug the crap out of me -- Me.
    15. Re:Only one problem with that article: by Erbo · · Score: 1
      The author also left out the desireability of taking Advanced Placement examinations and getting college credit for them. I myself took two years' worth of calculus in high school, got a score of 5 (top score) on both AP exams, and, as a result, got 10 units' credit and credit for 2 quarters of calculus in college.

      I also took AP US History and Physics, got a 5 on one and a 4 on the other, and racked up an additional 15 units plus a few other requirements knocked off. The added units meant that I was considered a "sophomore" after my first quarter of college, which gave me higher priority at scheduling time (and less time spent waiting in long Schedule Adjustment lines). And I understand that a lot of kids these days are doing even better than I did at the AP game...

      --
      Be who you are...and be it in style!
    16. Re:Only one problem with that article: by Banjonardo · · Score: 1
      Ah, speaking of AP classes.... today is May 5th, day of the AP Calculus examinations. I just killed the Calc AB test and will take Physics C on Monday. I can easily say that I learned all of my calculus in the first few weeks of physics. (when we needed it, he just taught it)

      I'm almost done with high school, and I can happily say that AP Physics was the most rewarding class I've taken in HS.

      --

      -----

      Score 3? For what? Being wrong, at length? - smirkleton

    17. Re:Only one problem with that article: by PiasBrick · · Score: 1

      "In Calc I in HS, you're looking at a class of 30 people. 50, max" Speak for yourself man. At my High School, the class itself may have only held 30 students, but 200 students of my Senior class were taking Calculus II, and a few students were taking higher Calculus III or higher at a local University. I would tell all High School students to take Calculus if you can because it's best to get your feet wet before you go to college. If you do bad in it in high school, so what? You have: 1) the chance to take it again in college, with a different professor maybe being more able to reach you with the concepts 2) although the class will affect your High School GPA, you're accepted to colleges based on your GPA from your first 3 years of high school--Senior Year doesn't count! You have the luxury of taking a gamble.

  77. Wrong question by acidblood · · Score: 2, Insightful
    Does programming really have that much to do with math?

    I think the question that should be asked instead is `Does computer science really have that much to do with programming'? I mean, I'm graduating in EE this year and I sure didn't choose this major because I wanted to learn how to solder -- that's the technician's job, you know.

    I repeatedly question the reasoning of others in becoming a CS major if all they want to be is a code monkey.
    --

    Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/

    1. Re:Wrong question by Anonymous Coward · · Score: 0

      I would comment that perhaps "wrong attitude" is the tone of the above post.

      As an Engineer who started out working as a Technician for quite a while, I would say that I wouldn't much want to work with an Engineer who has that kind of attitude, "... to solder ... the technician's job, you know." I've been known to do my own reworks on circuits when circumstances warrant - sometimes it's needed to get the job done.

      Now, as an Engineer, I also don't want much to work with Technicians who simply want to make cables and swap parts, either. It can be more productive when Technicians who can think and do a little analysis of their own are on the job.

      There's useful things to be learned on both sides of this fence, so to speak, that can make both parts of the team more effective, and make better product, as well.

      But more on topic, I would encourage anyone going into EE or CS to incorporate as much math as possible in their studies. If you are looking to head toward the management/business side of the corporation, you may not use it as much, but for those of us who want to climb the technical ladder, it's a neccesity.

  78. my experience... by happers · · Score: 1

    I can relate to this question because I graduated in 2001 with a Bach. Mathematics Major: Computer Mathematics. I took almost equal math and CS courses (a few more math of course) and took everything from Calculus to Algebra to Stats...and I can say that you will USE them ALL! I know people will argue that "Unless you are working in field that uses that heavy Calculus stuff etc that you will never use the stuff you learn in those classes" I TOTALLY disagree with that (but I will admit I was thinking that when I'm learning about 4th and nth dimensions in 3rd year Calculus! hehe) but here is my reason for saying you will use them all; the problem solving skills you aquire from doing these subjects is a HUGE asset! Yes you won't use or even remember most of the equations etc but what you do remember is how to solve complicated problems using the skills you learned from each previous problem. If there was one class I would recommend for sure, it would be any class that teaches Algorithim Analysis and also Stats is a big helper too! Just my 2 cents!

  79. All math is usefull, to a point by RManning · · Score: 1

    To a certain extent you'll use almost any math you take. You probably won't need any of the exact examples, but an understanding of the algorythms and the general concepts are very useful

    As far as how much is actually used in programming, I think that depends a lot on what you're writting. I've written some programs that were very math-heavy and some that required almost none. Still, don't skip any math classes just because you don't think you'll need them. The act of learning math is maybe more important than the ability to actually do complicated things with it.

  80. No Math? by tie_guy_matt · · Score: 1

    You'll have to excuse me because me degrees are in engineering and physics, but I thought that CS WAS applied math. How can you get a degree in CS without math. No really I want to know!!! How can you do anything (in CS) without linear algebra, calculus, etc., etc. What do you end up programming?

  81. CS Majors and Math by marktoml · · Score: 1

    I had to take three semesters of Calculus of which only the last one has ever been really useful in practical ways. The Approximations and simulations have certainly been valuable.

    I think the career path you chose will decide if some, all or none of this is useful to you, but a deeper understanding of mathematics is important.

    Now the semesters of Biology and Chemistry that were erquire becuase the degree had the word 'Science' in it is another story :)

  82. Useful in two ways by Urban+Garlic · · Score: 1

    Math is useful to CS/programming in two ways.

    The first is the obvious practical way that others have covered. Geometry is essential for graphics, programs sometimes contain physical models governed by differrential equations whose strengths and weaknesses you need to understand, and so forth.

    The second is more subtle. Set theory and graph theory lie at the heart of computer science, and thinking of computers and computer programs abstractly, in a hardware- and language-independent way, as finite state machines with transition rules, can be enormously helpful in attacking problems. To my mind, this is a fairly natural approach to programming, but the advantage of some mathematical training lies in not having to re-invent the tools.

    --
    2*3*3*3*3*11*251
  83. Calculus II by CoffeeJedi · · Score: 1

    At Millersville University, we were required to take Calculus I and II. Calc II was nearly impossible, it was notorious for stopping CS majors dead in our tracks. I took it 3 times before passing, and knew several other CS majors who had every single requirement filled EXCEPT for that class, and couldn't graduate because of it.

    --
    May you be touched by His Noodly Appendage. RAmen.
  84. Matricies by TheRealMindChild · · Score: 1

    The math I use the most in my programming is matrix math. You will find this used lots, especially in 3d graphics/physics.

    --

    "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
  85. Math for CS by OuD · · Score: 1
    What sort of math are CS majors expected to take?

    Maybe the real question is: What sort of math are CS majors NOT expected to take?

  86. My Math Courses by the_pointman · · Score: 1

    My university,Worcester Polytechnic Institute required that we take seven (7) math courses to meet the math requirment for a degree. The courses I took are:

    Calculus I-IV
    Discrete Math (counted as CS credit though)
    Linear Algebra and Matrices
    Statistics
    Probability in Applications

    These courses helped out a lot when I took my higher level systems courses, especially networks and distributed computing. I would agree that computer science isn't "all about programming" and someone even equated programming to knowing lab equipment for chemistry, but that's took simple of an analogy because software is one of the main things we produce. A builder needs to know how to use a hammer to build a house, and without that knowledge he's not a builder.

  87. RIT Program rocks! by Glove+d'OJ · · Score: 1

    I think that a lot of schools recognize this, such as RIT's college of science. They offer a "Computational Mathematics" degree, a 5-year (ouch!) program that combines their Applied Math (also College of Science) and their College of Applied Science and Technology's Computer Science program.

    The enrollment has traditionally been rather small in size; when I started (transferring in with a 2-year degree), there were only 7 people in the program; the Applied math had some 40, the Applied Statistics had some 30 people. When I graduated, there were only 3 of us--some had transferred to Applied Math, or to straight Comp-Sci.

    The challenge was that most math people did NOT like computer science; and that most comp sci people took only the required maths, and nothing else. Being able to bridge both worlds did my career a lot of good!

    The critical thinking imparted in a Numerical Methods course or an Abstract Algebra course is invaluable to a computer scientist. While you may never have to use the maths presented in a Real Variables course, twisting your brain around the topics really trains you to learn new things.

    What did my math degree get me? It taught me how to learn. In any straight comp sci degree, if you learn the technology du jour, it will be good for (insert number) of months. You need to learn how to learn new technology.

    RIT's Computational Math program can be found here.

    ---
    wwjd? jwrtfm!

  88. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    I suggest you read "Introduction to Algorithms, 2nd edition," by Cormen, Leiserson, Rivest and Stein, if you think that order notation is nothing more than estimation, or if you honestly think that algorithms have nothing to do with mathematics. The text, which is used by MIT and other reputable instituations, will show you the error in your posting.

  89. It's not about the degree... by TrekCycling · · Score: 1

    It's about your ability to think nimbly, think critically and absorb information like a sponge. I graduated with a degree in English and fell into the IT industry. I quickly went from HTML programmer to database developer, ASP, PHP, mySQL, Java, etc. I had a good career until I got laid off. So my advice to you is DON'T major in Computer Science at all.

    A - Because you probably won't be able to find a job unless they let you move to India and...

    B - Because even if you get a CS degree the point is you should be learning what you want to learn in college to prepare you for life, not just a career. Because I and many others know careers can be pulled out from under your feet like a rug. Knowledge is forever. The more specific the knowledge, the worse off you'll be, in my experience.

    1. Re:It's not about the degree... by RLW · · Score: 1

      I have a CS degree: after the first job that degree meant squat. In fact the courses which have the best and longest lasting impact on who I am now were my literary and history classes. I recall at the time thinking "Why am I here? This stuff has nothing in common with what I'll be doing professionally."

      In my experience the best IT people come from liberal arts and music back grounds. Generally, my CS pedigreed cohorts are in IT to make money; they have no passion for their work or anything else.

      So, if you want to take math courses then go right ahead. If you don't then don't. Can you add, subtract, multiply and divide? Do you know what a modulus is? Are you able to perform the simplest of algebra? If so then you'll need no more math skills for 99.99 percent of software development. If you can't don't fret as most software development has very little requirement for even this basic arithmetic.

    2. Re:It's not about the degree... by TrekCycling · · Score: 1

      Exactly!! ^^

      Know basic algebra? Then unless you're doing some serious programming you're already ready. Now go take some history and lit classes and learn to be a critical thinker.

  90. If you can't spell "Berkeley"... by kclittle · · Score: 1

    ... just say 'Cal', ok? (ref. last line of 3rd paragraph in article). -k

    --
    Generally, bash is superior to python in those environments where python is not installed.
  91. Math who uses that? by Anonymous Coward · · Score: 0

    For my degree in CS I had to take loads of math; calc, stats, theory, ... And at my current job I honstly NEVER use ANY of it. Wish I had taken geographic math tho, projections really give me a hard time

  92. State U? by Elvis_Favre · · Score: 1

    Many State universities offer great programs in Computer Science. Plus if you get into one that has a large attendance and people take pride in their schools, the chance to be hired by a former student increases.

    I imagine there arent many DeVry managers out there hiring other DeVry students.

    --
    I won the lottery
  93. robotics by BillFarber · · Score: 1

    The math involved in robotics was some of the most challenging work I did in school. The non-linear, multi-variable, matrix calculus used for movement control still boggles my mind at times.

  94. Math stopped me by Mustang+Matt · · Score: 1

    I tried and tried to get past some of the math classes with no luck. Some of them I could pass when I finally got a professor that spoke english without a heavy accent.

    I ended up dropping out of school and now I script for a living. Is scripting programming? I don't compile things very often.

    I think Math is important especially depending on the type of programming you'll be doing (NASA?) but there are a lot of programs that can be written with logic alone.

    Consequently, I'm not bad at math, I can figure things out. I just couldn't pass the four tests with high enough scores during the classes I took.

    --
    The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
  95. I don't use the advanced math itself, but by Gannoc · · Score: 2, Insightful

    I don't use any advanced math in my day to day programming job, but solving math problems uses the same type of thinking as solving many programming problems.

    Basically, if you're having problems solving differential equation problems, you're never going to be able to really conceptualize what

    MyClass **p;

    means. Its why you see people start to struggle when they try to use STL, and have just memorized the syntax instead of knowing whats it means.

  96. Applicable fields. by emdean091876 · · Score: 1

    There are several fields of mathematics that apply to CS. Some of these include graph theory, cryptography, linear programming, and vector-based geometry.

    I double majored in both Computer Science and Combinatorics and Optimizations (a sub set of the fields described above). I found that a lot of the material was applicable to both majors.

  97. "Concrete Mathematics" by Theatetus · · Score: 1

    For aspiring CS students, check out Concrete Mathematics by Graham, Knuth, and Patashnik.

    It's based on a sort of "essential math for CS majors" course Knuth designed at Stanford when he realized people weren't getting any discrete mathematics preparation in high school.

    Given the nature of CS, discrete mathematics are probably the key, though I think a grounding in algebra, the Calculus, and topology is essential too.

    As a final plug, I'm fond of Feynman's Lectures on Computation both because I'm a Feynman fan and because I think it's useful to understand the physical basis of what you're doing. Most of his particular examples are dated (at one point he talks about this "revolutionary new technology called CMOS") but the principles and techniques he goes over are evergreen.

    --
    All's true that is mistrusted
  98. Everything there is... by microTodd · · Score: 4, Insightful

    Excellent article. I like the line, you need to come to grips with one important fact first: computer science has more to do with math than computers. I couldn't agree more, and this is something that many freshman CS majors need to realize quickly.

    Heh, I just finished my CS Masters which included a class on Advanced Neural Networks (SVMs and classifiers).

    You would not believe how much math is involved! There was one proof in a whitepaper I read that used calculus, algebra, trig, linear algebra, and geometry. In one proof!

    My recommendation: take all the math you can. Make sure you take linear algebra (vectors/matrices), trigonometry, calculus, probability, statistics, and anything else that looks interesting.

    Why does a CS major need math? Let's see:

    Graphics engines - trig, geometry
    Physics engines - Calculus, trig
    AI - Statistics, probability, calculus, linear algebra
    Basic GUIs - Geometry, algebra
    Networking - Statistics, linear algebra

    And of course, you can't do ANY of the above without algebra.

    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.

    --
    "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
    1. Re:Everything there is... by Coryoth · · Score: 2, Interesting
      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.
    2. Re:Everything there is... by Rostin · · Score: 1

      So use high school to become badass proficient in algebra and trig.

      HS calculus was the reason I became "badass proficient" in algebra and trig. What is your suggestion, here? That HS students use the time they would have spent in a calculus course reviewing algebra and trig? In my experience, the things I learned in previous courses don't really gel until I begin using them in more advanced course work (or now, in my job).

    3. Re:Everything there is... by CreateWindowEx · · Score: 2, Informative
      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.

    4. Re:Everything there is... by Tony-A · · Score: 1

      A program has inputs and outputs.
      A program is a function from its input space into its output space.
      A program is supposed to preserve interesting properties of its input space into properties of its output space.

      Looks like mathematics to me.

    5. Re:Everything there is... by Wolfier · · Score: 1

      In one proof!! That's interesting, where did you read it? Wanna see it too.

  99. CS is NOT programming! by DeckerEgo · · Score: 2, Insightful

    Computer Science, in spite of popular opinion, is not programming. It's the science of computation. This is a MAJOR misconception that causes nearly 75% of CS students to drop out in the first year.
    At Indiana University (granted it's a liberal arts college), I learned more about theorems, thesis, mathematics and logic than I did any language. For example, I learned the Church-Turing thesis but not how to make a GUI. The first year of my CS degree was spent entirely in Chez Scheme (a derivation of LISP) for the explicit reason to teach us computation, not languages.
    If you want to learn how to write something stupid for your enterprise (as Linus says), get a IS or IT degree. If you want to learn what a flip-flop is, how to stack circuits to do multiplication or what recursion is, get a CS degree. Those who detest Von Newman matrices need not apply.

    1. Re:CS is NOT programming! by eegad · · Score: 1

      What you say makes sense. I'd almost forgotten about these things that were of great interest to me in college. They've now been replaced by Visio diagrams, endless meetings and wrangling over whether to use tabs instead of spaces in my source code files. Do you know of anyone who likes to pay people to think about computer science instead of keeping caged code monkies?

    2. Re:CS is NOT programming! by SatanicPuppy · · Score: 1

      I always viewed flip-flops and other circuit logic stuff as being more apt for electrical engineering.

      Sadly, because I love recursion (had to learn Scheme myself), it is almost never used in the real world. Slows down your code too much, and gobbles up a lot of memory.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:CS is NOT programming! by eric76 · · Score: 1

      I worked at one company where one of the new-hires started trying to mandate how many spaces to use for indents.

      I couldn't believe it I showed up to a meeting one day and found out that the topic to be discussed at the meeting was why three spaces for indents was the one, true way.

  100. Calculus: get it early and often by Anonymous Coward · · Score: 0

    He is absolutely correct that mathematics is at the heart of the many (not all) computer science exercises. And certainly approximation theory is one reason to take calculus classes--it also helps you to understand the nature of floating point calculations which are, in a sense, like series approximations.

    But he gives short shrift to high school math teachers, which, I feel is completely unfair. These are professional people; they have university degrees. They volunteered to teach calculus, and many are very good. (Trust me, I know, I was a classroom teacher, and incidentally my HS calculus teacher was outstanding). And the idea that most college teaching assistants (who often teach calculus classes at universities) are any better shows a lack of understanding of the freshman college teaching model (again, trust me, I know, I was a teaching assistant at the University of Texas). Perhaps his HS calculus teacher wasn't the best, but that is no reason to think that calculus classes should be avoided by prospective CS students. I say, get it early and often.

  101. Amen! by Anonymous Coward · · Score: 0

    I'm a *scientist*, not a fucking code monkey.

    1. Re:Amen! by Anonymous Coward · · Score: 0

      Sure you aren't.

  102. Science or Arts Degree? by Dr.+Evil · · Score: 1

    I mean, a B.Sc.? or a B.A.?

    Most CS programs are B.Sc. programs, they'll want the same math as somebody studying biology, plus some additional numerical methods specific to CS.

    A B.A. program in CS will have very little math. It's kind of sad really... but it gives you the data structures and management techniques which most programming assignments require.

    Remember a B.Sc. is about science and furthering the field. If you don't understand the math used to develop computer science, you can't really further the field. Think about proving algorithms, encryption, compression, waveforms, statistics, stuff like that.

    Now learning how to develop that database front end for the marketing department has little to do with either... but picking up the programming books and immediately understanding the data structures and methods they use to develop the GUI, interface with the relational database backends, manipulate the relational database backends... know the weaknesses and limitations of relational theory... all that stuff which "teach-yourself programming in 21 days" books tell you how to do, but not why you're doing it is a matter of either the arts or science programs.

    If you dump the maths and go for a B.A. in CS, some snobs will laugh at you. Best to take the math if you want to do CS. If you flunk all the maths and have nowhere to go then finish with a B.A.

  103. Discrete mathematics by Jmstuckman · · Score: 3, Insightful
    Discrete (finite) mathematics will is required by many computer science programs. It will probably involve set theory, boolean logic, proof methods, and other topics selected by the school or instructor. The class probably has few direct applications to coding, but knowing the material inside and out will be vital for you if you study computer science theory.

    Taking theoretical computer science classes may seem like a waste of time, but I highly recommend it if for no other reason than because you're not going to learn this stuff on the job or on your own. Taking an extra class on object oriented programming or databases instead may be tempting, but you can teach yourself most of what you need to know about these. Take advantage of the time you have in a university and learn about the logical foundations of your field. For those who love computing, it's an experience which you won't forget!

    1. Re:Discrete mathematics by sceptre1067 · · Score: 2, Interesting

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

    2. Re:Discrete mathematics by ahmusch · · Score: 1
      As a mathematician working in the computer field, discrete math (logic, set theory, and the like) is the single most important class a programmer needs. It's always entertaining when Joe Programmer, DeVry class of 2003, can't understand why his code isn't working right when he's managed to write an unintentional negative tautology.

      If you're going code serious database apps -- like anything with concurrency -- and you don't understand set theory, you may as well shoot yourself now and save your customer base the aggravation.

      Learning language-du-jour may be neat. Learning algorithms is better. Learning why the algorithms work they way they do is best, and without discrete math, you can't get there.

    3. Re:Discrete mathematics by Just+Some+Guy · · Score: 1
      The class probably has few direct applications to coding

      Note that "few" != "no". There were two times when it was exactly applicable:

      I was taking discrete math concurrently with digital logic design. Ninja-mad Karnaugh mapping skills came in pretty handy when we (hi Alex!) were given a box of NAND gates and an assignment to built a simple arithmetic logic unit with as few components as possible. Some people in the lab were bartering with neighbors to get more gates, and some of us where cheerfully optimizing gates out of the circuit by proving that whole blocks of paths were redundant.

      In an processor design course, we were given a project to implement MMX-type instructions in MIPS assembler. Most of the class was implementing the design as a set of loops. Some of the class was unrolling those loops. Two of us were looking at the bitwise transformation that occurs when you add two parallel sets of numbers. The first group managed to get their solution down to 40 or so cycles. I think that some of the second group trimmed that to around 20. My friend and I (hi Aaron!) got that down to 7, and one of those was a one-time register initialization that could be skipped after the first iteration of a tight loop. As a bonus, we could change the algorithm to add 4 sets of 8-bit numbers, 2 sets of 16-bit numbers, or 3 sets of 7-bit numbers plus a 15 by changing the value in that register.

      That was a good semester.

      --
      Dewey, what part of this looks like authorities should be involved?
    4. Re:Discrete mathematics by Shaklee39 · · Score: 1

      Discrete math and finite math are NOT the same classes. Discrete deals with logic and cs stuff while finite has a description of "Sets, matrices, systems of equations and inequalities, linear programming, combinatorial techniques, probability, mathematics of finance, Markov chains, game theory". These are not the same, some of the content overlaps but finite is mostly for non majors trying to fulfill a requirement.

    5. Re:Discrete mathematics by Jmstuckman · · Score: 1

      That's interesting -- we just learned K-maps in the digital logic course and skipped them in discrete math. Even within my school (cwru), the content of discrete math can vary widely depending on who's teaching it.

  104. It teaches you a certain way of thinking... by wallclimber21 · · Score: 1

    At my university, there's was (and is) a HUGE emphasis on advanced math for all engineering (including construction, chemistry, mining, etc) degrees and computer science and programming degrees. 10 years after graduation (working as a programmer first, now as a digital chip designer), I have hardly ever used any pure math skills, but that doesn't mean it isn't useful. On the contrary: by studying theorem proofs and solving very mathematical question, you learn a WAY to solve complex problems by reasoning in a very methodical and structured way. This may not be needed for standard 'simple' programming jobs. This is so much more valuable than learning the hot language of the day. This may not be immediately apparent while you're studying at school and, yes, I hated some of those courses as much as anybody else, but I firmly believe that I made me a better engineer.

  105. minimizing equations and logic by theforest · · Score: 1

    There is a direct relationship between minimizing equations and writing minimal efficient code. And of course logic is a basis in coding. These must be understood when writing code.

  106. as a cs lecturer... by sciuro · · Score: 1

    ... i'd say the main thing that lets down students is lack of maths knowledge.


    i teach mainly in computer networking, and maths is used all over the place:


    • trigonometry (for modulation theory)
    • linear algebra and matrices (for routing algorithms and more)
    • statistics (for calculation of bit error / frame error relationships)
    • logarithms (for defining bits, and thence compression theory)

    there are a lot of other fields of maths which are useful too - these are only the ones i use in my teaching


    the more maths you know, the more you'll get out of computing science


    -d

  107. Math Courseload by Rydia · · Score: 1

    Though I understand where the math people are coming from, I have to respectfully disagree. While a certain level of math is required for tasks (discrete math for AI, for example), I don't think a computer scientist (at least, one not in academia) has to know them on the level that they recieve taking all these courses from the math major. What the cs person cares about isn't so much how or why certain aspects of the math work out, just that they do work, and can be relied on. In my experience, at least, learning the theory gets in the way of what I find useful, and the non-theory (engineering-oriented, application-only) courses end with the calculus series, at least at OSU.

    Perhaps I'm just crazy, but this makes sense to me... it's the only way I can justify the fact that, even in higher-level courses in each, I can do very well in my CIS courses and so abysmally bad in every single math.

  108. engineering by Anonymous Coward · · Score: 0

    If your computer science department is part of the engineering school, be prepared to take fun stuff(really! it is!) like thermodynamics, material sciences, mechanical statics, and other generic engineering courses. This was one route at Ohio State. you could either go throught the business college, arts & sciences, or engineering. i chose engineering, thankfully. But my highschool (actually, I blame my gradeschool) did little to prepare me for college math. So i took a few quarters to ramp up and then start with the actual math requirements.

  109. Learning this stuff outside of school? by frenchgates · · Score: 1

    Assuming someone is out of school and wants to go back and learn/reinforce this type of math auto-didactly, what books/web resources would people recommend?

    --
    Syntax error: loose != lose, affect != effect, then!=than
  110. Don't Fret by tarsi210 · · Score: 1

    I am a programmer, and I suck at math. I've always been able to get through it but I'm horrible at it, it doesn't "click" with me, and I've had to work hard and long to get through any problems whatsoever.

    I took Calculus I through a community college affiliation while a senior in HS. I did all right...B+/A- average. Nothing spectacular, and I had to really bust my butt to get it.

    Upon arriving at college I enrolled in CalcII and was blown away within 4 weeks because of the vast chasm between the two classes, let alone how quickly the concepts of CalcI left my mind. I quickly dropped it and was much disheartened.

    My advisor said I would need to start over; I had to have higher maths in order to be a computer programmer. I was frustrated and very depressed...computers came extremely easy, maths did not. I felt Very Screwed(tm).

    Then I was visiting another CS professor in his office, a brilliant man, and we got talking about it. He said it was bullshit; if you've had algebra and geometry and a basic understanding of trig, unless you were going into game programming, advanced research, or something like AI, you didn't need more than that. Enlightened, I gave up trying to do higher maths and never did another class in them in college.

    And you know what? I've never, never needed what I don't have. The concepts and ideas I've retained from algebra, geometry, trig, and basic math have covered my ass more times than I dare say, and concepts in computer science have crossed any gaps that existed (discrete structures, etc.) I have no doubt that if I pursue a higher degree in CS that I'll need to take some or if I decided to get into graphics or such.

    Remember: Your education isn't as much as WHAT you know but that you know how to LEARN what you need to know. Develop your skill to be able to figure things out on your own and you'll prosper more than trying to remember vague abstract theories and theorms.

  111. CS and Math Major by HeaththeGreat · · Score: 1

    I double-majored in CS and Math.

    Here's the story at my University. We have 2 different CS degrees: BS and BA. The BA was a wuss degree. It was much less rigorous for software courses and had a lot of business classes. It was basically an MIS degree. The BS had very rigorous software and math requirements, and had absolutely no business classes. In fact, a BS CS major got you an automatic Math minor. It was 6 more Math classes to get the major, so I got. One extra semester, no biggie.

    I don't think that I'll ever use my math degree in industry, but as a person, not just as a software developer, Math is important. We use it everywhere, and its one of the last areas that you can major in that you can take your learned skills and apply them in nearly every industry.

    If I wasn't such a great developer and so in love with the field, I'd have no problem applying for almost any entry level position because of my Math background. Math has given me such a broad subject base and good problem solving skills that I'm pretty sure I could be good at just about anything given about 6 months to learn the job.

    This is the case for most Math majors I know. Many were supplementing their degree with a Math degree as I had, and they all could probably have gone into any field and been successful.

  112. Of course you need math! by Anonymous Coward · · Score: 0

    Computer science is a mathematical discipline. It happens to cross over with engineering in many places, but it is math. Computer Science programs just often have programming and software engineering courses of study as well. While these areas are related to computer science, and are of more immediate use in the business world, they're not the same discipline as computer science.

    Computer science: a mathematical discipline with a convenient physical working model. (If computers didn't exist, we could still simulate them on paper. You would have to be crazy to do it of course, but mathematicians are almost by definition crazy.)

    Software engineering: an engineering discipline with a large number of ethereal informational aspects.

    IT: a support discipline dedicated to understanding the real world implementations of the above two and making them work properly.

  113. That and then some by iPaul · · Score: 1

    If you do most contract programing (i.e. eCommerce style, or business domain problems) the majority of what you do is present information, accept information, and retrieve/store that information to a database. Almost no math is required. However, that isn't very interesting work IMHO.

    More interesting things like data-mining or games require advanced math. 3-D graphics requires matrix algebra and AI/mining techniques require some understanding of statistics and calculus. Performance analysis also requires an understanding of statistics. If you're doing modeling or simulation problems then you may need a good grounding in statistics, numerical methods, number theory, and differential equations.

    You should also have a course in combinatronics (sometimes called discrete math or graph theory). There are a lot of theorems regarding graphs, their traversal, structure, etc. that are extremely pertinent to computer science.

    If you intend to program mostly around business type problems you probably don't need much math although statistics never hurts. In many jobs you won't have to remember what a Taylor series is and what it's used for but you might need to implement some equation in code. Even in more technical jobs you might only have to remember enough linear algebra to make sure you're doing matrix multiplication correctly.

    No job I've held to date required me to do much more than addition and its tricky friend - multiplication. However, graph theory has been helpful to some degree. Also the degree of math required for your degree may be dependant on what faculty CS is 'in.' In some cases CS resides within the Math faculty as applied Math. If you wind up working for Wolfram Research, I imagine a mathematician (PhD) will tell you what to code more than you performing your own independant research.

    --
    Leave the gun, take the cannoli -- Clemenza, The Godfather
  114. Classical Computer Science by YetAnotherName · · Score: 1

    Depending on what your CS program is like, you probably can get a degree without the math. But I'd wager such a program isn't the classical computer science degree.

    The classical degree doesn't just cover programming but also includes algorithms, language and automata theory, computability, operating systems, systems programming, compilers, linkers/loaders, and at least a survey of language approaches (procedural, object-oriented, declarative, evaluatative, etc.); bonus courses in graphics, networking, correctness, and software construction are nice, too.

    Can you imagine a networking course with a probability and statistics background? There goes queuing theory.

    Can you imagine a graphics course without combinatorics? There goes region-coloring.

    Can you imagine a computatibilty course without elements of mathematics? There goes proving what you can and cannot do with computers.

    Yes, take the math: take at least prob/stat, combinatorics/counting, and basic elements/proof. And there won't be a software development problem you can't tackle---or prove you can't tackle!

    1. Re:Classical Computer Science by Daniel · · Score: 1

      Can you imagine a graphics course without combinatorics? There goes region-coloring.

      Graphics courses generally require more linear algebra (to do coordinate transforms and so on) than combinatorics. Neither of the courses I'm familiar with (ie: the one I took or the one I was a TA for) even included region coloring as a topic, and I doubt they're unusual in that regard.

      On the other hand, region coloring (or rather, 3-coloring) is one of the standard examples of an NP-complete problem, and combinatorics *are* important for complexity theory :)

      Daniel

      --
      Hurry up and jump on the individualist bandwagon!
  115. Recent Math/CS grad by donour · · Score: 0

    Courses topics found most useful: discrete structures (graph theory, number theory, combinatorics), real analysis, differential equations. To become a good programmer, make sure you take classes that require _projects_. Real, term long, projects. If you want to understand how things work, write an OS kernel. Write a compiler. Don't get caught up so much on learning this language or that. I found that as I started working on projects, I picked the language expertise up quickly. Don't be afraid to take graduate classes when you meet the prerequistes. It may not be easy, but force your way in.

    1. Re:Recent Math/CS grad by tomskillman · · Score: 1

      I have to agree. I learned a LOT in my OS class and my Complier class. Those were 2 of the hardest, but at the same time, I learned the most from them. Another good class is Analysis of Algorithms.

  116. Math never goes to waste by jalfreize · · Score: 1

    As a CS graduate I often wish I had better match
    teachers/better focus on math subjects back when I was an undergraduate.
    Those who disagree need only browse through Khuth's TAoCP and Hennessy/Patterson's book on Quantitative analysis of computer systems.
    Its a powerful tool which opens new vistas, and never goes to waste

  117. The Question Is Sad by kmsigel · · Score: 2, Insightful

    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?

    The fact that the second and third questions are even asked in a serious (or semi-serious) way reflects a sad state. How can you do any "real" programming without knowing Boolean algebra, theory of computation, integer math, algorithms, etc.

    Without knowing the underlying math, how can you understand the logical and arithmetic operations that your CPU can perform? How can you understand whether a given task is solvable? How can you understand how much time a solution should take so that you can compare it to how long it is actually taking?

    Ok, rant over.

    1. Re:The Question Is Sad by Doug-W · · Score: 1

      I disagree somewhat. I wish that the 'Why are these classes useful' was stressed more. When I was an Undergraduate we required 2 classes of linear algebra. I took both in my Sophomore year. It wasn't till my Senior that that the WHY became apparent in a computer graphics course. I felt somewhat cheated that I couldn't appreciate the reason why we were learning something at the time that it was originally learned.

  118. I disagree... by Anonymous Coward · · Score: 0

    I bet to differ...

    > CS is about finding algorithms, which has
    > more in common with cooking than calculating.

    Obviously, you never took courses in
    algorithmic and complexity or solvability.
    Those are basically applied math. :-)

    And as far as your description of the big O,
    small o notations are concerned... Well... :-/

  119. Re:CS has very little to do with math by KevinKnSC · · Score: 1
    You can learn CS without any math at all. CS is about finding algorithms, which has more in common with cooking than calculating.

    I think what you're forgetting is that the biggest thing you take away from a (good) math education isn't a set of equations and formulas, but is an ability to set up structured arguments and proofs.

    You say that CS is about finding algorithms. What exactly are you doing with them once you've found them? It sure would be handy if you could, for example, prove that algorithm A is always faster than algorithm B, or demonstrate that algorithm C doesn't handle certain situations, instead of just guessing or trusting your gut. That's exactly where a solid understanding of mathematics comes in.

  120. Mathemagic by rudga · · Score: 1

    Math is important for a programmer as it develops our logical thinking ability. There is no sphere in life left untouched by math. Btw, has anyone noticed the connection between Math and classical Music. A friend of mine suggested they are closely interlinked although I cant validate that...but it sounds very interesting..!

    --
    ~~~~~ rudga ~~~~~
  121. Amusing Anecdote by AKAImBatman · · Score: 3, Interesting

    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 at him and call *bullshit*. He didn't talk to me after that. :-)

    1. Re:Amusing Anecdote by Anonymous Coward · · Score: 0

      Hardware can scale almost linearly (well not quite but close). It is the problems that do not scale very well. That is the point behind that law. Each problem has its own set of 'transmisions', 'retrivals', 'phone home' sorts of things. Never mind just distributing the problems out to all the nodes.

      Scaled to infinity? Not likely. He would eventually ran into 'transmisions' problems where he did not have the bw to even feed the nodes or have them return the results somewhere meaningfull.

    2. Re:Amusing Anecdote by AKAImBatman · · Score: 2, Insightful

      Hardware can scale almost linearly (well not quite but close).

      Our ability to scale the speed of serial computations is primarily limited by the physical constraints of the universe. e.g. Light travels at a set speed. In order to make a computation happen faster, you have to make a more dense processor. As you start bumping up against the next limitation (e.g. computing at the molecular level) you have to get more clever about how you perform computations (e.g. Quantum computing.) Getting more clever requires application of new physics to computational sciences.

      Scaled to infinity? Not likely. He would eventually ran into 'transmisions' problems where he did not have the bw to even feed the nodes or have them return the results somewhere meaningfull.

      That was basically my point. He claimed he was using a super-powerful cluster to do exhaust modeling for a nuclear rocket. While he may have done such a thing (probably with incorrect assumptions in the physics model), he certainly did not do it on a cluster of the size he had claimed. Alternatively, he may have made up the performance numbers because he didn't know what the hell he was doing.

  122. You Should Learn How to do Proofs by Walker · · Score: 2, Interesting

    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.

    1. Re:You Should Learn How to do Proofs by eric76 · · Score: 1

      Of all the best programmers I've known, only one doesn't have a strong math background.

      Developing high quality software is a lot like proving a theorem -- you have to rigorously take care of every possibility.

      Practice proving theorems also helps you structure your proofs so that they make sense.

      For example, a non-mathemetician trying to show that A iff B is likely to just attempt one direction. If they do try to handle both, they're likely to merge the whole matter together into a mess that is nearly impossible to follow. And if you can't follow the proof because of the way it is presented, it is awfully hard to determine whether or not it is correct.

  123. Re:CS has very little to do with math by drxenos · · Score: 1

    Oh god, where do I begin? There is a lot of math in everyday programming. A don't think I ever wrote a program that didn't use it. Graphics, transformation, conversions, periodic processing, signal processing, you name it. Even if you could get by without it *in* the program, what about validation? Rate Monotonic analysis, CPU utilization, throughput. Try doing this without math. As for your comments about Big-O (and there are others, not just O), you have no idea what you are talking about. Big-O bounds the upper limit of an algorithm in time relative the number of elements being processed. If it take constant time regardless of the amount of data (i.e., array indexing) then it is constant time or O(1). If the time grows linearly with the amount of data (sequential search), then it is O(n). If it grows exponentially (brute force matrix multiplicition), it is O(n^2). If it grows logorithmically (binary search), it is O(ln n). You should really take a course in alorithmic analysis. There is a lot more to it than just guessing. It is a mathimatical analysis of how an alorthim will perform.

    --


    Anonymous Cowards suck.
  124. Discrete Math by Mignon · · Score: 2, Informative
    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.

  125. Re:CS has very little to do with math by Oscaro · · Score: 1

    The fact that this obvious troll is moderated as "interesting", is a little wonder that should be preserved as an example about "how NOT to moderate".

  126. Re:CS has very little to do with math by UTPinky · · Score: 1

    CS is not about finding, but about coming up with these algorithms, and that my friend, takes a lot of math skill.

    And your comment about Big O doesn't even merit a response. If you're just happy being a guy who knows how to hack together java or c programs, then great, math isnt necessarily that important for you, but you are merely just a programmer, so don't try to classify yourself as a computer scientist. Computer science is a very theoretical topic and invovles tremendous math knowledge. Remember that not all math is simply 5x=3, solve for x. Math is a problem solving subject. And not just a problem solving subject but find the best solution. Try doing some reading on some very theoretical subjects, heck try just picking up a book about networking (and I'm not talking about configuring networks, I'm talking about how networks are implemented, somthing like "Computer Networking: A Top Dwon Approach Featuring the Internet"), you'll find equations throughout the book, and thats a REALLY bad example.

    --
    I'm only paranoid because everyone is against me...
  127. Coding IS math. by Tim · · Score: 5, Insightful

    Ya know...maybe it's just my field (computational biology), or the fact that I've been in school for far too long, but the more I code, and the more math that I use, the more I see the two as different faces of the same beast.

    You don't have look at much interesting software before you realize that the difficult problems -- the ones that are fun to solve -- are inherently mathematical. And conversely, once you start seeing programming languages as expressions of underlying mathematical forms, they start to become very similar to one another. And I'm not even referring to bleeding-edge research code, either -- look at P2P networking, and you're staring into the eyes of a massive, graph theory problem.

    Anyone can write a shell script. Very few people can express mathematical concepts in code.

    --
    Let's try not to let fact interfere with our speculation here, OK?
    1. Re:Coding IS math. by Paulrothrock · · Score: 2, Funny
      Anyone can write a shell script. Very few people can express mathematical concepts in code.
      int c = 1;
      echo c;
      c++;
      echo c;
      Woohoo! I'm a mathematician!
      --
      I'm in the hole of the broadband donut.
  128. Computer Science Engineer by SadPenguin · · Score: 4, Insightful

    This is all so true. I am a computer science major at the Tufts School of Engineering, and the math requirement is huge. I appreciate it though, and I am seeing all the time that the more comfortable I am with math, the more clever and efficient my solutions to large computing problems becomes. Math is the basis of computer science. It allows us to *compute*, which is the obvious origin of computer science. The function of these machines is to process computative operations, and Math is the tool by which we can understand these things, and engineer new more efficient ways to perform them. CS without math is nonsense, who proposed that anyway???

    --
    sigSEGV - doy!
  129. Engineering Probability/Statistics by sphealey · · Score: 2, Insightful
    The most useful math class I ever took (from the perspective of engineering, IT, and life in general) was Engineering Probability. Note the word Engineering in the title - it was taught in the Engineering School, not the Math Dept or (shudder) the Business School. I have used techniques from that class at least once a month for 20 years, and I cannot say that about any other class (except Intro to Political Thought, but that's another topic).

    The particular class I took was one of a pair; mine was 2/3 probability and 1/3 statistics. The twin class was 2/3 statistics and 1/3 probability. Either version would have worked in the end, but I suspect most engineers find probability more interesting.

    Take them if you can find them, even if you have to go to another school to do so.

    sPh

  130. math comes in for research by dioscaido · · Score: 1

    While in undergrad, I though the Math requirements were useless. Programming != Math. But... in Grad School, in order to do any kind of research of consequence, you must characterize a lot of what you do Mathematically. I was amazed at the amount of Math that permeated all tasks. It is amazingly useful to be mathematically skilled when having to deal with real problems, past the simple building of an application.

  131. That "I know math" feeling by SourceHammer · · Score: 1

    Throughout my computer "science" career (which now is more business than science), I always felt that I was just more comfortable having the math behind me. I have often heard people in software development lamenting that they never had the hard math - even if they really didn't need it.

    So take the math to help your self-esteem.

    --



    Open source development is my way of competing with the low-cost programmers in India...
  132. College's Dropping the Math Ball by christowang · · Score: 1

    I'm disappointed with what Math is required for CIS majors over CS students. I went to college where it was convenient for me, so I could have cared less about the education. This being said, when someone new came in to head the CIS department at my school, they actually dropped Calculus I as a requirement. I was astonished. Of course, I realize CS and CIS are totally two different things, but what are they telling the students by doing this? That grammar and history are more important parts of IS, then math? I just don't get it. I was amazed that people in my classes had no idea what binary and hexadecimal numbers actually where, forget about actually converting from decimal between the two. I'm still saying maybe 10% of all colleges actually educate their students with useful curriculum.

    1. Re:College's Dropping the Math Ball by mrchaotica · · Score: 1

      Not to mention that actually learning how to convert between them is relatively easy, once they teach you what they are - learning what a radix is is much better than saying "keep dividing by 2 until you get a remainder of 0"

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  133. Math/CS double major by JM_the_Great · · Score: 1

    I'm actually a Math/CS double major at Georgia Tech... The two subjects are so integrated these days - they're completely inseperable. Most Math people work on computers all day, and most CS people deal with Math constantly (unless they're '1337 d00ds 7h47 kn0w ASP and can make a 5h177y website). Even last semester, I had a proofs class which was clearly the domain of Math - but it was taught by the CS department. Additionally, our Intro-to-CS class uses Scheme - which is based on lambda calculus - a mathematical construct.

    I think if CS majors stopped bitching about having to learn Math, they'd be much better off. Understanding the connections between the two will only improve your understanding of both.

    --

    --Justin Mitchell
    "2nd Place is a fancy word for losing" --Bender (Futurama)
    1. Re:Math/CS double major by Anonymous Coward · · Score: 0

      UIUC has a similar major, called Math/CS. It's a single major with a whole lot of math, and the essential CS classes.

      I'm currently enrolled in it, and I will advise anyone who follows this route not to take Graph Theory:).

  134. Many can PROGRAM without Math by dmomo · · Score: 1

    Programming is merely a tool we learn to help make use of what we learn in Computer Science. Anyone can learn to program at some level. Just like anyone can learn to use a calculator. Making these tools do something interesting/novel/innovative/useful is another story.

    Yes, you need to make use of math.

    At least, the ability for some form of math-like reasoning! Granted, some are not great at math, but are great at Computer Science. These people still have a strong mind for math, just not the discipline to work it out on paper formally. They are still great problem solvers. They likely did bad in Trig/Calc, but great in Geometry or Logic.

    I think that the main thing that makes a strong Computer Scientist is that they enjoy Computer Science. This is why some do not do well in Math, but excel at CS. It's not the mind, it's the attention span. In fact, many itching to solve a Computer Science problem will figure out the math when they need it. It has become interesting. But, the itch has to be there. The curiosity has to be there. The desire to tinker, rip it apart, and (hopefully) put it back together has to be there. And if learning to program is the the tool to get it done, so be it!

    My first year taking CS classes showed this to me. The intro class went from 90 at the beginning of the semester to 40 at the end. Many of those people who decided "Computer Science is a good idea, because it's where the jobs are" (this was five 7 years ago), though smart, didn't have the interest needed. More than half of the class dropped it. Others ( a mix of good and - not as good - students) did very well.

    So, yes, you may not need the math, but you need to have the ability to solve the problem. Please, do everyone a favor, and only persue CS if it is interesting to you. I know too many people that know all sorts of languages, and are over-confident, land great jobs and then are not great at their jobs. There's a lot of unemployed or underemplyed IT people out there with a lot of real talent who need a job and will do it well.

  135. Math is essential for learning Theory by VersatilePrimate · · Score: 1

    This is my third year at University of Texas at Austin and as a dual major and CS and Pure Math, I must say that my mathematical background is more than helping me in CS. IMO to become extremely good at programming, a natural understaning of working of algorithms is essential. It is important to take a theoretical course in analysis of algorithms. Once you formally prove an algorithm and its workings, you gain a natural understanding of its behaviour. Pure math classes give you the requisite mind set to understand and prove the correctness of algorithms and for that matter anything CS related.

    1. Re:Math is essential for learning Theory by Anonymous Coward · · Score: 0

      But what good is theory without eventually being able to apply it to something. This is one of the reasons I hated math as a student. Teach the theory. Fine, yes. But please tie it to something that I will eventually use.

      These days, we're all specialists at something, so if you don't get around to applying knowledge to a task, then people WILL drift away. Math requires so much more patience than most folks (me include) are willing to give.

  136. Good point. by Saeed+al-Sahaf · · Score: 4, Insightful
    Since when did DeVry have a "surprising reputation"

    Modded "flamebait" but it's a good point. DeVry, ITT Tech, Phoenix U and so on have questionable standards. Why? Because their main purpose is to separate students from money, not teaching. I think that even a more or less unknown state college is better, at least their mandate is to teach, not separate money from the marks. The parent also mentions that he thinks these schools primarily teach management, and that is certainly true of Phoenix, who's primary clientele is management looking for the coveted Masters so as to be able to move on to tenured PHB status.

    --
    "Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
    1. Re:Good point. by sparkywonderchicken · · Score: 0

      I disagree with your characterization. Many colleges and universities offer curricula that fit the needs/wants of the faculty and not the needs of the student. When I went back to school for a CompSci degree I had to take many classes containing math I have not used in 20 years. However, the same could be said for any major. My first degrees were in Geology and I learned a lot of things I never used. Disclaimer: I have served on the board at several ITT campuses. The board meets to see from an outside perspective what classes should be within the curricula. Does Podunk State do the same?

    2. Re:Good point. by jneemidge · · Score: 1

      This is actually completely factually incorrect -- and I say that from the perspective of someone with a graduate degree in CS from a top-tier university program. Most of the technical schools do a very good job for the students they educate. They're legally required to -- unlike traditional universities, technical schools are judged primarily on two criteria _only_: graduation rate and placement rate. Fall out of the norm on either of those and you lose the ability to enroll students with federal matching funds, grants, etc. -- which is _immediate_ death for the school in question. Most students attending a technical school have already tried traditional university (or community college) programs and can't make it there; a technical school program is their last chance.

      The only way for the technical schools to stay in business is to graduate a high percentage of their students and place a high percentage into jobs related to the educational program the student completed. Fail to do that, they're shut down, cold. As part of this, technical schools are _far_ more likely than larger universities to give individual attention and work with students in a personalized fashion to handle outside issues, etc. They are also certain to teach only material required for the specific job -- a technical school is not going to require any math, science, English, etc. that's not specifically job-related.

      University education is an entirely different thing. Most university programs, when you boil them down, are about teaching you to learn, about making you a well-rounded person, about exposing you to new ideas and concepts, teaching critical thinking, etc. They're not about specific job preparation. Universities would crash and burn if evaluated by the standards used for technical schools; technical schools would go wild and waste everyone's time and money if evaluated by the standards used for traditional universities.

      According to most surveys, University of Phoenix (not a technical school, but a university offering a nontraditional program) does quite a good job of teaching MBA students. However, there's a huge glut of MBA's out there, and Phoenix doesn't have the name of a top-flight MBA program. For that reason their value is questionable -- but it's not because of questionable standards.

    3. Re:Good point. by Coltman · · Score: 1

      I think that even a more or less unknown state college is better, at least their mandate is to teach, not separate money from the marks

      While not entirely true you are right. I got my Diploma from a local college and the education I recieved was excellent for what I paid for. But when entering the work force I was joined by ppl who had thier BS and Masters, from Larger University's (UBC, UofVic and BCIT - Canadian, British Columbian Biggies) I found I was on the same level as them when it came to solving problems. There came many times I was showing them how to do things that I felt they should have known.

      Now I know that different ppl learn differently but I mean thats not the only job where I have been in that position. As I only have a diploma I should not be as knowlegable as someone with a masters from a big well known school. Some how I know who got separated from there money, and who got taught.

      The point is this, if you want an education look for the schools that are smaller, and more affordable. Preferably one that is accredited with and association that has the same goals as you. If you are just in it for the money go for the big names and shell out the money.

      Sometimes looking back over my unemployment history and the trouble I have getting proper work I think I would have been better off being separated from my money. The names sell better for the job.

      --
      - my $.02? - you can't have it...it's all I have!!
    4. Re:Good point. by Anonymous Coward · · Score: 0

      Because their main purpose is to separate students from money, not teaching.

      I dunno, their purpose could be to separate students from teaching...

  137. Probability and Statistics! by mekkab · · Score: 1

    Your code needs to be 99.999% reliable. How the heck do you do that? Probability and Statistics.

    You want to figure out system load from network usuage; how do you do it? Model network traffic as a laplacian distribution.

    I'm not saying you need to calculate the autocorrelation of two random processes, but if you want to prove to others that your design has merit, throw some math at it.

    --
    In the future, I would want to not be isolated from my friends in the Space Station.
  138. Re:CS has very little to do with math by Stween · · Score: 1

    Big O notation simply isn't intended to be used as an indication of just how fast the algorithm is going to run given a sample data set - there's no point, because different implementations of the same algorithm in different languages using different data structures on different architectures renders any approximation of running time redundant. Big O notation is a guideline to the performance of the algorithm given certain sizes of data set. It's a more abstract concept which goes hand in hand with the abstract concept of algorithmics, but provides some basis in reality for reasoning about the performance of an algorithm.

    If you have two sort algorithms, one is O(n^2), another O(n), you'd want to implement/use the O(n) one; you can see at a glance just which algorithm is the better of the two.

    It's a tool used in the field of algorithmics, a field which is definately not my speciality, and evidently not yours either ;)

  139. CS is Math by Marc_Hawke · · Score: 1

    At the University I went to, there is so much math required for a CS degree that you only have to take 1 or 2 more classes, and you can graduate with a Math minor.

    I didn't do that because I hate 'doing' the math. (Failed a couple courses.) I didn't hate the math, and I understand the concepts, and I'd love to put them into an algorythm or program, but I hate DOING the math. I don't like writing it on paper.

    Of course, in my graphics class, my atom orbitted the viewpoint rather than the electrons orbitting the nucleus. :) Maybe I'm not as good at math as I thought. :)

    --
    --Welcome to the Realm of the Hawke--
  140. CS = Lots of Math by ActionAL · · Score: 1

    If you pick up the Art of Programming series of books by Nuth, you will see that it is ALL math!

    Math is essential to CS. Even higher level math
    that is used in CS Theory classes that are all
    theorems, lemmas, corollaries and their proofs.

    People who walk through a CS degree without taking a CS Theory class do not really have an understanding and appreciation for Computational Science which is what Computer Science truly is.

    Programming can be done by anyone. Sorry I don't
    care how good of a coder you are, your job is going to be outsourced. Unless you learn how to
    advance or create new ways of computation at the base level then you are in trouble.

  141. Marvin Minsky said it best.... by sfm_guy · · Score: 3, Interesting

    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.

  142. Complex Variable Calculus for any DSP by StandardCell · · Score: 1

    I know that a lot of CS majors don't want to get into what's traditionally an EE domain. However, for a lot of companies, EE, CE, CS, Physics and sometimes Math are all more or less equivalent if you have the right course background.

    If you want to deal with anything signal processing related, you'll probably need to take a course in complex variable calculus to understand digital filters and the discrete frequency or "z" domain. In my undergrad EE academic stream, that was the sixth and last math course that I took. The courses prior to that were Calculus I, II and III and then Differential Equations I and II. Even then, we had taken another course on signal processing which was mostly math and dealing more in-depth with Fourier series, Fourier/Laplace transforms, sampling rates, and the like. Beware - complex variable calculus is an extremely difficult course to take, though to me not as bad as taking that awful formal proofs class which I thankfully was able to bypass the torture of.

    I'm not sure the average CS major wants to take all of that on for DSP, however. In reality, you more or less end up gravitating towards an Electrical/Computer Engineering degree at that point. That's also assuming you can fit all of that into your program.

  143. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    AMEN. A-freakin-men!

  144. What about business oriented computer science? by bean_tmt · · Score: 1

    I'm currently in a computer science program, however my emphasis requires less math (only business calc after college algebra) and more business classes.. I will end up taking classes like coporate finance, a couple accounting classes, management, and several BA classes in place of the higher math classes. Of course, I won't be able to take the upper level 3d graphics classes, but other than that, the CS classes are almost exactly the same as the other CS emphases that require more math. I would like to hear the opinions about this from people already working with CS degrees...

    1. Re:What about business oriented computer science? by iPaul · · Score: 1

      I have an MS in CS and a Math minor. My working experience is focused on Business type problems -where an undergraduate background in accounting has been mostly helpful. I think you can work in Information Systems and have little or no math background - but a strong business background and do quite well. You may even implement solutions to fairly complicated business problems partly because you can better understand business issues and little or no math is involved. In fact, the vast majority of "programming" jobs will be in this realm.

      With that being said, I think you only truly get a good handle on CS with what another poster called a "Classic CS" degree. That's one that delves into issues like compilers, linkers, computer architecture, performance analysis, and AI. Those classes do require statistics - at the very least. One thing I haven't seen mentioned is the role of mathematical proving. Sometimes you can't test an algorithm (usually because it's parallel) so you have to apply formal proofs to sections of the code. That's something you really learn to do in linear algebra/multivariate calc.

      --
      Leave the gun, take the cannoli -- Clemenza, The Godfather
    2. Re:What about business oriented computer science? by bean_tmt · · Score: 1

      Thanks for the info, that helped me understand the pros and cons a lot better. My dilema is that I struggled in math in High School so I'm very far behind now in college.

      This is the emphasis i am working on: Information Technology

      Could anyone with a degree or a lot of experience in CS tell me if it looks like a reasonable program? The reason I want to do this emphasis is because of my limited math abilities, however, I don't want to cheat myself of the proper education for a computer scientist.

    3. Re:What about business oriented computer science? by bean_tmt · · Score: 1

      i think i replied to my own post, just wanted you to see that i replied.

  145. Think math by Max+Malini · · Score: 3, Interesting
    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.

  146. Very useful by tomfuck · · Score: 1

    Math will be very useful when you find out you can't get a job with a CS degree and you wind up working the register at McDonalds.

    1. Re:Very useful by plastic.person · · Score: 1

      True, most these people here who seem to think that "coding" is a real job will end up working the cash register at McDonalds.

  147. Map of Math to software by G4from128k · · Score: 1
    Here is a quick list of math topics and the corresponding software categories that really use that type of math.
    • discrete mathematics: logic-heavy algorithms (operating systems, databases, compilers, control systems, embedded systems, AI)
    • trigonometry: graphics, physical simulations (game engines), mechanical engineering software
    • linear algebra: graphics, control systems, optimization software
    • calculus and differential equations: physical simulations (game physics engines, analog circuits, heat transfer, etc.), analog control systems
    • statistics: finance, scientific programming, enterprise software, optimization software, AI
    I'm sure others can think of other mappings (like crypto depends on several different math topics depending on the underlying code scheme). And if you don't know what type of programming you will be doing, then take some of everything. Math really enhances analytic skills and logical thinking.
    --
    Two wrongs don't make a right, but three lefts do.
  148. My experience by JoshMKiV · · Score: 1

    I went to a state school, but one that has CASB/ABET accreditation (pretty rare - only one in the state system to have it). Our math requirements are now four classes Calc I or above. So pretty much Calc I and Calc II, and then two more - such as some high level logic courses, discreet stuff, etc. Now... How much Calc have I used? I actually pulled out a Calc book once when I was coding. No lie! But only once. The logic stuff helps, not in a "you will use this" way, but in the "it teachs you to think like... " type of way.

  149. Mixed Bag by UID30 · · Score: 1

    As far as math goes, back in the early 90's I had to have up thru Calculus 3 for a BS in CS (public state university). Careerwise, I rarely use math more advanced than pointer arithmetic and boolean logic ... and when I do dive into the deep end of math, I usually have field-knowledgable professionals at my disposal to verify my logic.

    I think this question leads straight to the "degree vs no degree" debate in computer science. I've seen many comments about how many computer skills come on-job rather than from the school room, and I tend to agree with that argument up to a point. I know that 90% of my everyday useful computer skills came on the job, HOWEVER, in my work experience I've worked with many degree'd and non-degreed computer folks, and in general the degree'd associates generated better quality of work. This is not to say that there are not many talented non-degree'd programmers ... but in my opinion, exposure to advanced topics in school gives a programmer an edge over folks who may never be exposed to concepts because the workplace never required it. School teaches you how to learn and exposes you to advanced concepts you "may" never need ... but then if you've never been exposed to a concept you sure as hell will never find a case to use it.

    Wash, Rinse, and Repeat for all advanced college courses.

    --
    "Glory is fleeting, but obscurity is forever." - Napoleon Bonaparte
    1. Re:Mixed Bag by Anonymous Coward · · Score: 0

      good way to justify all that time you wasted chasing the degree. Too bad your anecdotal bullshit is tissue thin - but what can we expect? You're an overeducated pompous boob.

    2. Re:Mixed Bag by UID30 · · Score: 1
      You're an overeducated pompous boob.
      ... with 14 years real world experience (get this) programming. Oh ... and if ya gonna try and dis me, at least be a man and sign in, ya (wait ... let me copy & paste...) Anonymous Coward. For once the name fits.

      Seriously tho ... how many non-degree'd programmers would know when and where to use a n-phase merge sort over a standard quicksort algorithm? Binary vs iterative searches? Hell, proper use of simple recursion? Experience shows you how to do these ... but education plants the concepts in your mind and can give you some insight on when they are the proper choice.

      If you don't understand the benefits of the broad exposure to concepts that a structured college education can give you, then it is probably not for you. Find an education system that works for you and go with that ... just don't settle for ignorance like the Anonymous Coward from above.
      --
      "Glory is fleeting, but obscurity is forever." - Napoleon Bonaparte
  150. MAth majors. by SatanicPuppy · · Score: 1

    I've never worked on a major math project where I didn't have a math major doing all the equation work for me.

    The sad truth of it is, Calc II isn't enough math to do most of the things they ask you to do, so unless you pursue extra math on your own, you're going to need help anyway.

    It's been my experience that most programmers know something about math, and most math people know something about programming. I've never had much problem working with a math person. Much better than a lot of the other pure science types.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  151. UofM by Remlik · · Score: 1

    The University of Minnesota offers Computer Science degrees in its IT (Institute of Technology) department. All IT majors require a complete Calculas course (4 semesters), 2 semesters of Physics (basically more Calc) and Statistics (lots of fun math there, including more calc).

    Math is more about learning how to think about problems and solutions than anything else. You'll use that skill every moment of your life.

    --
    Apple free since 1990!
    1. Re:UofM by sceptre1067 · · Score: 1

      Which is why I didn't finish my degree there....

      First a side point, as I'm married to a Michigander, It should by U of Mn (cause the people in MI will think you mean AnnArbor) :-)

      The IT degree is good if you're intending on supporting and/or bedoming a scientist or engineer. But it is overkill for the business world.

      An insurance company I worked for (based in downtown St. Paul) would not recruit from the U of Mn Twin Cities. Mainly because the focus of the program was too technical (e.g. the employeer would prefer you to have a GPA > 3.5, but the IT program was so technical that any grad witha GPA that high was going off to support engineers or other technical labs, not business software like financials etc.)

      I think that the root of the need math vs. don't need math debate lies at this level. It all depends on what you intend to do with it.

      Personally I like to know the technical underpinngins (I bought TAOCP by Knuth and am _slowly_ working my way through it. But I'm a masochist.) yet if you're doing business programming it is more worth while to get an understanding of statistics, how to trawl for requirements, and how to communicate with your customers.

      Just my $.02

    2. Re:UofM by Remlik · · Score: 1

      Being a Graduate, and having worked with non-degree holding IT personell I'll have to disagree with you.

      GPA based pigeon-holeing went out with the 80s...Any company still using it for any real measure of a candidate needs to wake up and read a resume.

      The very three topics you bring up (stats, requirements, and communication) are expressly taught from DAY ONE in the CS department. Take the UML Software Engineering course...if you aren't a babbling requirement fiend after that you'll never be one. As for communication...hell every single class on campus FORCES group work for nearly every assignment/project. If you can't communicate effectivly you will fail out of the school.

      A 4 year CS degree program from most universities is so much broader than just teaching CS. Hitting a couple tech schools will give you the fast and easy tools to make a quick buck, but will leave you outside the big picture with little to grow on.

      But yea...one probably doesn't need advanced Calc for most programming positions.

      --
      Apple free since 1990!
    3. Re:UofM by sceptre1067 · · Score: 1

      Picking a few nits...

      Yes I agree one should look at a resume, but the company I was at was hiering people right after graduation so... GPA does factor in. By the time you have one to two jobs under your belt (depending on length of time spent at those jobs) then the GPA won't matter. But then again it was an insurance company, not exactly a bastion of the cutting edge...

      UML != requirements gathering. Its a modeling language created so that one could easily explain systems to one's peers not the end user. Use cases (the textual portion, not the diagrams) gets you closer. But I'm not familiar with the course listed so I do not know if they are also teaching things like story writing, user stories, direct observation, interviews, and various other methods of eliciting requirements from your customers.

      IMO group projects can help in teaching communications, but there are a lot of lessons wich I've learned on the job not covered in my time in college. The big one is how to deliver bad news, how to deal with a defensive client, and similar situations where a group project doesn't quite help. Mainly it depends on the prof's focus of the project. Is it really about group work or about learning material in the course (e.g. in a communications class the pupose is obvious, but in a database class it could be either or both, ymmv.)

      As for failing out of school if you can't communicate effectivly... The U of MN must have changed a lot since I attended in the 80's cause lord knows that wasnt't an issue...

      I agree a 4 year degree (reagardless of major) is more broad then any career path a person might choose. As has been indicated in other posts the major benefit to students is giving them tools whith which to understand and evalute the world around them (from logic & math down to history and language.)

    4. Re:UofM by Remlik · · Score: 1

      Yea, the U has changed...for the worse I believe. I attended from 96/97-02 (took the slow path because I was working 30 hours a week in the field).

      80% of the IT CS dept is of Asian or Indian descent, and english is the second spoken language in most classes. I don't mind diversity but when you can't actually speak the same language as your group memebers learning anything becomes a chore.

      Group work is forced upon you even when not needed because the U was highly criticized for its graduates poor skills in that area...well they fixed it good.

      I think you and I mostly agree. I realize learning the finer points of client control is somthing that can really only be taught in situation...but that goes the same for nearly everything in this world. Its easy enough to read a manual describing how to restore a server upon hardware failure...its a whole nother world when your sitting in front of it with $$ ticking away.

      Good luck!

      --
      Apple free since 1990!
  152. simularities by DougMackensie · · Score: 1

    The places where Math and (theoretical) Computer Science meet are usually based around logic problems. Having graduated with both Math and CS degrees, I would say that the upper level Math courses (Linear Algebra, Diffy Q, and other semi-grounded math) cooresponded with the Upper Level CS courses (N-notation, and other algorithm study) in their use of "mathematical" logic. It takes a while in most curriculum to see this, but the simularities were evident Junior and Senior years. It depends on the field of CS/Programming that you will go into. Most complex algorithms use plenty of non-number based math (never need to touch a calculator), while many real-life Programming (3d graphics) use plenty of numbers-based math.

    Personally I started out as a straight CS major, but I enjoyed the math a great deal, and with the addition of 4 or so extra Math courses, I was able to complete the Double Major. In the real world, I'm currently only interested in the Math angle of things, instead of the CS/Programming.

  153. Rutgers by form3hide · · Score: 1

    Hmm... the math courses I must take for my CS degree?

    Calculus I
    Calculus II
    Linear Algebra

    I'm at Rutgers University in New Jersey.

    1. Re:Rutgers by jeffmulder · · Score: 1

      Calculus I
      Calculus II
      Linear Algebra


      I'm 2002 Rutgers-New Brunswick grad who double majored in CS and Math. No way are those the only math classes you need for the degree. You forgot Discrete Structures I, Discrete Structures II, and Numerical Analysis. Plus there are at least half a dozen math department classes that can be used to fulfill elective requirements.

  154. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    If you have two sort algorithms, one is O(n^2), another O(n), you'd want to implement the O(n) one

    Really? Even if you could whip up the O(n^2) one in half an hour and have a working product today rather than two weeks from now when the O(n) algorithm's complexity is finally hashed out in code?

    There's a lot more to actually engineering software than just "picking the right algorithm". If you think that the fastest algorithm is always the right one, then they've got a teaching post at the local community college for you.

  155. In a lot of ways, it depends on the CS program by foxtrot · · Score: 1
    Many universities' Computer Science programs started in the math department, and those institutions will tend to require more math for a CS degree than some others-- not because you need it, but because that's just the way it's always been there.

    My BSCS is from Georgia Tech; I had to take

    • 3 quarters of calculus (15 quarter hours, one academic year, the same stuff the engineers took)
    • Two more quarters of calculus (eight hours. When I got to Tech, these were the same classes the engineers took, by the time I took them they were more specialized for CS majors)
    • One quarter of combinatorics (3 quarter-hours)
    • One semester (yeah, they changed over to semesters part-way through my degree) of probability and sadistics. (3 semester-hours; previously it was one quarter each of prob and stat; 6 total quarter-hours.)


    And at Tech, the CS department wasn't part of the math department. Expect even more math from a school where they're still closely related.

  156. once again... by Gingko · · Score: 1

    The comments are again basically composed of a bunch of software engineers shouting "I don't use calculus!" as if becoming exactly like them were the sole purpose of taking a Computer Science degree.

    God damn.

    Look, a Computer Science degree is an end in itself, and should present a *superset* of skills and knowledge needed to become a software engineer. Maths is super-important. Want to do graphics? Calculus is a big thing if you want to mess with Kajiya's equation. Machine learning? Linear algebra's all important to those embedding linear classifiers like SVMs. Set-theory, predicate calculus, all sorts of symbolic logics and discrete maths are incredibly useful for understanding language theory, algorithms and AI.

    For god's sake, view university as more than an exercise in getting a job and getting laid. You might enjoy it more.

    Henry

    --
    i don't do sigs. oops.
  157. Re:CS has very little to do with math by donour · · Score: 1, Informative

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

  158. Coding and Math: a short proof... by turnstyle · · Score: 1
    "Does programming really have that much to do with math?"

    Short proof: YES and NO

    --
    Here's what I do: Bitty Browser & Andromeda
    1. Re:Coding and Math: a short proof... by eric76 · · Score: 2, Interesting
      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.

    2. Re:Coding and Math: a short proof... by turnstyle · · Score: 1
      "Proof?"

      Yes: "Yes and No"

      Alternatively, I could have said:

      "1 and 0"

      "true and false"

      "on and off"

      Note that I don't mean to say "Yes AND No" (or "1 AND 0") because then, clearly the answer would have to be "No".

      --
      Here's what I do: Bitty Browser & Andromeda
    3. Re:Coding and Math: a short proof... by Anonymous Coward · · Score: 0

      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.

      This post proves the limitations of a Math background vs. a Physical Sciences background. You have presented correlation as causability

  159. I am a Math Major by Kjuib · · Score: 1, Informative

    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.

    --
    - Your stupidity got you into this mess, why can't it get you out? -Will Rogers
  160. Basic math should be fine by nizo · · Score: 1

    I can truthfully say in every programming job I have ever had nothing beyond basic math was needed. Of course the requirements you will need to graduate are usually insane, but that is another story. The way things are going, computer majors will need basic math skills to give correct change when all of their jobs get outsourced and they end up working at McDonalds.

  161. analogy by moviepig.com · · Score: 1
    Programming is to Math as a steering wheel is to an engine.

    If you're traveling into the wilderness (or anyplace similarly interesting), you'd do well to be on speaking terms with both.

    --
    Seeing bad movies only encourages them. Watch responsibly
  162. course list by THOK · · Score: 1

    Man I wish somebody had told me this stuff.. As a grad student I'm finding my math sorely lacking. Here are my reccomendations:
    1) Of course, calculus. Pay attention to things like area calculations and Taylor approximations.
    2) Linear Algebra (!)
    3) Abstract algebra and number theory. I can't stress this enough... so many areas in CS these days use concepts from these subjects.
    4) Probability
    5) Graph theory

    --
    Huck a can of spam at me-- s/pikablu/u/
  163. Yes it does by Anonymous Coward · · Score: 0

    Programming is math. Anyone who tells you different is either lying or doesn't know what he is talking about.

  164. Physics was my problem by Kainaw · · Score: 1

    Math was not a problem when I got my BS in Computer Science. It was physics. Actually, it was politics.

    I was required to take Calc I and II and two other math courses. I chose Discrete Structures - a great class for Computer Science majors, and Digital Logic (I think it was actually called something like Binary Mathematics). Calc II isn't easy, but it isn't impossible either.

    The problem came in with our Science department. They have tons of physics professors but nobody wants to take high level physics courses. So, they talked the Computer Science department into a deal. All science majors (Physics, Biology, etc...) will be required to take an introduction to computers course. In exchange, all Computer Science majors will be required to take a full year of advanced physics courses as well as two 'authorized' science classes. Luckily, one of them was Digital Logic again (I don't remember the real name of that class).

    Advanced physics is hard because there are no rules. For instance, I had one test with a guy on a bike coasting up a hill and you had to guess his speed at the top of the hill. I got that correct. A month later, the exact same question was on the test. I gave the exact same answer and got it wrong because now we were using different formulas that give different answers. Apparently, the 'correct' answer in physics depends on which chapter in the book you are in. Needless to say, the second semester of physics busted my 4.0 and I have had a strong distaste for it ever since. Don't get me wrong though - I would have lost that 4.0 anyway. I hadn't taken the required Liberal Arts classes yet. But at least I can comment my code with sonnets now.

    --
    The previous comment is purposely vague and generalized, but all of the facts are completely true.
    1. Re:Physics was my problem by Anonymous Coward · · Score: 0
      Advanced physics is hard because there are no rules. For instance, I had one test with a guy on a bike coasting up a hill and you had to guess his speed at the top of the hill. I got that correct. A month later, the exact same question was on the test. I gave the exact same answer and got it wrong because now we were using different formulas that give different answers. Apparently, the 'correct' answer in physics depends on which chapter in the book you are in. Needless to say, the second semester of physics busted my 4.0 and I have had a strong distaste for it ever since. Don't get me wrong though - I would have lost that 4.0 anyway. I hadn't taken the required Liberal Arts classes yet. But at least I can comment my code with sonnets now.
      Physics isn't about using the right formula. It's about understanding what the problem really is about and deriving a solution based on this understanding! This is why you can get almost full points in a test even though your actual results are wrong... its because you got the right idea.
  165. What IS important... by SharpFang · · Score: 1

    1) Logic. If you read if(a && b & (!c)!=d) you should be able to understand it and also be able to reduce statements, finding i.e. least number of operations necessary to unambigiously distinguish discrete states.
    2) Learn that friggin' hex, bin, oct at least!
    3) Calculus. And above all, understand the basic principles of
    lim[h->0](f(x+h)-f(x)/h
    and learn to apply that in your programs. It's pretty much essential.
    4) Planar geometry, if you plan on any gfx. 3D if you plan any 3D. Understanding basic concepts is important. Also matrices if you plan on any image processing.
    5) Numerical methods. Come in handy now and then. Especially optimisation.
    6) Basic transformations and other useful equations. No pow() but you have ln and exp? well, how much is x^17?
    7) Fourier and family for compression/decompression (lossy) of multimedia.
    8) Probability for lossless compression.
    9) basic algebra, eh, you won't move far without y=ax^2+bx+c... :)
    10) All the rest, just cuz every nerd should.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  166. Definitely. by Anonymous Coward · · Score: 0

    You really can't do anything in the field of science without sufficient math skills.

    for CS:
    Analysis of algorithms and big O type work requires at least some experience with proof by induction, which you encounter in Calculus II in relation to series and sequences. I haven't done anything more advanced (I'm just a freshman) but I would think it starts there. Probability is important too, I would imagine, for analyzing hash codes and cache misses and other random stuff.

    (Offtopic: In physics I've learned the almighty powers of integration. Sure, you can learn the pure math, no problem, but when you actually use the stuff...wow. I couldn't imagine a modern-day world coming into existence without calculus to help it along.)

    General math rant:
    But really, I don't see why math is such a big deal. I accept as a matter of course that I'm required to have Calc I-III, Statistics, Discrete Math, and Linear Algebra, even if I won't use them much. Math is the tool that enables the pursuit of higher knowledge.

    People have been intimidated by math for way too long. There's really nothing to be afraid of. If America changed its attitude about math, then it wouldn't have to worry about losing its technological edge.

    1. Re:Definitely. by Coryoth · · Score: 1

      Analysis of algorithms and big O type work requires at least some experience with proof by induction, which you encounter in Calculus II in relation to series and sequences. I haven't done anything more advanced (I'm just a freshman) but I would think it starts there. Probability is important too, I would imagine, for analyzing hash codes and cache misses and other random stuff.

      If you are doing any sort of information theoretic work I would strongly reccomend also doing some courses in commutativbe algebra (groups, rings, fields etc.), as having a good understanding of polynomial rings and finite fields will make otherwise complicated topics trivial.

      Jedidiah.,

  167. Descrete Math! by Anonymous Coward · · Score: 0

    Descrete math, which deals primarily with sets, set math, and proofs, is very important. At my college, all of the CS majors had to take this, and it was one of the hardest classes for all of them. When you're trying to solve a problem, and you want an algorythmic solution, one that will work every time you use it, you've got to be proving something. Descrete is where you learn to do that.

  168. I think it's a good example as to why.. by PrimeWaveZ · · Score: 2, Interesting

    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!

  169. Re:CS has very little to do with math by Stween · · Score: 1

    "Really? Even if you could whip up the O(n^2) one in half an hour and have a working product today rather than two weeks from now when the O(n) algorithm's complexity is finally hashed out in code?"

    If it really would take you that much longer to implement the quicker algorithm, you probably shouldn't be in that engineering position you speak of ;)

    The discussion is not on real life engineering, however, we're talking about computing science.

  170. My experience by kneecarrot · · Score: 2, Interesting
    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.

    --

    I always save my last mod point to mod up a good troll. You people are too serious.

  171. Re:CS has very little to do with math by drxenos · · Score: 1

    Opps! You are right. I was so annoyed by his incredibly ignorant comment, I guess my mind spent more time ranting than thinking! My bad. Thanks.

    --


    Anonymous Cowards suck.
  172. Re:CS has very little to do with math by strictnein · · Score: 1

    Intro to Algorithms is a great book and is the first thing I thought of when I read the original post. I really think it borders on being a required book for undergrads.

  173. Math is invaluable in CS by zeno_lee · · Score: 1

    Besides the fact that learning Math increases general problem solving skills, there are many CS classes that require Math as pre-requisite to the class.

    Just off the top of my head:

    Analysis of Algorithms requires knowledge Calculus and Discrete Math.

    Computer Graphics requires Linear Algebra.

    AI, Machine Learning, Natural Language Processing, require statistics.

    In the broader picture, you can say that the field of computer science has its roots in math and logic, with such pioneering figures as Pascal, Babbage, Turing, von Neumann, who were all mathematicians. All their work culminated into physical computing devices which we use today. Many math faculty in universities have joint chair s in both the CS and Math departments.

    1. Re:Math is invaluable in CS by plastic.person · · Score: 1
      Besides the fact that learning Math increases general problem solving skills,

      You're about the 3rd person to say that.... Let me say that the futile memorization and application of dozens of algorithms is the hardest way to acquire problem solving skills.

  174. K4rm4Wh0r3! by SparafucileMan · · Score: 0, Offtopic

    You copied this strait from the comments below the article's text. You could at least mention this isn't your writing or thoughts or...

    1. Re:K4rm4Wh0r3! by ucdoughboy · · Score: 1

      If you have to take calc twice in HS then chances are your not meant to be a math person. For the most part hs math is much easier and you get much more attnetion devoted to you. Most prominent colleges could care less if you failed ur calc course especially at places like Cal, they figure there'd be plenty more where you came from

    2. Re:K4rm4Wh0r3! by Otto · · Score: 1

      You copied this strait from the comments below the article's text. You could at least mention this isn't your writing or thoughts or...

      Actually, I posted this here first then registered and posted the same thing to the article itself, after some minor rewording. Notice the usernames.

      --
      - Give a man a fire and he's warm for a day, but set him on fire and he's warm for the rest of his life.
    3. Re:K4rm4Wh0r3! by Anonymous Coward · · Score: 0

      -1 Burn!

  175. Math Courses by Anonymous Coward · · Score: 0

    A lot of universities also use math courses as "weed-out" courses for their programs.

  176. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    The discussion is not on real life engineering, however, we're talking about computing science.

    I think this is possibly the most relevent quote in this whole discussion.

  177. Drexel's requirements by Schapht · · Score: 1
    I just finished a CS degree at Drexel Univ in Philadelphia, PA, USA and I had to take the following math courses:
    • Calc 1 through 4 (up to 3 dimensional calc, and vector work)
    • Linear Algebra
    • Math Foundations of CS (boolean work)
    • Probability
    • Statistics


    Current requirements are at http://www.cs.drexel.edu.

    Do I use any of it? Not really. But I develop user applications mostly where math is at a minimal and most of the work is more psychology-driven.
  178. NASA programmers don't need math by ToSeek · · Score: 1

    (Well, some of them, anyway.) I've been a real-time programmer at NASA for over 20 years. I've never needed any math beyond algebra and geometry, and what I learned in high school was more than sufficient. Now I'm sure my flight dynamics and attitude determination colleagues down the hall would beg to differ, but I think for most computer programming purposes algebra and geometry are sufficient.

  179. Must take forever. by SatanicPuppy · · Score: 1

    There is a difference between writing clean efficient code and sitting down with a slide rule and working out the exact efficiency of 2000 lines of code.

    I don't have anywhere near the math skills to do graphic work, so you've got me there, but thats a super specialized field.

    Judging by the stuff I see every day, you're unusual. And I've worked on a few shrink-wrappers.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Must take forever. by MenTaLguY · · Score: 1

      He is unusual, sadly. It's apparent that you haven't learned this area yet either.

      Big-O is a measure of complexity that tells you the worst-case efficiency of a piece of code -- and you don't need a slide rule or a calculator, becuause the answer isn't a number, it's a formula you can determine by looking at the structure of your program.

      Knowing how different "types" of formulas compare to one another, it helps you choose and optimize your algorithms.

      Being aware of complexity issues ("...is this algorithm O(1)? O(log n)? O(n^2)?") really is essential to writing clean, efficient code -- particularly code that scales well. This applies to almost all non-trivial programs.

      (it's also important to know what Big O does not mean -- e.g. when is bubble sort consistently among the fastest sort algorithms? it is if you know your list is very short or mostly sorted beforehand!)

      Even if you don't get a formal CS education, it behooves you to learn this stuff. Hit places like Wikipedia and the Portland Pattern Repository Wiki when you see terms like "Big O" mentioned. Trust me, it'll make you a drastically better programmer.

      (The Wikipedia article is here: Big O Notation, though it does assume a certain level of math background. Google might be good for finding more "layman's" explanations to get you started.)

      --

      DNA just wants to be free...
    2. Re:Must take forever. by SatanicPuppy · · Score: 1

      I did big O until it was coming out my nose in college.

      I think what I was trying to say is that, I don't find it helpful to sit down and work it out on paper, though I do find it useful in general for troubleshooting (Oh there's the problem, who put this recursion here? Its O(n^n) for Christs sake!).

      The reason I ranted about that course was mainly the algorythmic proofing. The theory behind that was debunked in the early 80's (Some "proven" algorythms turned out not to work, while ones that had been proven NOT to work did), and it pissed me off having to learn it.

      Certainly used that stuff a hell of a lot more than calculus.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:Must take forever. by MenTaLguY · · Score: 1

      Ahh, ok. Maybe I misconstrued both your post and the OP slightly.

      OOC, I was not aware algorithmic proofs had been debunked? Or did you mean that some standard accepted proofs were demonstrated to be wrong?

      --

      DNA just wants to be free...
  180. You got it backwards by wizarddc · · Score: 2, Interesting

    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.

    --
    Th
    1. Re:You got it backwards by f0rtytw0 · · Score: 1

      I totally agree with you there. I have just graduated with a dual degree in computer science and math but I wish I went with engineering instead.

      --
      this is the most important sig ever! In your face 446154!
  181. Math intensive by kalayl · · Score: 1

    One of the reasons(*) I flunked out of uni is because I was double majoring in maths and compsci. Carrying applied maths in second year as well proved just too much and even though i geeking out, i found myself losing interest in ALL my subjects.


    (*) the other reason may have had something to do with getting laid a lot. That, and cheap beer at our local pub, the "Verge Inn"

    1. Re:Math intensive by crull · · Score: 1

      I'd flunk out without the cheap beer and girls.

      --
      this is not my signature.
  182. All Math / Physics and No CS Makes a Good Coder by jgardn · · Score: 4, Insightful

    If you drop the coding part of CS and focus exclusively on the theory, then fill in the rest with math and physics, I daresay that the result will be far better coding skills than if you focus on coding and throw in math and physics and theory as an afterthought.

    The reason is because math is a formal language, just like any programming language. Except math is far more expressive and complicated than any programming language. We handle the complexity by writing functions and abstractions to simplify it. However, in order to abstract, we have to dot all of our i's and cross all of our t's and lay out the law on when the abstraction will or will not work. Sounds familiar?

    The beautiful part is that there is no compiler and no test suite you can run against your "programs". You have to do it all in your head. If programmers were able to better predict the behavior of their programs, or if they were to write their programs in such a way that it could be done, then we would have far fewer bugs, or at least debugging would be easier to do.

    So, if you are a pro at math and physics, then programming languages is a toy to you.

    Why physics, and not just math? Math is programming for programming's sake. Physics is programming tied to reality in some way. Or in other words, you are practically applying the discoveries mathematicians make, and fudging stuff they haven't discovered yet, all in the interest of getting an answer that agrees with the way stuff really is. Physics adds that dimension of "reality" that is inescapable, just like real programming has the shadow of the "user" or "API" or such that is inescapable and must match what people want to see.

    There is one area that math and physics won't teach you, but it is easy enough to pick up as it is a rather simple system compared to, say, Thermodynamics or Quantum Mechanics. That is the way computers really work and the limitations thereof. This is the field of data modelling, data theory, B-Trees, and hashes and stuff, or the details about the various hacks people have come up with to stick mathematics into this system.

    --
    The radical sect of Islam would either see you dead or "reverted" to Islam.
    1. Re:All Math / Physics and No CS Makes a Good Coder by aralin · · Score: 1

      I will second that, the best programmer I have ever known, a linux kernel hacker (you owe him for Alt-Sysrq-XX among others), guy who could write a very good web search engine all by himself in 8 months and take two other average guys through ACM programming contest and win, well that was a math major.

      --
      If programs would be read like poetry, most programmers would be Vogons.
    2. Re:All Math / Physics and No CS Makes a Good Coder by m4k3r · · Score: 1

      The world doesn't need more scientists believing they can code. Software development requires -engineers-, not scientists. All the math/physics theory in the world won't teach you to write scalable, maintainable, reusable software. So, unless you're planning on staying in a research field for the rest of your career, you'd better learn how to code properly.

  183. google 101 by ForsakenRegex · · Score: 1

    The most valuable tool you can ever learn for a long and successful programming career is the efficient use of search engines. That is what you'll be doing more than anything else.

    I think you're far better off attending a school that requires a wide range of subject matter, rather than a math-centered curriculum. No class teaches you enough of something to be very useful, but a broad exposure prepares you for the real world where you will be forced to answer scores of non-programming-related questions to accomplish your coding goals. It also helps a great deal in getting jobs when you can actually relate to something beyond the bounds of computer science.

    I have a CS degree from a liberal arts college. I was required to take only Calc 1 and Discrete Math. I've been writing code for a decade now and I have had very little problem because of this lack of math in my background. The majority of coding jobs do not require math. I know that's been said before, but it's true. Of all the people I know writing code right now, I can name only one that uses math of any complexity. When I have a problem that requires a complex mathematical solution, I google it. If I want to understand something mathematically complex, I call a math major.

    If you think the school was wrong in it's requirements, you can take it up with the Jesuits. I'd stand back, though. I had one of them try to smack me with his crutch once.

    --
    "A man talking sense to himself is no madder than a man talking nonsense not to himself."
  184. Computer Engineer by Stevyn · · Score: 1

    I'm not talking about computer science, software engineer, or computer science engineer, I'm talking about full fledged computer engineer. It's basically electrical engineering and computer science courses. Here's the math I take:

    Calc 1-3
    Differential Equations
    Advanced Engineering Math
    Systems and Signals

    and I'm sure some others I haven't taken yet. I'm second year and that's what I've taken so far so you can see that computer engineers require a lot of math. As for computer science majors, they are not required to take nearly as many math courses at my college. From what I've seen, it's probably not nessesary if you're looking to be a programmer. If you're into algorithms, maybe higher level math would be required.

  185. Graph Theory by Jaalin · · Score: 1

    Why hasn't anyone mentioned graph theory yet? I'm A CS major, math minor, and of all the math courses I've taken (Calc,2,3, Linear Algebra, graph theory, abstract algebra, probability theory), graph theory has definitely been the most useful in CS. Graph algorithms are a HUGE area of research, and come up in practice all the time. A good foundation in the thoery helps enormously.

    1. Re:Graph Theory by Anonymous Coward · · Score: 0

      I have recentally developed an algorithm that runs in O(V^2E)time that will color a graph to its minimal k-color chromatic index. This algorithm wil be made public soon as a few more proofs are made for it. I have proved NP = P.... ...And then I awoke from my dream. :)

      But seriously, I believe it can be done and some work I have done has come close, if not 100% close, to doing this. Regardeles, my method of coloring is different from any other I have researched and so far appears P. No simple or non-simple graph has broken it yet. Obviously that is not a proof of anything. Let's see.

  186. I'm sure it depends on the school... by jwpacker · · Score: 1

    And it's been ten years since I graduated, but my university (Willamette) had math requirements for a CS degree that essentially gave you a free math minor in the process of getting your prereqs taken care of.

    --
    Software is like a goldfish - it'll grow to fit the size of it's bowl...
  187. Get real... by JustNiz · · Score: 1

    Everyone seems to be repeating the same justifications over and over (3D graphics, signal processing, whatever), but all these things are relatively niche stuff. Anyway chances are in the real world that even if you write an app doing any of these things you'll use an exisiting library (OpenGL etc) otherwise you're just reinventing the wheel.

    OK someone had to write the library but there are massively more library users than writers out there.

    In my experience (25+ yrs software developer), higher maths was a complete waste of time and I haven't used any of it once. Only relevant maths I've found is boolean algebra/discrete maths.

    1. Re:Get real... by iPaul · · Score: 1

      In the sense that you can write code without having a higher math background, it's often the case you can have a career in computers without anything beyond arithmetic. I'm also inthe same boat that almost all my coding involves little or no math. However, what I've gotten from Math is logic and structuring proofs. Especially in threaded code, proving that something works correctly is your only alternative. There is no way to test the application - because the possible interleavings of instructions between two threads is 1) not reproducible and 2) very very large. Also, graph theory, and language theory come up a lot (workflows, parsing input documents, etc). A lot of coders don't recognize it, but it's there and the theoretical under-pinnings help my solve the same problems faster and with a greater degree of correctness.

      --
      Leave the gun, take the cannoli -- Clemenza, The Godfather
  188. You're absolutely right ... but by Anonymous Coward · · Score: 1, Insightful

    If you truly love programming; don't take CS.

    As many other posters have pointed out, CS is not about programming.

    In any event, you don't program in a vaccuum. You are programming for some purpose and you have to deal with customers and cow-irkers. Your programs will have to cope with the real world.

    Until you can cope with the above mentioned problems, you will find yourself mysteriously losing jobs to people who are worse programmers.

    As for the importance of math: It depends entirely on what job you get. Of course, these days, you don't get to keep a job for thirty years. If you don't have the math, you may not get the next job.

    1. Re:You're absolutely right ... but by the+chao+goes+mu · · Score: 1

      I had the misfortune to start an MS in CS after 5+ years working in the field. The technical courses were fine, but they were about 20% of the requirements. The rest were "theory of design" or "project management" or similar management oriented course which were incredibly out of touch with the realities of the field. Not that such matters are unimportant, but they shouldn't be 80% of CS coursework, nor should they completely ignore the ways in which actual employers operate.

      --
      Boys from the City. Not yet caught by the Whirlwind of Progress. Feed soda pop to the thirsty pigs.
  189. that's the only math in CS??? by justforaday · · Score: 1

    sheesh! i took more math classes than that [quantity and depth] and i walked out of school with a geology degree. i honestly would've thought that CS would involve far more math than a major for guys who hang out on the side of the road licking rocks [it was to test for granularity]...

    --
    I'll turn into a supernova and burn up everything. Well I'll turn into a black little hole and you'll turn into string.
  190. Low High School Expectations by Edward+Faulkner · · Score: 1

    I certainly agree that math is critical for CS. But I disagree with the idea of not taking advanced math (like Calculus) in high school.

    Quite frankly, the primary and secondary education systems (at least in the US) are horribly broken. There's nothing about calculus that is too hard for high school students - even average ones. But they've been taught math so poorly since the very beginning that they're hopelessly behind.

    Teach yourself (and teach your own children), school will not do it for you. Just think of all those years you wasted learning to multiply over and over again when you could have been progressing.

    The idea that young minds (say, fifth graders) are incapable of grasping more advanced math is a fallacy. Schools teach badly, then students underperform, then schools say "See, the curriculum is too hard - we need to slow down!" Wash, rinse, and recurse, and you get the abysmal state of education today.

    Anyone who wants to understand how the American education system got broken needs to read this.

    --
    "The danger is not that a particular class is unfit to govern. Every class is unfit to govern." - Lord Acton
  191. Re:CS has very little to do with math by donour · · Score: 0

    Actually, no. O, Omega, and Theta are asymptotic analysis of function growth. Technically speaking, they have nothing to do with algorithms. But they_are_ useful to compare functions we use to describe the performance of algorithms.

    We say that that mergesort is O(n lg n ). What we really mean is that some function f(n) that describes the runtime of merge is O(n lg n). Which means for all input, the f(n) will be within a constant of n lg n. Now this constant can be very large, which is why everybody uses quicksort most of the time.

    If you have two sort algorithms, one is O(n^2), another O(n), you'd want to implement/use the O(n) one; you can see at a glance just which algorithm is the better of the two.

    Not always. Sometimes the decision whether to use bucket sort (O(n)) of quicksort (O(n^2)) can be very difficult.

  192. Re:CS has very little to do with math by drxenos · · Score: 1

    Actually there is more to it than that. You can't always arbitrarily pick the one with the "better" notation. First off O(n) sorts only work for a special class of elements. What if--for arguments sake--the O(n) is not a stable sort and you need one? What if the constant is so large that for your small data set, the O(n^2) is actually faster, such that C1*O(n^2) C2*O(n) for your n. What if the data element is large or on a very slow medium and the O(n^2) does significantly less data movement? etc.

    --


    Anonymous Cowards suck.
  193. This looks like engineering to me by Stevyn · · Score: 1

    This course load looks more like computer engineering than computer science to me. The comp sci majors at my school do not need all this high level math and physics. They focus more on programming. It's odd to see how one major can vary from school to school.

  194. Thomas Edison by Anonymous Coward · · Score: 0

    I was recently reading his biography and in there he has a great quote: "I don't need to know math, I can hire mathematicians."

    Now, I totally believe math is important, but I think it's hysterical he said that.

    1. Re:Thomas Edison by mrchaotica · · Score: 1

      Bah, Edison sucked anyway - Benjamin Franklin is where it's at!

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  195. Successful programmer, *suck* at math by clintp · · Score: 1

    "Hi, my name is clintp. I'm a programmer and I suck at math."

    I nearly flunked Calculus (didn't help that it was an 8am class) and linear algebra drove me insane. The basics I have down very well (algebra, statistics, trig, etc..) but the more advanced stuff...yech.

    It hasn't seemed to hurt my career in the IT field at all. I'm earning well over $100k/year in the US Midwest (not known for good salaries) doing rather interesting work.

    What *did* help a lot was taking some accounting as well as math. In my particular background of business programming, it's been a lot more useful to know how Accounts Receivables aging works than to be able to calculate the area under a curve. And even if you're not writing any accounting related code, it's still useful to know how your business unit works.

    --
    Get off my lawn.
  196. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    Actually the only way an O(n) sort
    would work is if you have a very specific and well defined data set (ie. Sort these integers, they are all between 0 and 100 with no duplicates).

    FlashSort is an O(n) sort algorithm though that description can be debated. It asssumes you have a uniformly distributed set of numbers to sort which is a pretty big assumption. As it is the best general sorts work in O(nLog(n))

  197. From a practical standpoint... by Lodragandraoidh · · Score: 1
    As a computer science major, I had to take the following:

    Calculus 1, 2, 3
    Statistics 1, 2
    Linear Algebra 1
    and of course all the lower level math classes in addition (college algebra etc)

    How much have I used in the course of my work? Very little - and practically nothing that I could pull off the top of my head. In 99.999% of the cases I ended up doing research to determine the best formula/algorithm for a sticky problem...conversely these instances occurred only about .001% of my programming lifetime (maybe 7 times in a 20 year period). Many times, given modern computer speeds, it is not necessary to cut the tollerances so close, and lesser (standard) algorithms suffice.

    The level of usage is dependent on your programming tasks; if you develop realtime applications, including games, industrial control applications, or space shuttle reentry control programs, then you might need to be a math wiz. On the other hand, how many of those jobs are out there? Most people will not need such an indepth, tip of the tongue grasp of mathematics to perform admirably. This is why practitioners of computer science, while steeped in mathematics, may find themselves more capable if they have a keener grasp of linguistics (both human and machine varieties), logic, and the underlying capabilities and limitations of computer systems, instead.

    The real key is to know where to find formulas and algorithms when you need them (there are various 'recipe' books available - including the seminal collection by Donald Knuth: 'Fundamental Algorithms' - which is well thumbed, on my bookshelf).
    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
  198. My University... by Lorean · · Score: 0

    I go to a well known Canadian University for CS and Enginering. I will be going into my 3rd year in the fall. Until recently the only CS degree that was offered was a Bachelor in Mathematics (Major CS) as opposed to just 'Computer Sciences' offered by other schools. We now have two different CS degrees but that is a different story. Our CS degree requires the following math courses: Calc. 1 & 2, Lin. Alg 1 & 2, Classical Algebra, Combinatorics, Probability, Statistics and three other math courses of our choice. Mathematics is useful for a few things. Being able to analyze the performance of algorithms, being able to understand algorithms and being able to cerate new and efficient algorithms. Most advances in computer sciences come from mathematics.

  199. UIUC not rigorous anymore!? by foolinator · · Score: 1

    "Below is a sample schedule from the University of Illinois. U of I has a strong and established CS program but isn't going to be as rigorous as an MIT or Berkley, so this should be a realistic example."
    That's harsh!! Back in the 90's, U of I was ranked higher than Berkley but under MIT. So I suspected that he's from Berkley or MIT - seems wrong. Then I realized: UIUC (U of I) may not be as famous of a CS school anymore!
    I'm a grad from UIUC - I need those kids to make me look good. They better whip themself into shape to undo the damage I caused with my low GPA :)
    Foolinator
    -- UIUC Grad, home of the first Internet browser

    1. Re:UIUC not rigorous anymore!? by Anonymous Coward · · Score: 0

      He sure as hell isn't a "Berkley" grad.

  200. Programming == CS? by Anonymous Coward · · Score: 0

    "Why are these classes useful? Does programming really have that much to do with math?"

    A better question would be: does programming really have that much to do with Computer Science?

  201. hmmmmm.... by varunrebel · · Score: 1

    I think this question or point is much more difficult and tricky than it seems at first glance....

    First of all I think we have to distinguish between Computer Science (CS) and Information Technology (IT). Long gone are the days when they could be clubbed together. IT is a field of its own. No doubt that the 2 fields overlap often (and the overlap is of varying degrees) but IT has matured enough to be considered separate from CS.

    I think math is an essential and invaluble part of CS. You simply cannot be good at CS without being reasonably good at Math. In fact many of the geniuses(/genii) in CS were/are excellent mathematicians in their own right.

    Having said that I also believe that an IT professional does need basic knowledge of math but not too much in depth. S/he simply doesn't need it. And in the real world whatever little math is required for IT can be easily picked up on the job. And in domains where IT requires in-depth knowledge of math u usually have 1 or more ppl who are good at math.

    But all said and done math also hones ur brain and teaches u to think in a number of ways. And this is a skill that any professional should have. Thus math may help indirectly even though it might not be useful in day-to-day life...

    Thanks

    --
    "Programming is like sex. Make one mistake and support it for the rest of your life !!"
  202. Abstract Thought by Anonymous Coward · · Score: 0

    As an aside to all this talk about the ability to understand math in order to be able to implement some of it in our programs, I feel that in dealing with math we develop the ability for abstract thought which is useful when we are designing and implementing computer programs.

  203. Programming is only a subset of CS by Sindri · · Score: 1

    "Does programming really have that much to do with math?"

    Does CS really have that much to do with programming?

  204. Re:A Warning [offtopic] by Anonymous Coward · · Score: 0

    Taken any music classes at UT? My dad teaches there. For that matter, are you in Plan II Honors? My mom advises for them.

  205. Math by MarkSfromAR · · Score: 1

    Hmmm seem we are beating around the bush here. Computers were built from math. They are, in fact, applied math. It is not by chance that the list of names associated with computers have many mathematicians. Pascal, Lovelace, Bryon, Dijkstra - all mathematics. Knowing math helps with computers the same way knowing physics helps with engineering.
    Think of it like the human body. The basic block of life is the cell, cells form tissues, the tissues from organs, then organs form systems, and the systems for us. An understanding of the basic building block makes it easier to understand things at a higher level. A doctor would have a harder time understanding how the human body works if he does not understand how a cell works.

  206. Young fellas today by pommiekiwifruit · · Score: 2, Funny

    You and your new-fangled Cartesian co-ordinate system. Why, back in Euclid's day we just had points, straight lines and circles, and we were grateful!

  207. Math is necessary in CS by kevlar · · Score: 1


    However much I deteste mathematics, it is important for software development primarilly because it gives you the tools to identify the amount of work required to perform certain tasks and optimize based on different techniques.

    Math does not help you "write" the software, but rather design and implement properly and efficiently.

  208. OU Math by Anonymous Coward · · Score: 0

    University of Oklahoma CS majors actually graduate with a mathematics minor if they declare it. I took the following mathematics courses while studying CS:

    Calculus (I - IV) - 4 semesters worth of calculus, it is probably worth your money and time to CLEP out of the first two years unless you want to pad your GPA with easy As like I did.

    Differential Equations - 1 semester - I really don't remember much from this course to be honest, but you must realize the prevalence of this field in computing. A majority of computer functions rely on approximations derived from this field of study. Perhaps someone with a stronger background in this field could explain (Taylor's series, polynomial expansion, etc.)

    Linear Algebra (a lot more useful to computer scientists) - 1 semester, this was a godsend for computer graphics, I just don't see how you could be a successful game developer, UI developer, or knowledgable programmer without having a good foundation in Linear Algebra.

    Introduction to Applied Statistical Analysis - 1 semester of mind-numbing proofs of the foundation for Statistical Analysis, this course was excruciating and painful at the time, but understanding the background for basic stastical theory has given me an unbelievable edge at my current job.

    Statistical Analysis - 1 semester, applying the statistical knowledge to real world problems. Very handy, once again, gave me an edge in the real world.

    Then there are two course in combinatorial in discrete mathematics that were hands down the hardest courses I took in my life. Honestly, the truly challenging parts of computer science degree are the most-mathematically bound fields of study within CS. Discrete Mathematics and Algorithm Analysis are incredibly bound to fundamental math concepts.

    My advice, take a look at Discrete Mathematics if you can while in HS (do a directed reading or independent study if you can), and get as far through calculus as possible, good luck.

  209. Why Math? Because it makes you THINK! by Azzaron · · Score: 3, Informative

    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 :)

  210. Yes, and it has to be survived by benjamin39402 · · Score: 1

    I had to get through all this stuff, and my solution was the 'warm notebook' method. I stuck a small notebook in my back pocket with a problem on it. When I was waiting in line, riding in the car, etc. I worked. My theory was that if it never cooled off (lost contact with my body heat) I was dead. I developed a love of mathematics out of that stuff. If you are one of the brilliant, arrogant, talented, socially retarded nerds who are thinking about a CS degree, then beware of the math. It will humble you. Also, if you want to program on the big boy computers, learn FORTRAN.

  211. It depends by rawshark · · Score: 1

    Your Program May Vary, and I studied Computer Science and Mathematics when I was in school, so mine definately varied.

    But I imagine many computer science programs would require Discrete Mathematics or its equivalent, since many algorithms such as "shortest path" are based on it. I would not be surprised if Matrix Algebra was required depending on what you study. Number theory is required for Cryptography

    Hint: be prepared to do proofs. If your HS program included Euclidean Geometry (prove these two triangles are congruent), be prepared for more of that.

    ObLaymans:
    Matrix Algebra: doing arithmetic on "grids" of numbers. If Memory Serves Google multiplies gigantic grids of numbers to be Google

    Discrete Mathematics: proving things about "discrete" or individual entities, things you can pick up and look at one by one. This includes combinatorics ("if you have eight choices for toppings, how many different pizzas can you make with three or fewer toppings"), and graph theory "here's the map of where Southwest flies to, how many ways are there of flying from NY to LA"

    Number Theory: proving things about whole numbers (which numbers multiplied together will give you this number?) Seems dry but RSA and many other encryption techniques are based on it.

  212. My HS math experience by DanTheLewis · · Score: 1

    I started Algebra in 6th grade, so I was a little SOL for math classes by the time I got to high school. I took the Calculus course as a sophomore (that was half a year), skipped the Statistics half and took Journalism (basically a waste), didn't take math for another year, then took an experimental higher level math course with more calculus, graph theory, and other things more unmemorable.

    In college I placed into Honors Calculus II. So there was a lot of sound and fury, signifying nothing, in my high school work.

    The moral of the story for me is that there is no room at the top of American (public) high schools for students who can push and excel. My family wasn't rich enough for private school. I wasted a lot of time there.

    --

    Q: What did the comedian say to the crowd?
    A: If I knew, this joke would be funny.
  213. CS Options by Anonymous Coward · · Score: 0

    If you want to be more than a coder, consider some business classes or get a MBA after your CS degree.

    I concur that Statistics is the most useful math class. Calc I and II were required by U of Md. While not directly used, being able to think of relationships in terms of a system of equations is useful when developing code.

    Again, if you can deal with people and like daylight, consider adding at least Econ and Financial Accounting.

  214. Typical College requirements by eltoyoboyo · · Score: 1
    Here is what a typical public university in the U.S. might require for a B.S. in Comp Sci for math courses:
    • Calculus and Analytic Geometry
    • Calculus of Several Variables
    • Linear Algebra and Applications
    • Infinite Series and Differential Equations
    • Introduction to discrete structures
    Most high schools in the U.S. have honors/AP/GATE tracks for match in which you are taking Algebra, Geometry, Advanced Algebra, and Calculus. You will want this to be able to compete for grades at University level.

    Most colleges will list their requirements on the web. Or you can certainly get them through the mail like in the old days...

    In the end, it is up to you to work on your analytical skills, which is really what it comes down to. In the business world you are designing, architecting and thinking. If you are not, your job is outsourced or automated already. If you can go to college and major in basket weaving, but you have strong analytical skills, you will get work. The Comp Sci degree is just 1 line on your resume.
    --
    Have you Meta Moderated t
  215. My Personal Experience by dukeluke · · Score: 1

    I took Calc I in HS - but took it again in College (I was too...lazy to Ace the AP test - yeah I know...) Anyway, Calc I in College was a breeze (primarily because I was able to understand everything at a much deeper level with taking it before).

    Now, like all aspiring programmers - I'm wanting to become a video game programmer - and believe it or not I just might be (www.digipen.edu- I recently got accepted here and start this fall)

    Anyway, take a look at their course curriculum - and you'll see that the Article was right on the money - the more Math the better - I'll end up taking Calc I, II, III and Advanced something or other before I'm done with my Bachelor's of Science.

    /two cents

  216. Proof by Induction by mod12 · · Score: 1
    If you are considering grad schoool in computer science, then you would do well to take as much advanced-level math as possible. That is, courses that teach you about writing proofs: abstract algebra, real analysis, number theory, formal logic, etc. You likely be expected to do proofs in several core grad-level courses like algorithms, programming languages, and automata theory, and a discrete math class in your freshman year is probably not going to give you enough experience.

    And with regard to proofs, one technique that you absolutely must be familiar with is proof by induction--including induction on natural numbers, induction on lists, induction on trees and any other sorts structures that you might see in computer science.

  217. Great Theoretical Ideas by Destrius · · Score: 1

    Carnegie Mellon's CS program has a required course called Great Theoretical Ideas in Computer Science I, which is basically a hodge-podge of different forms of mathematics. Mainly discrete math. Basically, it was designed to give CS majors the minimum level of mathematical knowledge they'd need for further majors.

    You can check it out at: http://discretemath.com

  218. Discrete Math by Anonymous Coward · · Score: 0

    I agree. Discrete Math is very important. Too bad every discrete math book out there is horrible.

    I have never come across a decent discrete math book - they all look great, have nice-looking layouts, but are full of incomplete proofs and examples.

  219. And you also need to learn proper grammar by heck · · Score: 1
    Everyone else has already covered (and beat to death) the fact you need to know Math.

    So I'll state you should also learn proper grammar in whatever language your company speaks. Because in addition to writing scads of code, you also need to WRITE DOCUMENTATION, DAMMIT. Or at least COMMENT THE CODE.

    The engineering school I graduated from insisted that every senior pass a "report writing" course their senior year (in addition to the usual freshman writing and humanities courses). A different type of business/engineering report every week - and it was 6 credits in a school where most courses maxed out at 4 credits (they emphasized you must pass the course). They insisted that we would find that course immensely valuable when we graduate because, "On some days 80% of your job will be writing requirements, writing memos, writing emails, writing specs, writing documentation and NO coding."

    Of all of the courses we took, I have to say that "Senior Lab" has been one of the courses that has set me apart from my peers and helped me the most.

    Total aside: one of the programmers I work with didn't realize that -1*-1=+1. His code was, um, suffering as a result. Sad, ain't it?

  220. Re:CS has very little to do with math by Stween · · Score: 1

    "Actually there is more to it than that."

    Yes, I'm aware that there is a lot more to it than I put forward; it was a general example to the guy who thought that big O notation was a "slipshod manner" of evaluating the performance of an algorithm. As you also made clear with your last point, the line between the Big O notation and where real-life engineering blurs when you start to consider just what an algorithm is working with (your slow-medium example). That was already encapsulated within my comment about different architectures/data types/etc, although the link wasn't entirely clear, I'll admit :)

  221. The CS major earns his/her salt when finding bugs. by bigmike_f · · Score: 1

    The theory and math behind a CS degree help in finding optimized solutions when things go down the drain. To understand state machines and big-O provides insight with creating algorythms as well. To leave out the math in computer science is to ask an engineer to ignore physics when constructing plans for the building of a sky scraper.

    In building a structure.... I like to think of the architech as the one who thinks of an idea, and large how-tos. The engineer to understand the workings of what how-tos are possible, resulting in functional plans. Finally with the contractors/builders who actually build the object.

    Notice how some architech schools lack DEEP science and physics for the engineers. They spend more time in art.

    The same applies to programming. A lead architech figures out the overall interworkings of object communication. Not much science, but patterns of work flow should be needed.

    A software engineer, understands the process of creation, what data structures to use, how the objects actually interact. The nitty gritty.

    A programmer knows VI and macros (hehe) for generating tons of implementations fast. Including understanding the API's to know how parts fit together.

    Computer science generally covers the architech and engineer rolls.

    Note, I don't think any jobs are defined this well and most everyone must partially fill each roll.

  222. Woooo woooooo! by mekkab · · Score: 1

    Being the Other guy who actually knows a little bit about the theory behind parallel processing, your anecdote gave me great pleasure!

    I love how management types says "well, we'll give you a 4-processor computer, so your program will run 4 times faster!" [groan]

    --
    In the future, I would want to not be isolated from my friends in the Space Station.
  223. Computer Science _is_ Mathematics by natoochtoniket · · Score: 1
    Having a Ph.D. in Computer Science, I can say with some authority that Computer Science is a subfield of Mathematics. Every well-defined programming language is, literally, a kind of an algebra. Every computing device (a.k.a. computer) is a finite-state automaton. Every program, method, or function is an implementation of (one or more) algorithms. Every class (of objects) is an implementation of some abstract data type, and defines a class of algebras. Every object instance is, literally, an algebra.

    There is a reason why "algebra" and "algorithm" have the same root.

    1. Re:Computer Science _is_ Mathematics by Anonymous Coward · · Score: 0

      Well Spoken Doctor!!

      Most people dont understand CS, because you have to go pass a BS to get a REAL understanding.

      Most CS students dont go past the BS level.

  224. A typical program... by Anonymous Coward · · Score: 0

    For a Bachelor of Arts, expect Calc 1, Calc 2, Discrete Math, maybe stats, probably basic Linear Algebra. For a Bachelor of Science, tack on Calc 3 and Differential Equations. This qualifies you for a math minor at many universities. Also, at many, you can probably take about 3-4 more math classes and have a BA in Math as well.

    The use of math depends on the industry and application. Games = lots of math, especially if you want to go into things like collision detection. Optimization also requires analysis and math skills. I work in radiation therapy. We use math. Generally you don't need much upper calculus but you learn more than calculus in calculus, you learn how to analyze and solve problems, and if there's any great lack in modern programmers, it's analytical thinking skills.

  225. Problem is the math teachers by Anonymous Coward · · Score: 0

    I am 31 and my itch to be a game programmer won't go away. What did I graduate with? A degree in English. Why? My English teachers made that subject so much more fun. Way more.

    I am now relearning math from elementary algebra and working my way up to trigonometry and maybe calculus. It is only now that I see the practical applications for math and (gasp) the fun it can be to solve problems. At least the ones that have applications. I still shiver when I see someone scrawl complex math symbols on a forum. But I'm getting more and more confortable with the lingo and methods each day.

    Problem was I had truly uninspiring and apathetic math and science teachers once I got past the fifth grade. As a whole, their attitude was basically, "If you don't get it or don't care, then oh well." In contrast, my English teachers were like Robin Williams from Dead Poets Society and then some. Really engaging. They connected me to the English language and expression.

    You want to know why people wave their hands at people who try to sell math? It's because their teachers did the same to them when it came time to learn it.

  226. My view by sagei · · Score: 3, Interesting

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

    --

    Robert Love

    1. Re:My view by Marxist+Hacker+42 · · Score: 0

      My Software Engineering degree required all of this- and I'm rotten at math. I ended up learning it alright- by rewriting every algorithim and function into HP RPN Basic and using my HP32s or HP28s on the tests.
      Needless to say, any of the proof-based classes I failed early and failed often- took me three terms to get through Applied Differential Equations because I kept getting mathematicians instead of engineers for instructors.
      I found both Discrete Math and Numberical Analysis to be extrmely relevant to new algorithim design. The rest I could have done without. But something that could have been added was a good course on Boolean Algebra- if I had that freshman term instead of waiting for Junior Year Hardware Logic, most of my lab-written programs in any language would have been half the number of lines of code or less.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
  227. Re:CS has very little to do with math by drxenos · · Score: 1

    Agreed.

    --


    Anonymous Cowards suck.
  228. Well Rounded Computer Scientist by aurumaeus · · Score: 1
    I work for a large tech-driven company in NYC, and a great number of the programmers I work with don't even have computer science degrees, much less in-depth math skills. They're smart, versatile people who learn quickly, and that's ideal.

    I think to be a good, well rounded computer scientist, you need to have more than just Math. Knowing the kind of math that is used in algorithm comprehension and performance tuning helps a lot when doing calculation-heavy programming. It's also good to know some physics, and have good language skills, though to really get your head around a lot of the high-level language concepts that are present in really good high-level system design.

    Basically, like anything else, you'll be a lot better programmer if you've taken a well rounded set of courses that prepare you for real world understanding.

  229. My degree by JLSigman · · Score: 1

    I have a Bachelor of Science in Math and Computer Science, since my college at the time didn't have a full-time computer professor (a couple of the math professors taught the classes). I took 3 years of Calculus, Linear Algebra, Statistics with Calculus, and Modern Abstract Algegra. I also took BASIC (a requirement, and they wouldn't let me test out of it), Pascal, Assembler, and Machine Logic.

    I think I use exactly none of it in my job as a Software Support Specialist.

    --
    -jls
    Techno-pagan
  230. Math and Comp Sci by meethade · · Score: 1

    Personally, I love math. Not everybody feels this way. Some people simply enjoy the machinery of computer science. I think for getting through the CS major program, the importance of math depends on the curriculum of the school. At the University of Texas at Austin mathematics was very important, because the curriculum there was, at the time, rigorous and theoretical. About an hour away is Southwest Texas State University. The curriculum there was totally different and leaned torwards a CIS/MIS type of degree with more stress on a practical situations. So, the importance of mathematics to a CS major depends on where they're going or where they want to go. If you want to get into the theory and algorithms, mathematics is extremely important. In fact, anybody who wants to get into that should take more math classes than the average CS major just to get a good solid feel for discrete math, logic, and general abstract thinking/reasoning. In general, I wish all CS curriculums would stress the importance of such things (math, logic, and abstract reasoning/thinking). Once you're out, 90% of the time, you won't have to break out an infinite series or prove a post condition. However, 100% of the time, I think that your mind will think in a precise, reasonable, logical way that is conducive to programming. Anyways...that's my little seminar on that :p

  231. So close, yet so far away... the obvious by Anonymous Coward · · Score: 0

    Our digital computers are pure math and pure logic. If you have a firm grasp of math, you understand the very foundation upon which the computer operates.

    Two characters are not alphabetized by a sort algorithm because "B" comes after "A" in the alphabet, rather it is because 66 > 65.

  232. All you need... by Big+Nothing · · Score: 1

    All you need is to know how to use i++ and i--

    Unledd, ofcourse, you're using Perl. In that case you should start out by getting a higher degree in abstract, theoretical mathematics.

    --
    SIG: TAKE OFF EVERY 'CAPTAIN'!!
  233. Formal Logic by crimson_alligator · · Score: 1

    I am not a programmer, but I was a bit surprised that the article did not mention formal logic. I would think that courses in mathematical logic would build useful skills. These courses are usually cross-listed in Philosophy and Mathematics, but they're also associated with Computer Science/Electrical Engineering. Also, a certain sort of modal logic (epistemic logic) is actually used by programmers, is it not? This allows you do model and draw inferences from what an 'agent' knows and believes.

  234. it's good for your brain by notter · · Score: 1

    It's not a matter of whether or not connecting a front end to a db requires math. Of course it doesn't. But, if you don't take the classes that torture your brain into building new pathways (the way advanced math courses will do), then you really will be a shit programmer and the other programmers you work with will hate you. Take music classes, too. The more ways you learn to integrate information, the better programmer you will be. And, if you find out that programming for a living makes you sick, you'll be well-rounded enough to do something else. Or, if you find yourself laid off, you'll be able to find a job instead of whining about jobs going overseas. So, yeah, take econ courses, too, so you understand why jobs move. It's math with currency units. Also, you'll be less boring when I meet you at the next GeekConfab3000.

  235. I couldn't disagree more. by Aniquel · · Score: 1

    Sorry, I've seen too many math pros (particularly in finance) that are terrible at programming to agree with you. Here, there's an easy way to show you why: What's the mathematical equivalent of a for-loop? memcpy? class? I won't even get into databases, disk latency, networking, or dynamic libraries. Complexity of math vs. programming? How about they're both complex enough to be different professions!

    1. Re:I couldn't disagree more. by Anonymous Coward · · Score: 0

      What's the mathematical equivalent of a for-loop? memcpy? class?

      Use LISP and you don't need any of that sh!t.

    2. Re:I couldn't disagree more. by pclminion · · Score: 1
      What's the mathematical equivalent of a for-loop? memcpy? class?

      How ridiculously narrow your thinking is... There are plenty of very powerful languages that have no concept of loops, or direct memory access. And if you think the idea of a "class" has no mathematical equivalent you are really quite ignorant.

      I won't even get into databases, disk latency, networking, or dynamic libraries.

      Programming doesn't have anything intrinsically to do with any of that. It is, quite rightly, hidden away from the typical user, and a programmer is a user too. Not all programmers are wizards who understand the inner workings of everything the machine does. They do not need to be. They should not need to be.

      I'll admit that people with no formal programming training are sometimes very idiosyncratic in their programming styles. Sometimes they don't understand the concept of commenting code. But the code they write is no better or worse, from the standpoint of utility and efficiency, than the code a "professional" programmer might produce.

      An intelligent person is usually able to apply that intelligence across a wide range of applications, in spite of a lack of formal training. Haven't you noticed that yet?

    3. Re:I couldn't disagree more. by ph43thon · · Score: 1

      What's the mathematical equivalent of a for-loop?

      try the Euclidean Algorithm.

      and that's just an example of one.

      So, you think designing Databases and Networks have nothing to do with higher level math? No wonder you "won't even get into" it. You'd get shamed off the stage. Check out Networking Theory sometime..

    4. Re:I couldn't disagree more. by mrchaotica · · Score: 1

      My CS professor proved that recursion (tail/augmented or not) is mathematically equivalent to a loop the other day...

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  236. Computer Science vs Programming by swollkin · · Score: 2, Interesting

    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.

    1. Re:Computer Science vs Programming by Lodragandraoidh · · Score: 1

      Yes and no (I love these dichotomies). On the one hand they are different; on the other hand, in practice most jobs that are available for both are in the commercial sector - so they have to be some level of overlap. However, this plays into the hands of the CS major, moreso than the IT major:

      I worked with one IT grad who was steeped in the use of COBOL - but had no theoretical understanding of how computers work. I was constantly having to correct his incorrect assumptions about how the systems we were using worked. He couldn't understand why it was interesting to know about microcode, different CPU architectures, or the significance of the fact that a computer can simulate just about anything on multiple levels (think of the Russian nesting dolls - each larger container having another, different smaller container within it in iterative fashion). Having a CS background makes me a better programmer and system integrator (because programming, more and more is about system integration and less about building stand alone systems).

      Given that, I think it imperative that you persue a CS degree if you want to be the best you can be in the commercial sector - because those non-commercial 'pure computer science' jobs are few and far between, and being a CS major will set you apart from the masses of IT candidates (not to mention raising your own skills and knowledge to be a more well rounded developer).

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
  237. combinatorics, probability, and statistics by dangermouse · · Score: 1
    I've just graduated with a BS in Comp Sci, and I'll tell you, I scraped by in a lot of my math classes. Hated most of them, dreaded the tests, nearly developed ulcers waiting for the final grades. But I've got some work experience, so I never doubted their usefulness, unlike many of the students around me.

    Nearly every CS problem I've seen is some sort of combinatorics problem: You've got all these *things*, see, and you want to know how many ways they can relate to each other and furthermore how long, computationally, it will take to find out. A lot of this is graph theory, and if you think you're going to get away with not knowing at least some basic graph theory and graph-based algorithms, you're in the wrong field.

    An understanding of probability is critical both for optimization and for defect avoidance. If you adjust your systems biases (and all systems have biases) toward a certain set of inputs or states, you'd better have a pretty good idea that those are the most common.

    Statistics are useful for a lot of things-- statistical analysis (using probability) is central to most self-optimizing algorithms. More importantly, though, an understanding of statistics will help you with your development processes and quality. Is your testing methodology really reducing defects? What happens if you switch to this new-fangled development process, or drop a couple of steps from your current process, or add another person to the team? How long is this project going to take?

    As a programmer, you might be able to get away with not knowing any of this stuff. As a software engineer, you'd better have at least the basics down, or your product is going to be crap and it's going to be expensive and you're not going to know why or how to fix it.

  238. Cryptography by knodi · · Score: 1

    I'm way late to post, so this'll probably never get seen, but here's my 2 cents anyway.

    At Texas A&M, CS majors are only a class away from a math minor. You might as well pick one up, esp. when 'communications and cryptography' is offered by the math department. Incidentally, that was the most fun class I ever took. We got to do our finals twice, first in class and later at home... The test grade was an average of the two.

    Although 3D Graphics was offered by the CS dept, it almost should have been classified a math- we did far more pen-and-paper work than programming.

    --
    Austin is more fun than Dallas.
  239. What is computer science? by Ouroboro · · Score: 4, Insightful

    Does programming really have that much to do with math?

    I see or hear this question all of the time in relationship to a degree in computer science. The short answer is:

    You can make a living at programming without knowing much about math. Most programmers can get along with some basic algebra skills, and understanding boolean logic.

    The long answer is that the question asked in the context of a discussion of computer science shows a lack of understanding of what the field of computer science is. Computer science is not about java or c# or sql. Computer science is about understanding and analyzing why a computer acts a certain way given a certain set of conditions. It is about understanding the best way of instructing a computer to perform tasks. Its about knowing that a computer cannot perform certain tasks no matter how well it is programmed. What does this have to do with math. All of the tasks I mentioned are addressable with some mathematical analysis. A computer scientist will write a program to demonstrate a concept or test a theory. A computer scientist will not write a program to do inventory controll for walmart, unless there is some novel or interesting problems in that task that no one has tackled before. In general someone graduating with a cs degree is well versed in theory, and will have to catch up on the practical aspect of the field. For example, I graduated with a CS degree having only seen one Design Specification Document. I now deal with them every day.

    There are many trade schools out there that will give you training in a group of technologies (c#, sql, java, html) and call it a computer science degree. The best of these schools turn out software engineers (a very good skillset to have) the worst of these schools turn out people who are capable of passing a cetrification exam and that is it. In general these guys (the software engineers)can jump right into the business of writing software much more easily than someone with a straight cs degree. However the devry graduates tend to have trouble designing and understanding larger systems, and the ramifications of their decisions within those systems. I find this due to the lack of theoretical underpinnings to their education.

    Don't get me wrong. I'm not saying every trade school graduate is not capable of dealing with and analyzing large system analysis. I'm just sayind that in my experience that these graduates come out a little less well equiped for the task. And yes I know several CS graduates who are dundering idiots, so you don't have to tell me about your experience with one.

    --
    When I want your opinion I will beat it out of you.
    1. Re:What is computer science? by zettabyte · · Score: 1

      Mod this up. CS != Programming.

  240. Three Words by Raunch · · Score: 2, Interesting
    Big O Notation

    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%.
    --
    George II -- Spreading Freedom and American values, one bomb at a time.
    1. Re:Three Words by The+Slashdolt · · Score: 1

      Your post displays an interesting point. Using an advanced data structure versus two nested loops is an obvious choice. Or is it? You see, it depends. There is no "one true way". The "cost" of a program is more than its computational time. If you were an employer which you would prefer:

      Nested Loops:
      Written in shorter time
      Easier to maintain
      Executes in 4 seconds


      Advanced Data Structure:
      Takes longer to write
      harder for someone to maintain
      Executes in 1 second

      CS majors have a hard time realizing that 9 times out of 10 time to market is more critical than computational costs. Is it good to know advanced data structures? Of course. But more important is knowing when to use them and when not to use them.

      --
      mp3's are only for those with bad memories
    2. Re:Three Words by Raunch · · Score: 1

      Your post displays an interesting point. Using an advanced data structure versus two nested loops is an obvious choice. Or is it?

      I did not say that the choice was obvious. I said:
      "[W]hy would I possibly have to write this with an advanced data structure" is a stupid question.

      I was applying this thought to the number of times that I had heard this in regard to a homework assignment, not if you ever had to write a towers of hanoi program in the real world. (I know, it's recursion, not ADS)

      The question is stupid when you are learning how to write your programs. To claim that the question is not stupid would be the equivalent of saying that nested loops were the right tool for every job. In order to learn when to use and not use nested loops, you need to know the options and to understand them.

      > Is it good to know advanced data structures? Of course. But more important is knowing when to use them and when not to use them.
      Quite right. I agree completely. I was not saying that knowing how to write them was more important than knowing when to write them. But you can't know when to write them without knowing how to write them.

      >CS majors have a hard time realizing that 9 times out of 10 time to market is more critical than computational costs.
      I'm glad that they are the ones writing code for life critical systems. I'll have an MBA in addition to my CS in three weeks, and I can tell you: Ther are no classes about depending on programmers for advice concerning time to market, that's not thier job.

      As a side note, CS people have a hard time being told by a manager "Do your job fast and produce a substandard product so I can do my job well". Does that surprise you?

      --
      George II -- Spreading Freedom and American values, one bomb at a time.
    3. Re:Three Words by The+Slashdolt · · Score: 1

      For the most part I think we agree, but the attitude shows up again in the following two statements:

      >CS majors have a hard time realizing that 9 times out of 10 time to market is more critical than computational costs. I'm glad that they are the ones writing code for life critical systems. I'll have an MBA in addition to my CS in three weeks, and I can tell you: Ther are no classes about depending on programmers for advice concerning time to market, that's not thier job.

      The programmers/CS people are of least concern to a Product, which is exactly my point. Whether your a seasoned MSCS or a guy with 2 week experience in India the MBA does not care. This is plainly obvious by witnessing the continued outsourcing to the cheapest country. By moving work to the cheapest country you can afford more simultaneous resources which in theory should produce a product faster. Nested loops or not, it doesn't make any difference. This was my point by 9 times out of 10 it doesn't matter how fast your loops are. A page of mathematical proof is not going to matter a bit.

      As a side note, CS people have a hard time being told by a manager "Do your job fast and produce a substandard product so I can do my job well". Does that surprise you?

      This is the crux of my point. CS people think they run the product. As a future manager I think you will find this is not true. Writing code is not the hard part. Coming up with an outstanding product idea is the hard part. In fact, if you look at the current trends, CS people get outsourced left and right because they don't do it cheapest or fastest. Just as car manufacturing has moved to mexico and elsewhere. In the business world quality code doesn't mean squat. In fact it seems to be inversely proprortional. If you look at the most successful businesses you usually see the worst code. Additionally, these successful companies can and do hire the best CS students available every year to work for them. Strange isn't it?

      What a modern manager would really say and care about is "Do your job fast so I can get this product out the door before our competitor over there. If you don't we'll be outsourcing your job to india so we can hire 5 of them for the cost of one of you. I could care less about the mathematics behind your nested loops."

      Just think about it. If you take your MBA and start your own company. If you hire the best coders in the world who are guaranteed to produce the most efficient code does this help you produce a successful product? This is where the MBA/CS division becomes plainly obvious.

      --
      mp3's are only for those with bad memories
    4. Re:Three Words by hsoft · · Score: 1

      What I fail to understand here is why maths are needed to produce efficient code. I forgot most of my math courses, but I know how to implement a hash table or a binary tree. And even if I wouldn't, there are a *lot* of implementations of all advanced data structure out there. I think that knowing which data structure to use in different cases makes a programmer good. On top of that, a programmer that can produce efficient and maintainable implementations is even better.

      --
      perception is reality
    5. Re:Three Words by Raunch · · Score: 1

      >If you take your MBA and start your own company. If you hire the best coders in the world who are guaranteed to produce the most efficient code does this help you produce a successful product?

      I agree that most of the commercial software out there does not need that sort of level of quality, but it depends on what my company makes. If I am producing shitty software that will run on an XP recommended system; who gives a crap? The importance of speed, size and efficiency (not to mention the lack of memory leaks) doesn't matter much. The important thing is features that will draw in buyers, especially for home systems.
      BUT
      If I'm doing some work for someone who is competing for the X-prize, or a new generation of the mars rover, or one of those cool video surgery systems. Then yes the most efficient code does help me to produce a successful product. In fact, there are some cases where it is necessary to production of a successful product.

      In addition to that, if your coders pay no attantion to what they are doing and produce a product that bogs down the whole machine, you may be the first to market with a shitty product that gets blown out of the water two months later by someone who knows what they are doing (unless you have incredible market presence already(read are ms) in which case, you can take your time anyway).

      I agree with you that the next generation in weatherbug software certianly does not need mission critical efficiency. My point is that there are other things that do, and you have no way of making that differentiation unless you understand it.

      Tying this back in to CS majors, the lesson here is:
      If you don't mind doing a job that you can take no pride in that may evaporate to India in a few years, then you don't need to understand that mathematics behind your code.
      If however, you would like to work on something exiting and revolutionary that will be allowing you to develop your skills and push the bleeding edge of computing (where you need every cycle that you can get). Well, you better pay attention in those math classes.

      --
      George II -- Spreading Freedom and American values, one bomb at a time.
  241. Because you need it. by Tangurena · · Score: 3, Informative
    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, 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.

    1. Re:Because you need it. by herrvinny · · Score: 1

      I'm a freshman at the U of Wisconsin @ Madison. The Data Engineering book looks interesting, but how much math do I need to understand it? I've had calculus already, and basic statistics.

  242. ninnle linux by Anonymous Coward · · Score: 0

    regardless of what your major is, you will be using ninnle linux.

    1. Re:ninnle linux by Anonymous Coward · · Score: 0

      Damn right!

      Let's hear it for Ninnle!

      Ninnleninnleninnleninnle
      Ninnleninnleninnleninn le
      BATMAN!

  243. while you're at it... take an English course by Anonymous Coward · · Score: 0

    it's Maths --- WITH THE 's'

  244. Statistics by Erwos · · Score: 1

    I took a ton of stat courses, mostly having to do with the economics half of my degree, but there was some (limited) relevancy to CS as well. I suppose the most interesting part was learning SAS and Stata - gives you a feel for what people in the "real world" put up with.

    They make you complete linear algebra and stat 400 (which is the first of the "advanced" stats) just for your CS degree, so it's somewhat difficult to get out of CS without knowing some decent math.

    -Erwos

    --
    Plausible conjecture should not be misrepresented as proof positive.
  245. Math for CS by Viking+Coder · · Score: 2, Insightful

    (1) You can always code better, if you know more about the problem you're coding to.

    (2) Every domain will in some ways be impacted by mathematics.

    Therefore (by 1 and 2), more math skills will almost always make you better equipped to understand any given problem domain, and will almost always make you a better programmer.

    And that's just computer programming; there are parts of Computer Science that have nothing to do with programming computers, but have everything to do with logic and math.

    --
    Education is the silver bullet.
  246. Math is essential by crull · · Score: 1

    Math is essential in a CS major, but how much? That's the question. Discrete, Linear Algebra is good to know but how about Multivariable Analysis?

    --
    this is not my signature.
  247. algebra... by joeldg · · Score: 1

    algebra is the most important.
    programming is like doing algebra all day long a lot of the time.

    calculus and trig etc are not used all that much in reality unless you are doing some crazy shit like this:
    http://lucifer.intercosmos.net/?view=SNIP&i tem =64

    but otherwise it is mostly algebra.

  248. It is useful by Uzik2 · · Score: 1

    I use trigonometry all the time in 3d graphics
    work. I don't use calculus much, but I felt it helped me understand a lot of other things I run into. Statistics is very useful for determining
    when your processes are 'out of whack' and if
    there is a problem. If you're going to be a
    professional being as uneducated as you can get
    away with is NOT in your best interests.

    --
    -- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
  249. Coding ain't math, not any more by mactari · · Score: 4, Insightful

    Being a mathematician won't make the switch go off that allows you to expertly use object oriented programming. Nor will it help you create a good GUI. Nor will it help you validate date formats. You need a firm grasp on the math you learned in middle school, but the need to be a mathematician has diminished in many computer science workplaces to the point that the "need" is now a simple "added bonus".

    When coding was entirely procedural and focused almost entirely on crunching numbers, well, yes, math was a big deal, but the paradigm's changed greatly now. Now aptitude in pure logic [rather than a broad math bkgd, much less pure calc] is much more important in my experience. Relational database design and object oriented programming require great understanding of set theory, not calculus. I AP'ed into sophomore calculus and had two semesters (plus an audit of DiffEQ) in college, and haven't used that stuff once since entering the workplace (on my sixth year).

    When I look to interview and hire new programmers to my team, for pure intellectual skills I'm looking at good coding style, properly factored (as in refactoring) coding examples, and the ability to explain, say, why an example database schema is or isn't in good third normal form. The math I've seen in my tasks is very basic, whether the product I've helped develop was a simple web-based MIS, county-wide tax system, or financial tracker for the largest non-profits.

    In fact the only time it's been useful for me to understand mathematical concepts [beyond set theory] was when I thought our resident Geographic Information Systems (GIS) experts weren't considering all the ends and outs of different map projections. Even then, what I was commenting on was well outside of my job description of a database admin.

    It's good to know math, all other things equal, but in today's programming workplace, the emphasis on math in CS programs is unfounded. I'll even daresay that's why so mnay people who weren't schooled as programmers do so well -- I know about as many programmers that have impressed me with their proverbial skillz that had a degree in the humanities or no degree at all as I do those with a CS background.

    Wake up & catch up, CS programs, and teach what's useful in "the real world"!

    --

    It's all 0s and 1s. Or it's not.
    1. Re:Coding ain't math, not any more by h311sp0n7 · · Score: 2, Insightful

      I couldn't agree with you more but I wouldn't go as far to say that CS programs should "wkae up and catch up, [...] teach[ing] what's useful in 'the real world'!" Of course its a matter of opinion, but you have to take into account that a B.S. in Computer Science is about innovation. To be "innovative" you need to know the Computer Science timeline, what's been used to get where we are today, and where were going. Hence the need for Discrete Math, Combinational Math, Automata Theory, Numerical Analysis and Computational Models.
      However, I do think that the emphasis on Calc I,II, III and Diff-EQ should be dropped down to just Calc I and maybe Calc II. Like someone said "its the initiaition." The math from high school will help but if you are going to be an creative, innovative, and do I dare use it, efficient, programmer (not this dumb-downed Visual Basic crap), you need the Math theory. It may not be used much in today's realm but if you're doing challenging work in the game industry or getting paid for scientific research for instance then you definitely need that math.
      I hate to say it, but the higher-level math (the Calcs) is like a preliminary for Grad School. If you do well there, then your school or others might want you to go to grad school if you did well in CompSci overall.
      Sorry to digress, but yes, logic, intellectual skills, communication, attitude, and coding styles/examples/techniques are the key factors today. You can teach a humanities or arts individual to be an excellent programmer, but you shouldn't discount the "comp-math" (discrete, etc.) from the equation in the long run as it is an invaluable asset. Anyone can be a programmer, but very few are excellent "programmers" (developers) without the "comp-math" theory.

    2. Re:Coding ain't math, not any more by ivan256 · · Score: 2, Insightful

      It's amazing to me that with the number of people like you out there, there are still people who wonder why programs are slow and resource hungry when written with modern object oriented languages. If you don't understand the math, you don't understand the complexity of the underlying algorithms, and you don't understand why you need a 3 Ghz Pentium 4 to do what everybody else was doing 15 years ago.Just because we have tools and paradigms to hide complexity when you're programming doesn't mean you shouldn't understand how they work. The tools are there to help reduce error, and speed development. They're not there to lower the bar of understanding required to produce code for a living.

      Coding may not be math, and Computer Science (which is what this is about, isn't it?) certainly isn't coding, but math *is* useful in the real world. If you don't understand that, you'll be doomed to never realize why some of the projects you manage fail.

    3. Re:Coding ain't math, not any more by mactari · · Score: 1

      It's amazing to me that with the number of people like you out there, there are still people who wonder why programs are slow and resource hungry when written with modern object oriented languages

      Not so fast. No, I absolutely understand what you're talking about, but today's coder is already in that inefficient, Moore's Law or Bust world. If you're not working on a compiler, that stuff doesn't really help you all that much.

      My point is this: The trade-off today is to have hackers create easy to write, [hopefully] maintainable code, not [in your example] speedy, efficient code, and a CompSci degree doesn't efficiently prepare you for that world. I've done some machine lang coding, and it's great to start from there and understand the theory behind Form1, how to write a quick sort, and how hashtables work, but when you start earning your dough as a hacker, not a scientist, all that theory goes quickly to waste if you're not writing a compiler or the like. I doubt you're writing much assembly either, and if you are, you're in the extreme minority, and I hope your game rocks.

      Another replier said...
      You can teach a humanities or arts individual to be an excellent programmer...

      I daresay you're not really teaching these programmers with unconventional backgrounds at all -- you're reaching out to an aptitude for thinking in a way that higher education isn't really cultivating all that well right now. Many people come out of college looking to earn their bread hacking, not researching, and their CS degree is given too much weight. It's not even in the same field as the work they're being hired to do!

      I made a mistake in my original post... a distinction that these threads are making clear is that CompSci is about science. That's an important distinction to make. What so much of what's discussed on /. is about is actually programming, and building atop what the scientists created and the engineers turned into OSes, etc. Now we need worker bees, like myself, with a relatively different set of skills than what a CS grad would have, to make the digital world go round cleanly -- and efficiently from a business standpoint, not an academic one.

      --

      It's all 0s and 1s. Or it's not.
    4. Re:Coding ain't math, not any more by ivan256 · · Score: 1

      If you're not working on a compiler, that stuff doesn't really help you all that much.

      Bzzzzt. We have a loser.

      Algoritmic complexity of your libraries/templates/whatever your favorite language calls them is not something the compiler even cares about. Your programmers, on the other hand, should. So you have an object, and your dynamic casting and operator overloading allow you to add, multiply and compare the objects. Then you imbed the objects in each other and it's all done in 10 to 12 lines of code and it's all good, right? Wrong. What if your adds and compares have exponential complexity? What code actually runs when you insert an object into a container? When you do the math, does the result fit into your performance requirements? When your app doesn't run fast enough to be saleable, will your programmers even be able to figure out why?

      I agree with your point that just a Computer Science degree does not a good programmer make. You need some software engineering background too, but you need the math as much as you need the style. If your idea of "programming" is designing a gui and it hooking up to a database with some prexisting toolkit, you're not really writing software, you're just aranging software that somebody else wrote, and we're having the wrong conversation.

      a distinction that these threads are making clear is that CompSci is about science.

      Yes, it is, and one of the tools of a computer scientist is math.

      Now we need worker bees, like myself, with a relatively different set of skills than what a CS grad would have, to make the digital world go round cleanly -- and efficiently from a business standpoint, not an academic one.

      Inovative technology is made possible by the scientists. You wouldn't get by without us. You'd have to be a worker bee in some other field. It's not all academic either. You "business" types don't even get involved until some innovation is developed to the point where it can conceivably become a product, and most investors (who do a lot of math on their own) won't even get involved in a project before a scientist type comes in and convinces them that the project is possible.

    5. Re:Coding ain't math, not any more by Anonymous Coward · · Score: 1, Insightful

      As an assistant professor of computer science with an undrgraduate degree in both math and CS with a heavy dose of statistics, I have to agree with the idea of cutting back on the Calc I,II, III and Diff-EQ sequence.

      The calculus based continous mathematics is a historical foundation of mathematics that flows naturally from algebra and geometry. But the more modern and less developed fields of discrete mathematics are far more important in computer science. Many math programs place the calculus sequence as in introduction to mathematics to force a mathematical way of thinking, but a discrete math sequence could serve the same purpose.

      In fact, a sequence of discrete mathematics courses could easily serve as the introduction to mathematical thinking and calculus could be summarized into one or two courses later in the curriculum. Unfortunately, I don't know of any school, including my own, that does it. It's a matter of tradition and a desire to not be too radical that maintains the status quo.

    6. Re:Coding ain't math, not any more by Tony-A · · Score: 1

      Algoritmic complexity of your libraries/templates/whatever your favorite language calls them is not something the compiler even cares about. Your programmers, on the other hand, should.

      Otherwise it's like an engineer trying to design a bridge and has never even heard of "Strength of Materials".

    7. Re:Coding ain't math, not any more by sholden · · Score: 1

      Coding was never math.

      But then again, CS was never coding.

      Code monkeys don't need math. CS, however, *is* math.

    8. Re:Coding ain't math, not any more by Jagasian · · Score: 1

      Set theory and formal logic are branches of mathematics. You say math isn't important, but then name two fields of mathematics that are important. Which one is it? Important or not important?

    9. Re:Coding ain't math, not any more by Kupek · · Score: 1

      CS programs are there to teach Computer Science, not programming.

    10. Re:Coding ain't math, not any more by CharlesEGrant · · Score: 1
      Many math programs place the calculus sequence as in introduction to mathematics to force a mathematical way of thinking, but a discrete math sequence could serve the same purpose

      I don't think it is just tradition. Calculus has the advantage of being relevent to many technical fields while discrete math has (so far) a more limited scope. After all, these are first year undergraduates we're talking about. Many of them will be end up switching to other majors. Having gotten calculus out of the way in the first year keeps a lot of options open for the second year.

      Perhaps it is a chicken and egg problem, but I would think that most first year students would be baffled by the relevence of discrete math until they've written a few programs with non-trivial data structures. On the other hand, most of them will have a nodding acquaintance with area, velocity, and aceleration.
  250. CS Degree Misconceptions by makeworld · · Score: 1

    Complaining that a CS degree doesn't help you program is like complaining that a history degree doesn't help you with your office clerk job. Computer science can be done without a computer. Universities aren't vocational schools. I would go so far as to say that if you can't program at some level by the time you begin a CS program you shouldn't be a programmer anyways.

  251. math & compsci by mikers · · Score: 1

    Okay. Disclaimer: I have a BSEE and have (last september) gone back to get a CompSci afterdegree. Of course finishing my EE was 4 years ago.

    I read the article. I generally agree. BUT.

    First things first. TO be a code monkey requires script kiddie abilities, or at worst an MSCE. To be a software engineer or _designer_ requires a little more, namely a lot of abstract thinking abilities: particularly any hard science, math based, abstract college type education. There are exceptions (eg. brilliant people) who are just that, exceptions. Most of the rest of us have to learn to walk before learning to run.

    In going back to get a BSCS I've found that the hardest courses are... Wait for it... Math. Though I have EE which, I assure you, is lots and lots of math, the reason I find math hard is that I have not used calculus or statistics on the job _directly_ AT ALL the last 4 years.

    Indirectly? Could I have done my job without as much math? No. Taking calculus, statistics and other analytical quantitative courses teaches you (the hard way) to think abstractly and analytically. Not critically (thats what English & arts is for), and not to be an automaton code monkey.

    Do you need the math and stats? I don't like it, I don't like re-taking it, but I know I will need it or I would be screwed if I needed to know even a little about set theory, which from time to time is useful.

    If you want to learn to design and then implement interesting, challenging projects and you aren't brilliant, I would recommend an effective hard science degree with some coding background mixed in (physics, engineering, CS, math... whatever w/ minor in CS or something).

    m

  252. Not all schools are the same by Meech · · Score: 1

    The difference between BS and BA where I went was three Physics courses. I have a BA in both Math and CS, but not a BS because I took extra math instead of Physics.

  253. My advise by Anonymous Coward · · Score: 0

    Unless you love computer programming SO much that you would do it for minimum wage, don't even bother.

    In order to be a programmer, you most certianly DO need the degree. They won't hire you otherwise. But in today's market (and the likely future's market) they won't pay programmers what one would expect to be paid for a four-degree. In fact, your pay will be significantly less.

    And also, the women don't generally go for programmers.

    So there isn't much incentive to be a programmer anymore, unless its what you really, really love doing.

    And even still I would advise against it, just because the industry is too darn crowded as it is.

    --A/C

  254. A little balloon busting... by Cragen · · Score: 1
    I really hate to bust the Math balloon, but imho the majority of programming work is not in engineering, where math is so necessary. For non-graphical application programming in commercial and government app. dev. work, little advanced math is ever, ever used. Sorry that I can't keep the party line here, but even the boolean algebra I learned was only ever needed using when AND and OR. (I've been doing this for 28 years and fare me well, thank you.)

    cragen

    ps. I had an office-mate once who was a research scientist at NIH, researching the AIDS virus's mechanisms of attack in the 90's. I asked him the same question. He reluctantly admitted he never used the Calculus he had to take in undergrad school. He always called it "the initiation process".

  255. To others: Go CIS instead by Anonymous Coward · · Score: 0

    Unless you're a complete math geek and want to spend your career doing nothing but writing code, go CIS (Computer Information Systems) instead. Some schools call is Business Information Systems (BIS) or Management Information Systems (MIS). You take classes for computers AND business. You'll have way more options with a business degree. Still though, it just depends on what you want to spend your career doing. As a Computer Science major, if you end up deciding to do something else for a living down the road, it would not be as easy to change careers as it would be with a business degree.

  256. Math and CS by Shant3030 · · Score: 1

    Sure all the extra math classes in the CS major are a pain, but they do help. You get a better understanding about computer science and its fundamentals. With that knowledge, you can do just about anything when it comes to computers.

    Using a computer and being able to understand why/what/how a computer does something is completely different. Math helps you understand.

    --
    100% Insightful
  257. REAL institute or university by nxs212 · · Score: 1

    Engineering universities will most likely require that you complete at least Calculus I, II and III. Also linear algebra, statistics,etc.
    Why? Tenured professors who don't want to learn anything new, school's need to keep you busy for 4 years, school's need to make $ or get state funding, etc.
    If you went to college that didn't have any engineering or science programs, you would be taking a lot of humanities, writing, literature, business, management and word processing classes. It's whatever they have a lot of.

  258. erm, this guy, by Anonymous Coward · · Score: 0

    it wasn't Danny Hillis by any chance?

    1. Re:erm, this guy, by Anonymous Coward · · Score: 0

      Or Jim Peschke

  259. This is not what I have observed by kpogoda · · Score: 1

    I graduated Rutgers in 2000 with a degree in Computer and Electrical Engineering. I remember the CS degree as being much less intensive with regards to math. If I recall correctly, schools in the area, including Rutgers, only required up to Calculus 1 or 2 to graduate. That is why many students flocked to the major. Many of the students who could not hack the engineering went that route.

  260. Computer Science and Mathematics - Depends by hardgeus · · Score: 2, Interesting

    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.

    1. Re:Computer Science and Mathematics - Depends by MightyByte · · Score: 1

      I'm sure glad there are people like you around to do the programming tasks that I as a CS/math person find dull and tedious.

      The fact of the matter is, some of the CS people in your school probably were scientists. After all, it is called Computer SCIENCE. The problem is that most people perceive Computer Scientists as programmers. This is not the case. There needs to be an across the board restructuring of computing educational curriculums. People like you who could care less about the math and science end of things should major in Software Engineering, not Computer Science. Software Engineering is the practice, Computer Science is the theory.

      Instead of being sickened about CS churning out people who took calculus, you should be promoting the concept of a Software Engineering major that would be what you're looking for.

    2. Re:Computer Science and Mathematics - Depends by hardgeus · · Score: 1

      Bear in mind that I have been out of college for approaching 10 years, so my perspective may be a bit behind the times. When I was at UNO, the only majors available were CS and EE. There were absolutely no other computer related majors.

      And my point is not that there is no place at all for mathematics, but rather that the bulk of graduates end up in the business world rather than a "pure" science discipline, and that the weight of the available curriculum should reflect this.

  261. My courses by 1000101 · · Score: 3, Interesting

    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.

  262. At its core by photon317 · · Score: 1


    All programming is in fact math. Your software, be it written in C, LISP, Java, or whatever, can essentially be thought of as one huge mathematical function. Think lamba calculus.

    --
    11*43+456^2
  263. Lol by SatanicPuppy · · Score: 1

    Useful = Grad work? Not sure about that one.

    And as for reasearch, you may come up with the idea, but someone who is better at programming and worse at math is the guy who is going to make it work.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Lol by Chulo · · Score: 1

      I think what this fellow is implying by USEFUL, is that there are more imporant things going on in this world than application development. Like decoding DNA structures, designing more efficient engines, finding a cure for a cancer, etc... But that's just like, my opinion man.

    2. Re:Lol by SatanicPuppy · · Score: 1

      Most of those things are done by people in other fields with help from us "Code Monkeys" while people like him sit in academia and look down their noses at us for not being "Real" computer scientists.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    3. Re:Lol by nathansu · · Score: 1

      Um, to do research in CS grad work is a must. Thus, it is a prerequisite to being cutting edge in CS. And how exactly would someone with no knowledge about your research be able to 'make it work'? Did it ever occur to you that most who do academic research are the ones who code it? And likewise goes for typical research at any other company. It follows that in depth knowledge of the theory that comes from CS research is a pre-requisite to being able to code it. Thus, it also follows that you should get a clue about what your talking about before making a fool of yourself.

    4. Re:Lol by nathansu · · Score: 1

      Well, like I said - anyone can hack somthing out with decent knowledge about the language, but not everyone can come up for CS research theory. Being a Computer Scientist != being a coder.

    5. Re:Lol by SatanicPuppy · · Score: 1

      Spoken like a typical academic. If you don't learn it in a masters program or better, then it can't be learned. All people with Phd's code better than people with mere batchelors degrees. Yadda yadda yadda. In this field, my piece of paper is just as worthless as yours, so get off your high horse.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    6. Re:Lol by nathansu · · Score: 1

      Well, with your piece of paper your job can be moved overseas. With pieces of paper that speculate you spent 3+ years on ONLY CS you have graduated to a level of research and academia that a bachelors degree alone cannot provide, and job security that your piece of paper provide. Sounds like someone isn't too happy with their chosen profession and should have stayed in school for a bit longer to learn what CS is actually all about.

    7. Re:Lol by nathansu · · Score: 1

      And by the way, Computer Science != coding.

    8. Re:Lol by SatanicPuppy · · Score: 1

      People keep saying that, but it's like saying English!=Writing/Composition, or Thought!=Thinking. Sure there's more to it than that, but without the expression, the theory is empty.

      As for the "You're just a code monkey, all your jobs are going to India" argument, I'd advise you not to get too smug. I can always get a local job as an administrator; who is going to hire you to theorise for them when more innovative stuff starts coming from overseas? Don't think they can't do it...That's what all the engineers at GM thought about the Asians in 1980.

      And, in conclusion, I actually have 7 years of school, and three pieces of paper, and the only thing this has bred in me is a disdain for people who believe that a few extra years and a few more pieces of paper make some sort of profound difference.

      In the end it's just as likely that the guy who will have the brilliant, world changing idea will be a plumber, and we'll both be out of a job.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    9. Re:Lol by nathansu · · Score: 1

      A few more years of CS does make a profound difference in more ways than one. I simply pitty the educational institution that let you pass though their doors with that kind of idea about what CS is all about.

  264. A good database class... by rebelcool · · Score: 1

    will be mostly based on set theory and discrete math as relational databases are really grounded in that. A study of database languages will also have alot on the automata theory side of things. So do take a database class :)

    --

    -

  265. Here here by kndyer · · Score: 4, Interesting
    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.
    1. Re:Here here by tkw954 · · Score: 2, Insightful
      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.

      Good point, although I'd say that a good portion of that 10% are engineers, physicist and chemists, who teach themselves how to code a fuzzy controller by starting from scratch (and being forced to interface with (gasp) computer science people to get it to work right. )

    2. Re:Here here by Anonymous Coward · · Score: 0

      The problem is that for CS people it's hard to compete with folks like me who are engaged in that 10% type of work out of "occupational hazard" associated with a more pure science education.

    3. Re:Here here by Dalcius · · Score: 1

      It's not that cut and dry. Normal companies out there (those without large development staff working on algorithms) need lots of good planning and optimization. For the normal IT department in a large corporation developing middle-ware for a non-gigantic-size company, Computer Science isn't worth much but on paper. But in any company implementing a large system (multi-tiered or many users or distributed, etc.), optimizations and good design come into play which often require a mind for thinking about these kind of problems.

      THAT is where Computer Science comes in handy.

      Now math specific computer science? That's where the 10% comes in. Math is surely handy in doing optimizations, but depending on your application, isn't always necessary. I don't really expect math types to get where I'm coming from -- it all involves the way you think about a problem.

      Cheers

      --
      ~Dalcius
      Rome wasn't burnt in a day.
    4. Re:Here here by Anonymous Coward · · Score: 0


      I think the problem is that Software Development != Computer Science.


      Hear, hear.

      "Computer science is no more about computers than astronomy is about telescopes." -Edsger Dijkstra.

    5. Re:Here here by MyGirlFriendsBroken · · Score: 1

      I think what you say is entirly accurate except that one msjor point is lacking. The fact is that degrees where I come (English original university(not a old poly)) from principly teach you three things:

      How to learn

      Hoe to reason

      Some sort of subject matter

      Now if your subject matter is CS then mathematical reasoning is probably fairly important. I work in a job where I work to develope applications of people to use out of a set or requierments. This is not a bad thing and I agree not a CS job. However, I do need to use my ability to learn and my reasoning and this often means that I need to use my mathematical skills to work stuff out to get the job done

      As an aside if I were to say that CS courses miss anything out then it is language skills as I have found this are very valued and something which I maybe need more that my tech skills. But the I do work for a consultacy and so "Client communications skills" are key but we really need our tech backgound in addition to these.

      --
      If you read a speed reading book, does it take you less time to read the second half?
    6. Re:Here here by GCP · · Score: 1

      Actually, in my experience, the apps that require any math beyond counting pixels or doing a little algebra or back of the envelope estimates are far less than 10%.

      And as for math being handy for optimizations, that's not my experience either. I've done a lot of optimizing, and it involves looking for bottlenecks with tools like profilers, or stubbing out parts of a system and seeing which part is causing the slowdown, or just thinking about your approach (which may at times be an algorithm) and looking for unnecessary repetition.

      But I went ahead and learned the math anyway, because I love math. And it has definitely guided me toward certain projects where those skills would be useful, but that's a pretty small percentage of what's out there these days.

      These days, I'd have to say that math, for the most part, is just another domain specialty, like finance, or physics, or taxes. It's not fundamental to software development.

      Certain types of math are, however, fundamental to hard-core computer science, which is where I learned a lot of it, but it's probably more accurate to say that this type of computer science is mostly a field within applied math, and it has a surprisingly small overlap with the typical world of software development, which is much more heavily concerned with the specific capabilities, strengths, and weaknesses of various current development tools.

      --
      "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    7. Re:Here here by dfj225 · · Score: 1

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

      I would say that as a CS major you should still be very good at development. Obviously, as a CS major you will study much theory, but you must be able to turn that theory into code and a working application. Also, to create good applications, one should have a good understanding of CS and programming, more than just the basics. Although, I would agree that being a CS major might be overkill for developing a website that uses PHP or something like that. However, for pretty much any applications more advanced than this, you will definitely want someone who knows how to code very well. This might even apply to large/powerful web apps. Think about amazon or eBay. Surely, you wouldn't want someone who doesn't know how to create quality code and move around large amounts of data to write the backend to a site like that. I would say, that if you are a CS major who can turn theory into working code, then you are more than qualified to turn design specs or anything else into a quality program.

      --
      SIGFAULT
    8. Re:Here here by acidbass · · Score: 0

      yeah, cuz they obviously dont teach people how to spell at english universities.

  266. Minor criticisms by rumblin'rabbit · · Score: 1
    The trouble with writing an article like this is there's always some gumbah (sp?) who wants to nitpick. Like me.

    Besides those, you will learn about limits and indeterminate forms, which will allow math to be done that involves infinitely large or small values.

    The idea of Cauchy's definition of the limit is to avoid talking about infinitely small values. Only with this definition's discovery (invention?), and the abandoning of the idea of "infinitesimals", did a sound theoretical basis for calculus begin to form.

    First, high school calculus teachers tend to be the teachers in the math department the longest. The problem with this is that while these teachers are more experienced, they have been away from calculus longer than the other math teachers in most cases. Besides that, these teachers are often near retirement and may not be as motivated as younger teachers.

    I think the author just had a bad experience with an older math teacher. The statement about being away from calculus for a long time is a little strange. Any calculus you're taught in university is going to at least 150 years old.

  267. MIT 18.01 == 3 community college courses by peter303 · · Score: 1

    I took some calc courses at the local community college while in high school. All three together barely reached the first semester.

    1. Re:MIT 18.01 == 3 community college courses by chialea · · Score: 1

      I took calc at my local high school (which is a very good school, I have to admit) and skipped two semesters of calc at Berkeley. (I had quite a few friends at MIT, so I know what's in that course as well) My point is simply that all calculus courses are not created equal, just as you said, but "lower level" courses aren't necessarily less intense or less useful. I found my high school education served me quite well.

      Lea

    2. Re:MIT 18.01 == 3 community college courses by Anonymous Coward · · Score: 0

      18.01 is a joke. 75% of the incoming class at MIT already has credit for it or simply takes the advanced standing exam. Now 18.024, that is a class worth taking

  268. Compared wtih MIT... by amabbi · · Score: 1

    I was an EE major at MIT, and our core requirements were very similar. In terms of math, Calculus I and II (multivariable) are requried of all students, even the philosophy majors^H. For EECS majors, differential equations and linear algebra are also required, plus an additional math class (for EE it was probabilistic statistical analysis, for CS it was "math for CS majors," basically induction, proofs, etc.) That's about it in terms of the undergrad requirements (and for master's I only needed one additional 'advanced' math class, for which I took complex numbers)... so it seems like the UofI math requirements are more rigorous! Most CS majors also take an algorithms class, but it's not a requirement. (btw at MIT the most basic intro math class is Calculus I, so it's assumed you have a good grasp of algebra, geometry, and trig)

  269. Robust CS/Math Education by scovetta · · Score: 1

    I've got a very strong education in both CS and Math, here are the courses it took to get me to where I am:

    Undergraduate CS:
    -----------------
    CS Fundamentals I/II
    Numerical Methods
    Computer Architecture
    Assembly Programming
    Operating Systems
    Algorithms & Data Structures
    Programming Languages
    Computational Modeling
    Automata Theory
    Computer Ethics
    Statistics
    Linear Programming
    Software Engineering

    Undergraduate Math:
    -------------------
    Calculus I, II, III
    Differential Equations
    Linear Algebra
    Abstract Algebra I, II
    Advanced Calculus
    Engineering Math
    Numerical Methods
    Financial Derivatives

    Graduate CS:
    ------------
    Compiler Construction + lab
    Computer Graphics + lab
    Information Discovery
    Natural Language Processing
    Computational Tools / Finance
    Machine Vision ..and still I'm writing database-backed web applications...

    --
    Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird. --Nietzsche
  270. Career? by 35ft_twinkie · · Score: 1

    I'm sorry. But as much as you would like it to be: College is not a career. It is training for a career.

  271. Looking for math-heavy sw-eng work by Anonymous Coward · · Score: 0

    The irony of it all is that I see the folks with the math skills (okay, I'm talking about myself here) get overlooked when there's a task requiring a solid math background. It's very frustrating to have taken all the extra classes for a Math/CS double major and the only math I do is to overcome the lack of unsigned integers and bit-shifts in Visual Basic. I work for a defense contractor whose *specialty* is signal processing and I still don't need to know any math beyond binary operators, no matter how hard I look for SP-related work.

    So parent poster: who do you work for?

  272. I get a good laugh... by the+grand+asdfer · · Score: 1

    From the students in the MIS program at my college who usually chose this major because they could not handle the math and associated science classes required for a comp sci degree. Although to do most basic buisness programming I doubt you would need much higher math skills. I imagine that some of the rationale behind these classes is to weed out some of those who are not serious about pursing a comp sci degree. FWIW. I am a chem major...

  273. reading symbols by trick-knee · · Score: 1

    I took an undergrad degree in theoretical math, and was quite proud of the fact that the highest level of technology I used was a ballpoint pen. I found, however, that all that training in thinking in logical ways helped immensely when I picked up programming.

    but most helpful was the experience reading symbols. that first C++ class was a no-brainer for me. while many other students were struggling with basic syntax, I picked it up pretty quickly because I did not fear the odd usage of characters like '*' and "==".

  274. the usefulness of math by tuxette · · Score: 1

    It's not just that it's helped me with the computer science stuff. It has also helped me a lot with "unlikely" fields of study such as law. When I come across a difficult legal problem to solve, I solve that problem a lot faster when I analyze the problem "mathematically." As mentioned many times already, it has to do with thinking, problem solving techniques, etc. It's quite useful for most fields of study, I would think...

    --
    People say I'm crazy, I got diamonds on the soles of my shoes...
  275. Too much Calculus by Dixie_Flatline · · Score: 0, Redundant

    I did all the calculus classes that they made me do in University. Personally, I think the time should have been spent in several other branches of mathematics.

    All CS majors should have to take classes that focus specifically on fairly advanced algebra. I enjoy learning math, but it turns out that I'm not a very good math student. However, my math skills went way up when I started taking algebra courses. Because algebra is the basis of basically all mathematics, it ends up being a serious foundation to programming. As near as I can tell, programming languages are generally no more than fancy algebra.

    Secondly, I think that all CS students should have to pick some sort of algorithmic minor. Graph theory, logic theory, automata theory, whatever. By specializing in a branch of algorithmics, I can guarantee that you'll end up a better computing scientist and a better programmer as well.

    I guess what I'm saying is that I think calculus is too applied. :P

  276. My CS Math courses by robmandu · · Score: 1

    Graduated in '96.

    Required to have Calc I, II, and III. Already had Diff Eq on top of that b/c I was originally an engineering major.

    A Numerical Methods course was very enlightening in explaining how to accomodate rounding/precision problems and other ephemera. Unfortunately, all programming examples relied on coding Calculus equations, which was a bit overkill.

    Discrete Math also very interesting from a Von Neuman perspective.

    And, of course, the requisite stats course.

    Summary: The Calculus seems like it'll kill ya though... it certainly seems overkill to me... and I now work for a statistical s/w company.

    --

    --
    Break the rules. Keep the faith. Fight for love.
  277. Try someting else too.... by trainedCodeMonkey · · Score: 1

    If you get a cs degree, your bound to get some math... calculus and a class in discrete to say the least are prereqs for higher level classes. Yet the math and proofs to me are boring and if you understand them at a higher level then you can get by. Instead of studying more math think of studying something else... sure more math will help the way you think, but equally so a minor in biology, psychology, or even something oddball like english will be a better asset when looking for a job. I found that when i told interviewers that i got a minor in psychology and a major in cs they were much more interested than when i just talked about my cs major. Focusing on something that is less removed from cs gives you a different perspective when approaching problems and is a higly marketable skill. So go ahead, try something else that interests you rather than taking another cs or math course, unless the only thing you like is cs or math. :-D

  278. Graph theory and combinatorics by maiden_taiwan · · Score: 1
    Any programmer who does not learn some graph theory is doing him/herself a disservice. Likewise for combinatorics and other discrete (as opposed to continuous) math.

    And of course algebra...

  279. I agree entirely by Anonymous Coward · · Score: 1, Interesting
    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.

  280. Geometry! by SatanicPuppy · · Score: 1

    I loved Geometry! And Linear Algebra! I...I understood it, intuitively. Those were the only math courses where my intuitions actually helped me. Calc, even advanced algebra, man I had the worst problems.

    I'll tell ya though, it was the Advanced Symbolic Logic (I was a philosophy major as well) that really helped me. All the places were most people fall back on their math, I fall back on my logic.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Geometry! by AKAImBatman · · Score: 1

      I loved Geometry! And Linear Algebra!

      Some Math hater you turned out to be! Congratulations, you've been using mathematics and didn't even know it! :-)

  281. Math is like law by Tablizer · · Score: 1

    Math should be treated more like law. Yes, you need to know or consult about it every now and then, but it is not realistic to keep it in your head for years-and-years IN CASE you may need it. It is more efficient to consult a math expert WHEN you need it. Instead, math courses should focus more on basic concepts rather than bulk and rote. I don't remember the vast majority of the math I took in school, and I doubt most others do also after a few years.

    Some say that math teaches "logic and reasoning". To some extent it does, but a lot of it is also mere algorithm implementation. For most of the problems in the books can be automated. Why teach people to do a task that a machine can do? If we want to teach logic and reasoning, then there are better topics than numerical math.

  282. Teaching your brain to think by Anonymous Coward · · Score: 0

    As far as I ever understood why you need so much math is because you need to think analytically and be able to see and implement things in several different ways.

  283. well, start with discreet math by underbider · · Score: 3, Informative
    Take a look at this 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!!

    1. Re:well, start with discreet math by Anonymous Coward · · Score: 0

      Well, I guess one could make a case that encryption algorithms would be "discreet" math... ;)

  284. Maths is a tool by scampiandchips · · Score: 1

    For my 2 cents, i always regard maths as a tool and while i almost never actually do any calculus, vector calcs or matrix manipulation etc..
    It's very reassuring to be able to look at some one elses calcs and think 'that looks about right'. I occasionally prod and poke at someone elses work but rarely have the time or inclanation to duplicate it. But i *could* if necessary.
    Admiteddly i'm an elec engineer but i'd guess it must be a similar situation for most CS day to day jobs.

    --
    There are things we know we don't know and things we don't know we don't know. - Donald Rumsfeld
  285. Re:Actual Classes Taken by Anonymous Coward · · Score: 0

    Go the CpE Route and take all of your engineering calculus, diff eq, probability, linear algebra, and if you are smart (or foolish as the case may be) you will take a programming course that handles all binary/Hex/Octal math. Mine was Motorola 68000 based microprocessor class. Now some are saying when was the last time you had to think in Octal? My response is, when you have to write an interface to legacy equipment, you never know what the hell you will get into.

    There are incredible graduate classes in Fuzzy Logic, Chaos Theory, etc. Don't underestimate the value of background knowledge.

    Easiest way to keep your "Programmer Only" job from being outsourced is to be able to do the hardware side (not design, but practical application and interface).

    Don't waste your mod points flaming an AC.

  286. it's not the math by Anonymous Coward · · Score: 0

    The reason for all the math classes is the problem solving skills that high level math uses/teaches.

    Math is really just addition and subtraction. High level math is just creative ways of using additional and subtraction.

    1. Re:it's not the math by ph43thon · · Score: 1

      nah, you're confusing the structure with an instance of it. Defining a way to combine elements from the Real numbers gives birth to a specific structure. High level math, in a lot of cases, involves taking sets of elements, defining (or discovering) a structure, and seeing what happens. Anyhow, I guess in a twisted way, it's "just creative ways of using addition and subtraction." Then again.. graph theory stuff doesn't seem to be "addition and subtraction".. but I've not look at that much.

  287. Re:well, start with discrete math by underbider · · Score: 1

    Opps, missed combinatorics... another one of those things that I forgot after taking it...

    Ohh, and take some English too while you are at it... don't mispell discrete like I did. ;-)

  288. From experience by feelyoda · · Score: 1

    You can't get away without the following:
    discrete math (combinatorics, graph theory, etc.)
    linear algebra
    basic probability.


    Calculus, I don't think you actually need it to be a programmer.

    For Anything AI related, there has been a large migration from symbolic representations to probabilistic representations. Anything in machine learning, computer vision, natural language processing, data mining, even network theory, will require a strong and advanced Statistics and Probability class.

    I have found that the fundamentals of computer systems are greatly advanced with a Theory of Computation course, which is basically math, with FSMs through turing machines represented.

    Again, the question is one of application. If there is a target in the area you would like to work, make sure to learn about it. Also, more math only helps programming, as far as I'm concerned.

    --

    Robo-Blogs of the world: UNITE!
    1. Re:From experience by CharlesEGrant · · Score: 1
      Calculus, I don't think you actually need it to be a programmer
      Anything in machine learning, computer vision, natural language processing, data mining, even network theory, will require a strong and advanced Statistics and Probability class
      You are going to have a pretty rough time in your advanced statistics and probability class if you don't know calculus!
  289. University != Trade School by ph43thon · · Score: 4, Informative

    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

  290. Explain to me how thats relevant. by SatanicPuppy · · Score: 1

    Yea, so they know Chemistry. How does this help them in Comp Sci?

    Physics, I buy. I took two years of physics. Understood why it was a REQUIRMENT, learned a lot.

    Requirements for the major that have nothing to do with the major, however, are pointless. You're saying that every programmer needs knowledge of advanced Chemistry, and that is complete crap. Some schools require everyone to take chem, and thats fine with me, but don't add it to CS, because it has no place there.

    I've got nothing against people who want to double up with CS and another science, and I bet someone who double majored in CS and Chem would be in high demand. But that shouldn't be shoved down your throat.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Explain to me how thats relevant. by Safety+Cap · · Score: 2, Insightful
      I said if you stick with courses that strictly apply the paper title of your major, you're uneducated.

      Surely you can come up with at least three reasons why knowledge of (chemistry/biology/women's studies/poly sci) could possibly be imporant to a student working towards his degree in CompSci?

      --
      Yeah, right.
    2. Re:Explain to me how thats relevant. by SatanicPuppy · · Score: 1

      Well, I was a philosophy/comp sci major with a double minor in physics and history, so I agree with you. But I think that those requirments ought to be outside of the major, in your divisional requirements, not inside your major. I'd even be fine with a mandatory science elective, just not mandatory chemistry.

      My philosophy major required this one esoteric general math class, and I had to go through hell convincing them that there was no benefit in me taking a class which was effectively pre-calculus, when I'd already taken 5 classes of haigher math.

      All this really stems from the fact that I don't really like chemistry, and wouldn't have liked having to take it.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  291. Re:When Yanks Go Bad by Anonymous Coward · · Score: 0

    I love it when my country flexes its military muscle.

  292. You'll need the math, but that's not all by sevinkey · · Score: 2, Insightful

    No question, there is a TON of math required for computer science, but if you're into computers it shouldn't be too difficult, as long as you actual read your assignments, unlike myself who coded until late in the night instead.

    The one mistake I felt I've made is not taking enough business courses. I'm not saying to take the CIS route, as that skimps on the math, but now that I'm in the real world I find programmers are often called upon to make real business decisions, even sometimes inappropriate ones for the position.

    In a world where many US jobs are being outsourced to India and I'm sure others soon, there will be less/no available junior level jobs that pay anything. I don't have a problem with this, but that means that for a lot of us to maintain our comfortable standard of living, we will need to come up with the ideas and forge business relationships, rather than just implementing the ideas.

  293. OMFG! by h311sp0n7 · · Score: 3, Insightful

    As an individual with a B.S. in Computer Science I find all this negativity towards CS Majors absurd. If you are considering a B.S. in Computer Science you have to decide what you enjoy doing. Do you enjoy programming, solving problems, implementing solutions that require in depth technical knowledge of how both hardware and software function, etc? Or are you more of a customer service related, implement technology solutions with knowledge of how hardware and software interact, and want to concentrate on using pre-existing software apps to provdide solutions? Obviously, this is just the tip of the iceberg in deciding MIS and C.S. A lot of my friends from school loved doing web programming (HTML, XML, some applets, and web design), but hated the whole theoretical aspect of computer science. If you can't take the theory and its inter-relation with math then you should go MIS.
    Computer Science is itself inherent to math. You can't really separate the two. Sure you can implement all these solutions with A+, Network+, CCNA, MSCE, but how much do you really understand about truly optimizing performance. What about tailoring apps to employers requirements? Cost/benefit analysis of code? Sure, all that helps, but your not really implementing a complete solution just by setting up a network and providing support. There's so much more to it and that's where the theory, programming, and math come in.
    Sure you can get by without the math and theory, but how are you going to implement better solutions and design without them? Even with a loose understanding, CS majors have a skillset and problem solving ability that IT majors just don't have. A good question for potential CS majors would be can you make a contribution to the linux development community? If not, maybe you should concentrate on getting an MIS or minoring in IS with a major in business or another field of interest to improve your marketability.
    In the end I guess it comes down to each person's ability and interests. Math is inherent to computer science, but focuses on better development and better development techniques while understanding the underlying structure of systems. If you don't want to understand this underlying strucutre and don't care about innovation and theory then stick with IT. IT is innovative, but is more system functionality and maintenance rather than optimization, efficiency, development, and extensibility.

  294. Depends on the problem. by raehl · · Score: 1

    Lots of problems are so parallel that they scale near linearly, and doing it on, say, 512 processors, is 500 times faster than doing it on one.

  295. Numerical methods and approximations by sparkywonderchicken · · Score: 0

    An important area for study are numerical methods for solving complex problems. For many years before object oriented programming this was the major method of calculation. It still is the foundation for all of the math libraries. life is short and so is my attention span

  296. What kind of math? by defile · · Score: 1

    None, really.

    If you can deal with basic arithmetic you can handle most of CS.

    The areas where more sophisticated math is required are usually pretty obvious, just like you'd need to know accounting principles if you wanted to write an accounting package, you'll need to know basic trigonometry to write 2d games, linear algebra if you want to do 3d games, uhm, information theory if you wanted to work on cryptography, and god knows what for AI?

    Just a guess.

  297. MATH courses I have taken by JewFish · · Score: 1
    What sort of math are CS majors expected to take?

    Ok I will bite... I am graduating with a CE degree and these are the math courses I have had to take.

    Discrete, The most relevant course for programmers, involves studying discrete values, probability, some number theory, and lots of logic.
    Linear Algebra You don't want to miss out on this one, learning to solve problems using lin alg will make your code work when others won't.
    Calculus I took three semesters of this (differential, integral, and multivariable). I would recommend that any CS student take at least two semesters of calculus.
    Differential Equations I would not recommend taking Diff Eq to your average code monkey CS student as it is not directly applicable to most coding projects. However solving some Diff Eq problems is a real bear, and very hard to do without the help of a computer.
    Cryptology Probably not offered by all math departments, but certainly worth taking if it is. At my school it was roughly half math majors and half cs majors in the course.

  298. Math by ntmatador · · Score: 1

    Amen

  299. Math helps your thought process by ThomasFlip · · Score: 1

    What my professors have been telling me is that majoring in computer science isn't necessarily designed to teach you everything there is to know about computers, but how to think. Math does this as well. By taking math courses you not only learn math, but you learn how to deal with problem solving, and different approaches to problem solving which can be applied to many different things. Math also teaches you to be extremely precise and concise. This can also carry over to many other things as well.

    It's a whole thought process you're developing in CS. You should be able to look at something you have never seen before and be able to understand it faster and more completely.

    --
    If the dollar is an "I owe you nothing", then the Euro is a "Who owes you nothing." - Doug Casey
  300. Math in Programs by bruthasj · · Score: 1

    A good knowledge of math will augment your skills as a programmer in nearly every type of application. For example, I develop high-level material control systems for a living. Mostly, the system is a complex, distributed state machine. On occasion, we have need for math. Recently, because of a customer requirement, I had to implement a 3-space Euclidean Distance equation to compute priorities on locations.

    Not sure how the idea would have popped into my head if I had not taken the requisite math classes. I graduated 4 years ago ... so, a lot of time for rust to collect on the math gears, but, I at least had something!

  301. University CS isn't a vocational school. by Anonymous Coward · · Score: 1, Interesting

    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.

  302. The math you took in CS wasn't listed under "math" by John+Harrison · · Score: 1
    Heh I have a CS degree from Stanford and I took three classes from the "math" department. Calculus, statistics, and linear algebra. Is that all the math I took? No way.

    At least half of the CS classes were math, or "computer science" if you will rather than programming. Things like logic, complexity theory, algorithms, and AI were taught without the use of computers and are for the most part specialized math. Other courses suchs as compilers, graphics, and operating systems required applying math and theory as well as learning some new math.

    Don't be fooled by labels, if you have a real CS degree you mostly took math courses with some programming thrown in.

  303. Graphics by Anonymous Coward · · Score: 0

    If you ever want to do graphics programming (2D or 3D) it is all math.

  304. my list of courses by guacamole · · Score: 1

    If your goal is to go to grad school and work in the field of CS theory you might want to take:

    Combinatorics, probability theory, logic, advanced algorithms courses, numerical analysys, and other electives that you might think are relevant.

    If you want to be an efficient programmer (as opposed to working in CS theory) then you should at least take a discrete math course and one computer algorithms course. In addition, if you intend to do programming for numerical computations (almost certainly you will) consider taking at least one numerical analysis course. Take an advanced linear algebra course if you want to do 3D graphics.

  305. Scary by Anonymous Coward · · Score: 0
    This is scary. Whare are those topics doing in college?

    I got out of high school in 1987 (meaning, I am approaching or have already gained old fart status). Math topics in high school included:

    • Differentiation and integration. (How else do you do any meaningful physics?)
    • Limits. Including epsilon-delta proofs.
    • Probability and statistics. Not ground-breaking stuff, but certainly the fundamentals of distributions and tests.
    • Differential equations. (Certain simple ones, of course.)
    • Matrix calculus. (Restricted to 2x2 matrices.)
    Notably absent from that list is complex numbers. That would have been useful in physics for dealing with AC properties of inductors and capacitors, but those can luckily also be dealt with in other ways.

    Linear algebra would have been very useful, but most of the class would probably have been sitting around with wide open eyes, blinking every few seconds and wondering what was going on, :-/ In fact, linear algebra is probably the single most useful math topic for science. In computer science it will hit you in optimization (think linear programming), for example.

  306. Critical Thinking by MightyByte · · Score: 3, Insightful

    I graduated with a double major in Computer Science and Math. I now work as a software engineer in a large defense company. Many people interchange the terms Computer Science and programming. These terms are not interchangeable. Computer Science is the theory which provides the building blocks that programmers use (often with no underlying knowledge of what is going on). The act of programming really falls more into the term Software Engineering.

    Computer Science is theory. In most fields, the theoretical people make heavy use of math. The same is true in Computer Science. Algorithm and development is inextricably linked dependant on math. So if the question is "Does CS have that much to do with math?", the answer is a resounding yes.

    Programming or Software Engineering arguably doesn't have as much to do with math. As other posts mention, there are programming/software engineering jobs that use little to no math. However, there are a very large number of jobs that need math. Whether you have one of these jobs or not, you can still benefit from having taken more math.

    The issue is not that you took a class that taught you how to do the math that you need to accomplish the job. The issue is the critical thinking skills that math develops. When I started my software engineering job after graduating, the first project that I was assigned to required lots of math that I had never seen in school even though I was a math major. I was able to do the work not because of something I learned, but because of the critical thinking and logical reasoning skills that my math classes had helped develop. My math background also gave me a familiarity with the basic mathematical tools that I needed.

    There will always be new problems that school has not prepared you for. If you go to school to learn how to solve the problems you will encounter in the workplace, then you are in for a big surprise. The important thing to get out of school is the ability to think critically and learn new concepts.

  307. on a side note... by zarniwhoop · · Score: 1
    why do the Americans insist on the sigular "math" while the British insist on the plural "maths"?

    As a Brit - I much prefer "maths" since it is an abbreviation of "Mathematics" not "Mathematic".

    Also it sounds better (tounge-firmly-in-cheek)

    1. Re:on a side note... by Meech · · Score: 1

      I was just thinking the same thing. I think it is one of those things that makes us (americans) different, like not throwing in (or removing) a random 'u' into words.

  308. Higher Math and Programming by Anonymous Coward · · Score: 0

    One of the most important things to remember is that while trig, algebra and calculus are important ways to put math to work, they are not all of math by any means.

    I have found that the skills and techniques I learned in Analysis, Number Theory and other areas of mathematics are directly usable in design, systems analysis and programming.

    Proving theorems is about thinking, trying multiple approaches (and occassionally being gifted with a flash of insight) and applying logic. What else is there to programming and design?

  309. Lots of great threads here by evilpenguin · · Score: 3, Interesting

    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.

  310. Try a different University? by tynman · · Score: 1

    I've been going to Northface University for a few weeks now, and they seem to be pretty good about giving you the math, and putting it in the context of programming. I've had up to Calc II and a bit of Discrete at a community college. Both have been very useful to me, but the discrete would have been better it had been put into a CS context. Our Information Modeling class is kind of teaching us Discrete without mentioning that what we're really doing is math. I expect more advanced courses will expand on this.

    --
    Darned tropical millipede! What's it doing in our apartment?
  311. Math Ruined Computer Science for Me by Cruxus · · Score: 1

    I'm finishing up my freshman year in college; unfortunately, mathematics has never been a strong point for me. Sure, I can follow a few simple procedures to do basic algebra, but the complicated steps necessary to differentiate and integrate functions is always a source of errors for me, and these errors cascade. I've always been prone to make stupid little mistakes while doing mathematical calculations, and this does not seem likely to change.

    Another problem is that mathematics is incapable of holding my interest. Frankly, I don't see why some people get so excited about proving some formula. I'd rather read philosophy, draw sketches, write satire, or develop my linguistic talent. Say what you will about these hobbies being less applicable to real-life situations; I find them quite enjoyable.

    For these reasons, this ultra geek is going to have to pick a new major.

    --
    On vit, on code et puis on meurt.
  312. Re:Car wars by chooks · · Score: 1

    I would say that in order to play Car Wars you need some higher level math skills :) And that's just to figure out how much Coke and popcorn to get so that it will last you until 6 AM (not to mention calculating your to-hit roll for targeting a tire while doing a bootlegger reverse while the other guy is doing his maneuvering :))

    Damn, it's been a long time since I thought of that game!

    --
    -- The Genesis project? What's that?
  313. Circles??!! You snot nosed spoiled brat.... by NarrMaster · · Score: 0

    We didn't have curves in my day. We had to approximate with an arbitrary number of angles, and WE LIKED IT!!

    --
    That's right. All your base.
  314. Computer Science versus Computer Programming by carldot67 · · Score: 1

    Big difference IMHO.
    I think I can summarise it thus:
    "A comp sci graduate is as comfortable in the analogue as with the digital"

    What I mean by this is that (say) a web programmer deals generally with flags and conditional constructs. A comp sci on the other hand needs to know about fourier transforms, dsp, trig, calculus , rendering, algorithm efficiency and so on.

    The two worlds meet at the level of large systems design where the number of records and permutations of flags and conditionals makes the population of outcomes so large as to seem analogue.

    Thats my view anyway, having done all three.

    --
    I wish at was Friday, but I dont want to wish my life away. So I wish it was last Friday.
  315. Try proof theory by stype · · Score: 2, Insightful

    The most rewarding math class I took in college was called "Advanced Calculus" where we basically proved why everything in calculus works, start at a very low level. The thinking required for making proofs is very close to the thinking required for making algorithms...only much more defined. I'd highly recommend getting a background in writing mathematical proofs.

    And I think everyone on the planet should take simple probability and estimation courses. People are really clueless when it comes to estimation. Like if I asked how many hairs are on your head...I don't expect the right number...but there are logical ways you could come within an order of magnitude or two. Just simple things like this are useful every day. Estimation is good just for a simple check if your numbers are even in the ballpark. Or just trying to judge how far away something is. People seem to think that a smart person is someone who knows everything..but its more a person who knows how to figure out anything...whether it be by looking in books or asking a friend for help.

    --
    -Stype
    Bus error -- driver executed.
  316. Well, maybe ... by ToSeek · · Score: 1

    As a computer programmer, most of the people with doctorates I know (physics, chemical engineering, etc.) are doing the same thing I do. But most of them got into programming because the job prospects were better. I don't know how easy it would be to switch back.

  317. small correction by mr_jim83 · · Score: 1

    The article says the discrete math isn't on the UIUC schedule, but CS 173 and 273 are discrete math classes. Good classes, depending on the professor. Also, boolean algebra and logic circuits are covered in 231.

  318. Consider a field in CS which is not IT/Programming by Anonymous Coward · · Score: 0

    because its is being outsourced. Do research, which fields cannot be outsourced, and concentrate on that..

  319. Finance != Math, Programming is a subset of Math. by jgardn · · Score: 1

    Sure, we use series to describe for loops. We have "classes" or mathematical entities like tensors, operators, and vectors. Databases are based on relational algebra, which is 100% math, and we use relational algebra quite heavily in advanced physics courses. Dynamic libraries are a fraud - if they were written right the first time, they wouldn't be dynamic. But in Physics, we have discoveries and such that render entire branches of the science irrelevant or in need of an overhaul.

    The foundation of math and programming is trying to express human thought with formal language. At least the mathematicians have embraced the fact that it can't be done, that there are an infinite number of orthogonal theories out there, and that man could spend an infinite time deriving them and still find no "one theory to bind them all". Many programmers forget that basic fact of formal languages.

    Math and programming are both about managing infinitely complex structures and logic trees, and abstracting what can be abstracted, and rendering irrelevant what can't.

    --
    The radical sect of Islam would either see you dead or "reverted" to Islam.
  320. Where I went... by LilMikey · · Score: 1

    We had to have enough math for the CS major that we were 1 class shy of a Math minor. Obviously, most of us took that 1 extra class and got it. The line up for the minor was something like: Calc 1 (4), Calc 2(4), Calc 3(4), Linear Algebra(3), Principles of Math (3) and an elective(3) for 21 total credits. There may have been one more course I'm forgetting as I think we were 2 courses shy of the 30 hours needed for a major. I think you didn't have to take Linear as part of the CS major with no math minor.

    As far as usefullness, not at all at my current job. However I would much prefer a job where those skills would be used.

    --
    LilMikey.com... I'll stop doing it when you sto
  321. Seems like a confused argument by werdna · · Score: 1

    You argue that "every program can be converted to lambda calculus which is a mathematical expression form." I'm not sure what point you are trying to make. If you are so sophisticated as to appreciate Church's thesis, you certainly appreciate that every computable function on the integers can be computed by an infinity of programs, and that there exist no computable basis for determining an optimal or cannonical programs for most ordinary measures on the function space. In other words, selection of a program is certainly, in part, a matter of expression, rather than math, at least from the perspective of the naive correspondence between a space of programs operating on integers and the lambda calculus.

    And, I am not entirely satisfied that there is a great (or at least useful) sense in which the correspondence is credible to conclude that programming equates to lambda calculus. I seriously doubt you can produce in your lifetime a lambda expression that adequately models the input-output properties of a modern first-person shooter video game, which is certainly a computer program. It is EASY to show a correspondence between computer programs that compute results of integer functions and lambda expressions on the integers. The correspondence is far more attenuated for video games.

    The fact of the model does not mean that the human endeavor in one field is equivalent to the human endeavor in the other. In the early twentieth century, we believed that the capacity to model most things as sets made mathematics set theory, and the capacity to model most proof systems as formal wffs and proofs made mathematics itself a subset of logic. But the fact of the matter is: mathematics IS NOT a subset of logic. While it may be so that all valid theorems can be reduced to a proof in a formal sentential calculus, I can absolutely assure you that almost NO mathematician writing proofs is "doing formal logic." Nor can we have any confidence at all (even taking into account the limitations of Godel and Russell in these models) that "doing formal logic" well could ever give us good results in the other fields.

    I'm not sure where I am going with this either. Perhaps something like this: while we can almost assuredly MODEL a computer program in some formal system, this is not the same as saying that programming is the same as working the formal system.

    Every novel can be recoded in a mathematical fashion as well, but writing a novel is not math. Likewise, I think, programming.

    Mind you, I am NOT asserting that math does not intensely inform the art or science of programming. Indeed, a hold the precise opposite position.

    My point is merely that the ability to show correspondence between entities in one arena and the other does not permit you to draw the conclusions you have drawn here, both in terms of the utility of math and the patent system. You may be right on either or both counts (and I may largely agree with you on the conclusions if more precisely stated). But the fact of the correspondence proves nothing, and doesn't really advance the argument at all.

    1. Re:Seems like a confused argument by aim2future · · Score: 1
      You argue that "every program can be converted to lambda calculus which is a mathematical expression form." I'm not sure what point you are trying to make.

      Well, in case my message was confusing, your was even more. You answer like that kind of strange people that consider that patents on software could be motivated.

      Lambda calculus is powerful enough to express any program, lambda calculus is math, as is logic. Math is nothing but an agreed convention about manipulating symbols.

      If you are so sophisticated as to appreciate Church's thesis, you certainly appreciate that every computable function on the integers can be computed by an infinity of programs

      This is not true, if any essential part of these programs were patented. Even though it is not trivial to find a minimal form, I claim that a minimal form exist. If this form exist, and if this form would include e.g. a patented algorithm, you would not be able to express it.

      I seriously doubt you can produce in your lifetime a lambda expression that adequately models the input-output properties of a modern first-person shooter video game, which is certainly a computer program.

      You seem not to be in computer science at all. You seem to be a lawyer or something like that, who doesn't understand programming. You mix up complexity with math.

      The correspondence is far more attenuated for video games.

      This doesn't mean that the expression doesn't exist, and I also claim that it's quite easy to find such an expression, given the program.

      The fact of the model does not mean that the human endeavor in one field is equivalent to the human endeavor in the other.

      This is exactly why computer programs should not be patentable. Computer programs live in a perfect world, were patents have nothing to do (but copyright is ok).

      But the fact of the matter is: mathematics IS NOT a subset of logic.

      No, but logic is a subset of mathematics!

      While it may be so that all valid theorems can be reduced to a proof in a formal sentential calculus, I can absolutely assure you that almost NO mathematician writing proofs is "doing formal logic." Nor can we have any confidence at all (even taking into account the limitations of Godel and Russell in these models) that "doing formal logic" well could ever give us good results in the other fields. I'm not sure where I am going with this either. Perhaps something like this: while we can almost assuredly MODEL a computer program in some formal system, this is not the same as saying that programming is the same as working the formal system.

      What is then programming for you? Programming is nothing but utilizing some syntax and sematics of a formal system in a creative way, as is writing, as is art. In the same sense, mathematics is an art, requring a lot of creativity but when you have reached something that can be proved, you have something you can express in a formal system, and this is math.

      Every novel can be recoded in a mathematical fashion as well, but writing a novel is not math. Likewise, I think, programming.

      OK, now you seem to agree upon my point again, that any program can be expressed in lambda calculus. You can as well find a coding for a novel if you so want, but I never sad that programming is math. Programming is an art, utilizing a formal system, so is writing, so is math. The problem however, if you allow patents on programs, then you would as well allow patents on ideas of stories. I could patent the idea that the servant kill the victim for instance.

      Mind you, I am NOT asserting that math does not intensely inform the art or science of programming. Indeed, a hold the precise opposite position. My point is merely that the ability to show correspondence between entities in one arena and the other does not permit you to draw the conclusions you have drawn here, both in terms of the utility of math and the patent system.

      I can go further, I did express myself very brief, but I stick to my ar

    2. Re:Seems like a confused argument by werdna · · Score: 1

      Well, in case my message was confusing, your was even more.

      No doubt. The subject is interesting enough to me that I wish I had more time to lend my response.

      You answer like that kind of strange people that consider that patents on software could be motivated.

      Not sure what you are saying here. Since it seems more ad hominem than substantive, I'll move on.

      Lambda calculus is powerful enough to express any program, lambda calculus is math, as is logic. Math is nothing but an agreed convention about manipulating symbols.

      The thrust and parry of my argument was this: so what? The fact we can derive bijective correspondences between the artifacts of two disciplines does not mean that they are identical.

      This is not true, if any essential part of these programs were patented. Even though it is not trivial to find a minimal form, I claim that a minimal form exist.

      Well, I think I had it right. Under Rice's theorem, it is undecidable even to enumerate "these programs." How then, exactly, do you "find a minimal form" under any complexity measure without violating fundamentals of recursive function theory. I'll pull out my copy of Rogers and get back to you.

      If this form exist, and if this form would include e.g. a patented algorithm, you would not be able to express it.

      Sorry, but huh?

      Me: I seriously doubt you can produce in your lifetime a lambda expression that adequately models the input-output properties of a modern first-person shooter video game, which is certainly a computer program.

      You:You seem not to be in computer science at all. You seem to be a lawyer or something like that, who doesn't understand programming.


      First, you didn't answer the point on the merits, for obvious reasons. As to your ad hom remarks, which are non-responsive, why would it matter if I was a "lawyer or something like that, who doesn't understand programming?" Wouldn't the arguments be just as valid, or not, if spouted by my grade-school son or one of your halting-problem-immune and nearly sentient lambda expresssion generator oracles?

      To be sure, I am a lawyer or something like that. I also did my doctoral work in Computer Science at Cornell, was honored with the Charles Roberts award and induction to the Computer Gaming World Hall of Fame for my work as a programmer, and quite frankly couldn't give a shit what you thought of my pedigree, when you make bullshit claims about "how I seem" instead of answering the arguments on the merits.

      You mix up complexity with math.

      Sure, I did, but in the same sense you seem to be distinguishing theoretical and impractical models with what people actually do. This is precisely the distinction that was addressed by the Court in the relevant cases addressing the mathematical algorithm exception, but you don't seem to know that. Perhaps you are confusing math with the law?

      Why don't you go ahead, then, and give me the lambda expression corresponding to Doom, together with the model explaining how you will define a function describing a real-time animation responding to user input, and then we can talk about the merits of your analogy.

      This doesn't mean that the expression doesn't exist, and I also claim that it's quite easy to find such an expression, given the program.

      Sure it is. Since it is quite easy, please give me one for the Gimp, and explain how the lambda expression corresponds to what happens on my computer screen as I paint. Please prove the correspondence. Take a week. I'll look forward to seeing the results of your work.

      Me:The fact of the model does not mean that the human endeavor in one field is equivalent to the human endeavor in the other.

      You: This is exactly why computer programs should not be patentable. Computer programs live in a perfect world, were patents have nothing to do (but copyright is ok).
      But the fact of the matter is: mathem

    3. Re:Seems like a confused argument by aim2future · · Score: 1
      aim2future: If this form exist, and if this form would include e.g. a patented algorithm, you would not be able to express it.

      werdna: Sorry, but huh?

      aim2future: This is the essential, but you seem to avoid the question or refuse to understand it (as I claimed you to be, and you claimed you are "a lawyer". Lawyers are the ones that really want software patents because with this mess and anarchy software patents create, then lawyers surely make their living, but the rest just get a hell. Software developers don't want them, companies don't want them, and they are slowing down development! This is the reason why I reacted upon your writing. You sounded like a confused person who belive that you can patent software, but software is nothing but expressions of mathematics. With copyrights you can license a specific implementation or expression of an idea, but when you allow patent on it, then you actually patent the idea, the algorithm, the mathematical expression

      werdna: Sure it is. Since it is quite easy, please give me one for the Gimp, and explain how the lambda expression corresponds to what happens on my computer screen as I paint. Please prove the correspondence. Take a week. I'll look forward to seeing the results of your work.

      aim2future: If you knew something about computer science you wouldn't come with these stupid claims. I guess most of gimp is coded in C, haven't checked. It's fairly easy to compile C to scheme (my favourite language) and scheme is almost identical to lambda calculus, just replace side effect like set!, nconc! etc with functional expressions and you are done. I don't intend to do it, because I don't see the point. The important point is that any program can be expressed in lambda calculus, and lambda calcus is a mathematical form.

      werdna: We have agreement on one point. I agree that ideas are unpatentable, and this is expressly set forth in the Patent Act.

      OK, that is good, then we agree, and then we also agree that software is not patentable, because software patents actually patents the idea with a program, but not the actual implementation, which copyrights are for.

      Best regards /aim
  322. Math avoiders get swindled by blitz487 · · Score: 1

    Generally, people who practice math avoidance through school are the ones who are easilly taken to the cleaners when it comes time to finance their car or their house.

  323. Discipline split (sort of) along these lines by macgnome · · Score: 1

    There's a view among many that CS is splitting into something akin to mathematics and applied math, or perhaps physics and electrical engineering.

    The idea is that many schools are simply training CS students to be 'good employees' which really involves little math at all and lots more focus on classes that teach people how to write web applications or learn many languages or specific APIs. These tend to be schools that measure success through job placement, as these skills are what the market is looking for.

    Some people in the CS education community aren't exactly excited about this, and have launched something of a counter-reformation, described here: http://www.math-in-cs.org/.

  324. College for IT? Puh-lease! by Pat0101 · · Score: 1

    It is kind of a mystery to me why anyone would go to college for a carreer in IT when there are so many certifications available. Compare these two senarios: a. High Scool Graduate goes to work for a help desk. Gets a year of experience. Gets a MCSA, MCDST and a novel or a linux certificate. Gets a job as an assistant sys admin and puts in a couple of years there. He is a qualified to apply for a full sys admin job and he has some money in the bank. b. High School Graduate goes to college and gets a CS degree. He has $50,000 debt and no work experience. He is desperate for money and I don't think that they will be hired as a sys admin so ... he goes to work at a helpdesk. Now if you actually want to go into Management or Business administration of IT departments then yes you would need college but then you are not going into the IT field. Management is not a truly geek field of course.

    1. Re:College for IT? Puh-lease! by tomskillman · · Score: 1

      On the other hand, certifications do you no good in a place that does not utilize them. If you get a Cisco certification and go to work for a company that uses 3Com or Nortel equipment, you've wasted your money. Also, certifications have to be renewed every so many years - which costs you more money. If you go the college route, you can get an internship while you're in school to pay for part of your schooling. I was an intern for my current place of employment since the summer follwing my freshman year. This allowed to me to get out of college with about $18,000 in debit and have a job reserved for me upon graduation. Granted, not everyone could be so lucky, but if you get an internship somewhere, you may be better off going to college than getting a certification...pretty much everyone is expected to go to college these days anyway....

  325. Math and programming by pw1972 · · Score: 1

    My degree is computer science and engineering. The cs part has a lot of discrete mathematics and linear algebra, which IMO are very useful to programming. The engineering part took me up to differential equations in calculus. I can probably count on one hand the number of times Ive used the advanced calculus in my professional career. The positive thing about that, is that the engineering has opened up doors that normally would not have been there with just a CS degree. I landed a 2 year contract in a manufacturing plant designing algorithms for optimally shaping bottles. You'd be surprised at the amount of math that goes into shaping a beer bottle!

  326. Interesting take on importance of math in CS by call+-151 · · Score: 2, Informative

    Here is an Keith Devlin article "Do software engineers need mathematics 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.

    --
    It's psychosomatic. You need a lobotomy. I'll get a saw.
  327. All cs and all math make me go something someting. by trainedCodeMonkey · · Score: 1

    go crazy.... don't mind if i do!

  328. Google vs. the Others (Real Math vs. Crapola) by Salis · · Score: 2, Insightful

    Remember when Yahoo, Altavista, MSN, etc etc had their crappy search engines running? What did they base their search algorithm on? It was text/string batching mostly...heavily investing in lists and relevance factors. What does Google do differently?

    They use advanced mathematics to predict the likelihood of matching. What exactly do they do?

    Google represents the Web as a Markov chain, where each website is a node and each link increases the unidirectional transition probability of moving from the origin node to the destination node. You can find the 'limiting probability distribution' of a Markov chain relatively easily, even though Google has billions of nodes and trillions? of links.

    The limiting probability distribution gives you the relative probability that, web surfing through the links (ie. performing a random walk on the chain), you will eventually settle on a particular website. This is Google's original innovation and technology.

    Unfortunately, this type of mathematics is usually only taught in CS graduate school. It should be taught sooner, but it requires getting into a branch of mathematics called 'stochastic processes'.

    --
    Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    1. Re:Google vs. the Others (Real Math vs. Crapola) by norkakn · · Score: 1

      'stochastic processes'.

      why can't you just say 'random shit' instead?

      I know it is the real name, but who are you trying to impress?

    2. Re:Google vs. the Others (Real Math vs. Crapola) by Salis · · Score: 1

      Because they're different. I can explain:

      If you flip a coin, you have a 50% chance of heads or tails. That is 'random shit'. If you count the number of heads, let's say X heads, as you roll then that is a stochastic process. If you flip N times, the probability of having X = N/2 goes to one as N goes to infinity. So, while the process arises from 'random shit', the answer is NOT RANDOM.

      This happens in a lot of cases, including Monte Carlo integration (another stochastic process) and statistical thermodynamics.

      So go stfu if you don't understand the difference. Other people do.

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    3. Re:Google vs. the Others (Real Math vs. Crapola) by norkakn · · Score: 1

      Now now, just because your school can't get into the top ten, it's no reason to get snippy.

      Ask J. Random /.er what stochastic means and a large number of them will probably blink randomly and mutter something about microsoft. Sometimes the most correct words impede discussion and education, and I see no need to defend their use

    4. Re:Google vs. the Others (Real Math vs. Crapola) by Salis · · Score: 1

      Now now, just because your school can't get into the top ten, it's no reason to get snippy.

      Are you joking? My department is rated #1 in the country for the chemical engineering. (Ok, honestly, it's a tie between us, UC Berkeley, and MIT).

      And John Q. Random doesn't give a shit about Microsoft. You're thinking of Sumgion Slashdot. ;)

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
  329. If you can't stand the math, get out of CS. by Dr.+Mu · · Score: 5, Insightful
    If you haven't got an aptitude for and a love of mathematics, I would urge you stay out of computer science. You won't succeed. The same talents and interests that bear on math also come into play in CS. They're hopelessly intertwined. Math is the foundation for computing, and the more you take, the better.

    As a minimum, I would suggest:

    1. Algebra, Analytic Geometry, & Trigonometry. Know this stuff cold. After 30 years in computing, I still use it every day.
    2. Logic. Ditto.
    3. Calculus up to, but not necessarily including Differential Equations.
    Very helpful at times:
    1. Linear Algebra
    2. Probability & Statistics
    3. Numerical Analysis
    4. Automata Theory (offered in CS departments)
    And if you're really into it:
    1. Number Theory
    2. Topology & Graph Theory
    A good grounding in one of the "hard" sciences like Physics can also be useful. And if you've got an aptitude for music, indulge yourself! Remember, it's not just the content of these discplines that makes them valuable. Each one teaches you to think in different ways. And an agile, flexible mind will make you more valuable to your future employers.

    Go for an education, not just training!

    1. Re:If you can't stand the math, get out of CS. by wongaboo · · Score: 1

      I agree with the Dr. Mu's general sentiment: If you don't like math you will not like CS. However I think he probes deep enough. When I entered college I took many courses and found that the problems addressed by computers and philosophy most closely matched by natural interests and so I double majored. I am a hard worker and persuaded myself I could stick it through the many math courses required for my CS degree. I did stick it out but the experience left a bad taste in my mouth.

      I find logic and the interaction of the human and the technical interesting. I currently develop custom interfaces for a small private college's online education proprietary software. This I enjoy. I recently read a story (wired maybe?) about an MIT researcher who dropped out of three CS programs before he finally wound up in MIT's UI lab. He was lucky. I believe most UI's are extremely poorly designed, and nearly all EUA's are similar travesties. These things are central to the usability and usefulness of a piece of software but you cannot learn how to do them well in any CS department I'm aware of.

      I briefly considered MIS and took a class and sat in another and found it to be a joke, they were teaching kids how to do cool tricks with MS Access, give me a break.

      Take Slashdot for example, the UI is sublime, I never read trolls and I am consistently engaged by comments relevant to the topic and my experience. I have been on a lot of (boards, blogs, BBs what the hell is this?) and none even come close to the elegance of the moderating solution Slashdot uses. Creating a useful online forum is at least a 20 year old Computer Science problem, but it has nothing to do with math (ok adding up moderator points is arithmetic). Why is there no computer science department that teaches students how to come up with such elegant solutions? A world of mathematics and code for four years can produce a person who is unable to create an easy to understand interface. I know, I graduated with 100 such Computer Scientists.

      --
      cogito ergo oro
    2. Re:If you can't stand the math, get out of CS. by Isao · · Score: 2, Informative
      A great deal of this is often lumped under the name "Discrete Mathematics". An example can be found at the MIT OpenCourseware Site.

      And I second the education vs. training comment.

    3. Re:If you can't stand the math, get out of CS. by mrchaotica · · Score: 1

      At Georgia Tech, you can specialize in Usability for your Bachelors, and they have a Masters of Science in Human-Computer Interaction. Also, there is the Graphics, Visualization, and Usability research center. So, there are places where you can learn UI design, but they may be limited (for now) to places like MIT or GaTech (as opposed to lesser schools)

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    4. Re:If you can't stand the math, get out of CS. by ear1grey · · Score: 1

      Bingo on the graph theory. My gut feeling (read: logical extrapolation of probabilities) leaves me pretty certain that over the next 20 years it will become a core factor in understanding, designing and perceiving most application programs - driven in equal measure by increased use of the Resource Description Framework (RDF) which is core to semantic web markup, increased use of aggregated computer systems based on web services, and the eventual commoditization of Grid services which are still very much at the research stage.

      The combination of all of the above will result in the a norm where services can be perceived in the way (code) libraries are today, so designing, building, visualising and proving the completeness of a program becomes "just" an application of graph theory on a very large graph.

      The beauty of a graph is that a novice can begin to understand it very quickly, but to know it you need the math. So just as today, people will be able to create simple programs & scripts without requiring too much investment of time, but ultimately, systems architects, designers, programmers and administrators will find their jobs easier if they have the mathematical background to be able to communicate how their systems work.

  330. After Reading some of the post... by wtoconnor · · Score: 1

    After Reading some of these post I now understand why computer jobs are being shipped over seas to areas that value education and math skills.

    Why should you learn math? The very act of learning calculus, probably one of the great human acheivements, develops analytical skills necessary to solve a universe of problems. The 6 months you would spend learning it is nothing compared to the years of boredom you will encounter refactering you code for the umpteenth time:)

  331. CS isn't for me by Zarxrax · · Score: 0

    I dunno what it is, but I think this article has really helped me see the light. I am jsut now finishing up my junior year at NCSU, and I have gotten literaly NO WHERE. While I have done well in the programming classes, I have failed almost every math course I've taken at least once. My GPA is about a 2.0, and I haven't matriculated, and it looks like I won't ever be able to. I have registered for summer and fall classes, and was planning to give it "one more year" just to see how things go. But I just realised after reading this, theres no point in it for me. I should just get out NOW. I think I should either go take some CS courses at a community college, or try and figure out what courses I need to take to get into video editing/post-production. I do a lot of work with video as a hobby, so I would probably get some enjoyment out of a job doing that.

  332. I'm a Jr. at U of Minnesota w/ CS Major by Chulo · · Score: 1

    Hi, I just thought I'd briefly share my experience concerning Math and CS majors. Most CS/IST Majors here are Math minors, as the Engineering branch requires a minor, and it cannot be IST if you're a CS, which sux. Here, you're required to complete 2 levels of Calculus, just for the Associates Degree. Then for the Bachelors, they require Discrete Mathematics, which is VERY difficult. They should rename this class to "geniuses of the 20th and 19th century", because you essentially learn how to do everything the pioneers did. Also, when doing intensive sort, retrieve functions in programming, you have to take into account how many elements you're working with, and the efficiency/order of your algorithm. This is usually something like 2^n, 3^n, log n, n!, etc..Look up the definition of BigO or BigOh. Anyways, in a nutshell I'd say if you're going to do CS/IST, you'll more than likely be expected to become a Math Master/Genius. After going through most of the courses, I can easily say there's a good reason for making those classes required.

  333. Formal Methods by Anonymous Coward · · Score: 0

    http://shemesh.larc.nasa.gov/fm/fm-what.html

  334. Re:Actual Classes Taken by madcow_ucsb · · Score: 1

    Hmm, don't do much octal myself, but any self-respecting programmer oughta be able to do octal/hex/binary conversions in his (or her) sleep. And as a firmware guy, I would also have to say that decimal is for those who have to count on their fingers :)

    Back on topic, I don't do a terrible amount of math. Like I said, I do firmware to drive our particular chips (USB device controllers). The math is trivial. The algorithms themselves are pretty trivial. Now debugging the race conditions...

  335. I am a CS major by manduwok · · Score: 1

    You will take a lot of math. I am a third-year CS major (and yes, I'm a girl!), and so far I have taken...

    1. Trig
    2. Calc I/II
    3. Linear Algebra
    4. Discrete Structures
    5. Computer Architecture (which was a boolean logic/circuit theory class... yes, it was math)

    All of these fell under the MAT prefix in the school catalog.

    Basically, I am two classes away from a Math minor at this point. You probably will be, too!

  336. Inter-Library Loan can be your best friend by Tangurena · · Score: 1
    Why not look to see if there is a copy in your university library? If not, ask at the checkout desk where the interlibrary loan (ILL) office is. ILL is the way you can check out books from other libraries. If you do research, you may find this to be the best way to get hard-to-get items.

    My experience with borrowing books is that if I renew the book 3 times, I need to go buy it. At one time I was a grad student; and when I checked out a book, I got it for the whole semester. Renewing it twice meant I had it over a year.

    Another habit I learned to be somewhat useful was the adjacent shelf technique. Look up in the library catalog what books you are looking for, write down some locations and look at the nearby shelves. Too many times I would find books that weren't in the catalog, or were misfiled, had the wrong/mispelled search terms put in the catalog, or were indexed with words you had not thought of. Learn the indexing system your library uses, whether it is dewey or library of congress. If I found booboos, I tried to get them fixed, so the next guy (probably me) would not get near as lost as I had been. At FAU, sometimes I found books that had not been checked out in 10+ years because they had been misfiled.

    The last habit I learned to use in the university library systems was to walk all the aisles at least once per school year with a notebook. Write down the books that catch your eye, look interesting, might have something to do with your classes. Check them out or cross them off as you go back to them later. Best done during breaks or near the beginning of semesters before you get overwhelmed in work, or before gamesmen check out all relevant books for a class to prevent the other students in the class from doing better than themselves. It was impossible to do this when I was at Purdue, where they had 2.5 million books spread over 13(?) different libraries. FAU was more managable with around 1/20th that number of books.

  337. Less Math, More Logic by Baavgai · · Score: 1

    I'll preface this by saying I don't believe there is a fundamental correlation between math and most areas that computer science covers. Higher math is required for some theory and, ironically, mostly game programming.

    The computer itself is a poor mathematician. It's excellent at logic and uses this and a few million calculations a second to simulate math prowess.

    If you want a computer to solve even the simplest equation you'll often have to roll up your sleeves and force feed it Fermat. However, apply complex logic to a problem, with forked solution trees and heuristics, and it will dance through the xor mine field like a ballet dancer.

    When people ask me what programming a computer is most like I immediately liken it to doing proof in geometry. If you can get from point A to point B using nomenclature like "SAS", you're ready for programming.

    Calculus is only required because some people like it and math professors get lonely. For 3D coordinate systems you might need it ( though, less than matrix algebra ). However, a solid understanding of logic and diagnostic principals will benefit any programmer.

  338. Re:Car wars by comedian23 · · Score: 1

    My brother and I got the idea to have a big rig and up to two escort vehicles drive from one town to another and back( oddly enough the distance between the towns is the exact length of my dining room table). I get as many trikes and cycles as I can afford with the same money($130k), to try to destroy the cargo in the rig. So far we have had two 8 hours days playing, and still have about 8 more to go. We started with 14 vehicles, and about 10 are still moving. :-)

    My patented ramplate-wielding, gas powered reverse trikes are taking their toll, but his turreted anti-tank guns are vaporizing my cycles one at a time. And it's fun as hell!

  339. Linear Algebra and Calculus by BigBlockMopar · · Score: 4, Interesting

    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. 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.
    • 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
    --
    Fire and Meat. Yummy.
    1. Re:Linear Algebra and Calculus by BrainStain · · Score: 1
      Calculus means "small stones", as for counting.

      Doesn't "calculus" mean "small stone", as in holding up a small stone at arms length to measure a mountain? Hence the differential, something shrinkingly small, has a relative value when compared to something observed, and that value is more exact as the smallness increases since your arm's length stays the same... more poetic than counting stones at least.

    2. Re:Linear Algebra and Calculus by bahamutirc · · Score: 3, Insightful

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

      I wish that were true. I did all my homework for my math classes and really studied my ass off, and the best I could do in some of them was a C. I'm no math expert, but I guess it depends on where you went to school at and who your professors are/were.

      Statisitics: Ugh. Mostly just plug numbers into equations and know what they mean. Not difficult, just boring.

      Again, it depends on what you took. I had to take two high level statistics classes for my Systems Analysis degree, and I must say those were my favorite math classes by far. I called it "Applied Calculus". The first class covered probability, and the second class actually covered statistics. What I had thought about statistics before I took the class was more along the line of means and averages. Those topics were covered on the first page of the first chapter, then it took off. Really, I learned more about calc in that class than in my calc classes because suddenly calc became useful.

      If I were to ever go back to school and get a different degree, I would major in Statistics.

      Just my 2 cents worth.

    3. Re:Linear Algebra and Calculus by Anonymous Coward · · Score: 0

      Wow! Out here in Boise, we have to do all of our math homework to think about passing with a C, that includes getting 60% or more if right. A+ means you got As on the tests and As on the homework. I took 7 math courses throughout my CS schooling as well, finish in 10 days:). Math wasn't the most exciting part for sure. But it should be taken as early on as possible. I rarely applied much of the higher math directly in my CS courses, but I believe the brain sculpting you get from the math courses pays of huge when it comes down to the serious problem solving in CS.

    4. Re:Linear Algebra and Calculus by cagle_.25 · · Score: 1

      So ... are *you* Paul Falstad, or did you find the link to his site through other Google? (reason for question: he is an old college friend)

      Regards,

      Jeff Cagle

      --
      Human being (n.): A genetically human, genetically distinct, functioning organism.
    5. Re:Linear Algebra and Calculus by Anonymous Coward · · Score: 0

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

      Your car has a velocity, but the speedometer only tells you the magnitude, which is speed (hence the name). If they built in an arrow on your dashboard that always pointed forwards when in drive and backwards when in reverse, then you could say it told you the velocity.

    6. Re:Linear Algebra and Calculus by Derkec · · Score: 4, Informative

      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.

    7. Re:Linear Algebra and Calculus by JaxWeb · · Score: 1, Insightful

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

      I don't have a car, why should I learn how to change a tire?

      Why do you want to force me to learn something which is a total waste of my time?

      And, I suppose, other people would have similar ideas about calculus.

      Moral: Don't try and force your priorities upon others.

      --
      - Jax
    8. Re:Linear Algebra and Calculus by Slime-dogg · · Score: 1

      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.

      Just to nitpick, but velocity is the result of the integral of position with respect to time, not the derivitive. Here's the basic physics terms:

      • Acceleration : m/s^2
      • Velocity: Derivative of acceleration, m/s
      • Position/Displacement: Derivative of velocity, m

      You seem to be knowledgable, but don't ever forget the basics. ;-)

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    9. Re:Linear Algebra and Calculus by BigBlockMopar · · Score: 1

      So ... are *you* Paul Falstad,

      Nope, Google! Sorry.

      --
      Fire and Meat. Yummy.
    10. Re:Linear Algebra and Calculus by BigBlockMopar · · Score: 1

      Just to nitpick, but velocity is the result of the integral of position with respect to time, not the derivitive. Here's the basic physics terms:
      * Acceleration : m/s^2
      * Velocity: Derivative of acceleration, m/s
      * Position/Displacement: Derivative of velocity, m
      You seem to be knowledgable, but don't ever forget the basics. ;-)

      Best to refute this with an example. You've got it backwards, I don't. [grin]

      Position, s(t) = 3(x^2)+2x+1

      Velocity, v(t) = 3(2x)+2 = 6x+2

      Acceleration, a(t) = 6

      Jerk, j(t) = 0

      Jerk is the derivative (the rate of change) of acceleration. Acceleration is the derivative (rate of change) of velocity. Velocity is the derivative (rate of change) of position.

      Think about Newton's Quotient (First Principles) for a second.

      Still don't believe me? Check this out.

      --
      Fire and Meat. Yummy.
    11. Re:Linear Algebra and Calculus by DuckDodgers · · Score: 1

      In the US the vast majority of the population possesses a car at one point or another in their life. If you're an exception, I apologize for wasting your time but a basic auto mechanics class would be very useful for 90% of the population.

    12. Re:Linear Algebra and Calculus by Wolfier · · Score: 1

      While what you have described are mathematics, all of them fall into the subcategory called "calculations".

      The rest of mathematics is MUCH more useful than knowing the calculations. Theorem proving, understanding WHY you have to perform those calculations, and dive into the mind of those who actually invented the formulae from scratch, not just using them.

      We don't take seriously anyone who claims to be good at mathematics but do not know about reductio-ad-absurdum, induction, pigeonhole-type proof, etc.

    13. Re:Linear Algebra and Calculus by MurphyZero · · Score: 1

      Just to nitpick, but velocity is the result of the integral of position with respect to time, not the derivitive. Here's the basic physics terms:

      Acceleration : m/s^2

      Velocity: Derivative of acceleration, m/s

      Position/Displacement: Derivative of velocity, m

      You seem to be knowledgable, but don't ever forget the basics. ;-)

      Just to nitpick, but he was right and you have it bass ackwards.

      Velocity is the integral of acceleration and the derivative of position. Note that all three are vectors.

      You talk a good game, but you have forgotten the basics, if you ever learned them.

      --
      Our founding fathers removed the guys in charge. Be American. Vote incumbents out.
    14. Re:Linear Algebra and Calculus by slimak · · Score: 1

      Statisitics: Ugh. Mostly just plug numbers into equations and know what they mean. Not difficult, just boring.
      I am curious is by statistics you actually mean probability. A statistic can be almost anything whereas probability is actually something that is studied. If your course was actually on probability, then you obviously have never had to really use it for anything as I can assure you it is not simply plugging numbers into equations.

    15. Re:Linear Algebra and Calculus by Stealth+Potato · · Score: 1
      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+.

      When I started Calculus 1, my professor told the class that everyone has a level of 'lazy competence' - a certain point in their mathematical education to up to which they can get by without really doing the homework or hitting the books. When they hit that level, suddenly they have to stay on top of the material or risk failure. She told us that for most people, that level was the beginning of college-level math.

      ...In that entire year of Calculus, I did maybe 5% of the recommended homework (liberal estimate), and I got straight A's. :-)

    16. Re:Linear Algebra and Calculus by damien_kane · · Score: 1

      I did none of my homework in any math class, ever. Others in my class did 100%. I regularly received high 90's in my classes, the others who did all of their homework regularly nearly (or completely) failed the class.
      It is not a linear relationship by far, it really depends on the person and their ability to solve the problems presented given what you know (given absolutes and learned methods).
      By your difinitions of your classes, Calc I, Calc II, and half of Calc III (multivariable calc) were taught in my highschool as OAC (gr.13) Calculus. Linear Algebra and Stats were also taught.
      Fourier Series, Calc IV, and Num.Methods were taught in Calc II in the college I went to (after the first three were re-hashed in Calc I).

      Maybe thats why so many people failed, I don't know. I had taken most of it by age 16.

    17. Re:Linear Algebra and Calculus by notwrong · · Score: 1
      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.

      Dude, Quake isn't "another one of the 3D videogames" - it was the first true-3D first person shooter, and it surely rocked.

      Just a tiny point though - your surroundings only change if you're not camping.

    18. Re:Linear Algebra and Calculus by Stalus · · Score: 1

      You would be amazed by the amount of linear algebra that results from your camping.

    19. Re:Linear Algebra and Calculus by BigBlockMopar · · Score: 1

      Your car has a velocity, but the speedometer only tells you the magnitude, which is speed (hence the name). If they built in an arrow on your dashboard that always pointed forwards when in drive and backwards when in reverse, then you could say it told you the velocity.

      Yup! I avoided getting into that quite deliberately; most mathematically ill-equipped don't know there's a difference between speed and velocity.

      'Course, I had a winter beater once (1989 Dodge Colt, bought it for $200 and drove it three winters) which had forward and reverse arrows on the dashboard's transmission display. There was also a cheap spherical compass glued to the dashboard when I got it. I guess, with the direction arrows providing the +/-1 factor, speedometer providing scalar s, and the compass providing a unit direction vector u, a mathematically correct velocity could be described as 1s*u = s*u in forward and -1s*u = -s*u in reverse.

      There! That qualifies as a full velocity vector, entirely derived from displays which were in the car when I got it!

      --
      Fire and Meat. Yummy.
    20. Re:Linear Algebra and Calculus by BigBlockMopar · · Score: 1

      I don't have a car, why should I learn how to change a tire?
      Why do you want to force me to learn something which is a total waste of my time?
      And, I suppose, other people would have similar ideas about calculus.

      More likely, about Shakespeare. When was the last time you found Shakespeare to be useful?

      Learning how to change a tire would be a lot more useful for the vast majority of people. Beyond that, sooner or later, you will be in a car which blows a tire. And the the owner/driver might not know how to - or be physically incapable of - changing it.

      Furthermore, whether you're a cyclist or a pedestrian, you will be around cars if you're anywhere with an Internet connection. You need to know a little about how they work, so that you can understand how they fail. In particular how, for example, a blown tire is more likely to happen on the curb side because of broken glass, scrapes with curbs, etc. And how when a car blows a tire, the car tends to pull in that direction. How you might, therefore, as a cyclist or a pedestrian, want to know that when you hear the bang of a blowout that there's a fairly good chance the vehicle is going to veer in the direction of the sidewalk or bicycle lane. Where you are.

      But an appreciation of that might or might not be of use to you.

      --
      Fire and Meat. Yummy.
    21. Re:Linear Algebra and Calculus by BigBlockMopar · · Score: 1

      I did none of my homework in any math class, ever. Others in my class did 100%. I regularly received high 90's in my classes, the others who did all of their homework regularly nearly (or completely) failed the class.

      You're impressive!

      It is not a linear relationship by far, it really depends on the person and their ability to solve the problems presented given what you know (given absolutes and learned methods).

      Yeah. To a certain extent, it depends on your ability to learn by watching it being done - either in textbook examples or on the blackboard. Most people tend to learn by doing, though. I'm not saying that people like you don't exist - you certainly do - but you're not the majority.

      By your difinitions of your classes, Calc I, Calc II, and half of Calc III (multivariable calc) were taught in my highschool as OAC (gr.13) Calculus.

      I took OAC calculus, too.

      In OAC Calculus, we did about 80% of the stuff in 69.104 Engineering Calculus I. Calculus I went beyond, teaching more advanced integration techniques (integration by parts including what to do to integrate "tough" things like (e^2x)*sin(3x), improper integrals (where one or both of the bounds is infinity), more techniques for solving definite integrals like volumes of revolution, etc. We also touched on basic separable differential equations. Nothing beyond basic integration (polynomials, simple functions of e^x, ln(x) and trig) was in the OAC curriculum, though it was covered in BC and Alberta (instead of Linear Algebra).

      In Calculus II, half the course was differential equations of all sorts; the other half was sequences and series and all sorts of tests. We did nothing even remotely similar in high school.

      Calculus III - You did partial derivatives, double and triple integrals and calculus of parametric equations in MCAOA? I'm sorry, I don't believe you. What was your textbook called? I probably have it on the bookshelf in my living room; none of the textbooks I've seen for the OAC curriculum have *any* of that.

      Linear Algebra and Stats were also taught.

      Yeah, my OAC Linear Algebra was 80% of the course in university; the other 20% was eigenvalues and eigenvectors, determinants, matrix inverses, orthogonality. We had none of that in MAGOA. (Noting also that BC and AB students in my class hadn't taken any linear algebra at all, concentrating more on calculus.)

      Stats would have been the OAC Finite Math course. Didn't take it, wasn't an admissions prerequisite - but I would have, if I'd had the time.

      Fourier Series, Calc IV, and Num.Methods were taught in Calc II in the college I went to (after the first three were re-hashed in Calc I).

      Calculus IV? My Calculus IV and Numerical Methods were each a full semester; Fourier was one third of a semester. And we were moving pretty fast through all the course material. It's worth noting that the only people in my Calculus IV class were second year engineering students and 4th year honors math students. The math students were two years behind us in applied math, but they could blow us out of the water with theory and proofs!

      --
      Fire and Meat. Yummy.
    22. Re:Linear Algebra and Calculus by damien_kane · · Score: 1

      I'm sorry, I don't believe you. What was your textbook called?

      I don't remember what it was called, as it was about 8 years ago that I took calculus (i took it in gr.11, around 16y/o).
      The base textbook was a big orange book with (IIRC) either hexagons or octagons strewn about the cover.
      My teacher, a Mr. (Frank?) Jewlal, extended the curriculum himself and covered much of first year university. (from some re-bound book from the early 70s, our school had a huge fire in the early 90's that destroyed most of the covers of the books in the math & science departments).
      Our marks were not inclusive of the extended material, however he did teach it so that those who could grasp it could breeze through 1st year.
      He also taught us determinants, inverse matrices, and orthogonality in MAGOA.
      You are correct in the Stats is MFNOA, and I did poorly in that class (I think my final mark was around 80-82, as compared to a 92 in MCA and 96 in MAG). As for the CalcIV material, we did not do theories and proofs, just applied math (as I said, I went to college not university). Fourier series and transforms were about 30h of class (completely applied).

      The schools I went to, in case you're wondering, are MDHS (Mitchell District High School) and RCC College of Tech.

    23. Re:Linear Algebra and Calculus by JaxWeb · · Score: 1

      (heh, I'd like to know who moderated my original post down as Troll! Do they know what that even means?)

      I see your point, that for most people, it would be a helpful skill. But for me, it wouldn't, so making me do it would be pointless.

      But, I can see, you couldn't make it optional. People who will use cars will not bother learning it if they don't have to. I'm yet to think of a good way out (Maybe instead of PE or something?)

      Another thing is, using a car is a Bad Thing if you can help it, so encouraging it in school is a Bad Thing too, don't you think?

      --
      - Jax
    24. Re:Linear Algebra and Calculus by Anonymous Coward · · Score: 0

      There were others before that - doom and return to casle wolfenstein...

    25. Re:Linear Algebra and Calculus by notwrong · · Score: 1

      Doom and Castle Wolfenstein (along with Rise of the Triads and some versions of Marathon, among others) all preceded Quake, but they weren't true 3D in the sense of the environments and characters all being rendered on the fly. First Person Shooters before Quake used scaled sprites for the characters, weapon blasts etc, and the environments used scaled and mapped textures to various levels of sophistication. They were more 2.5D than 3D, although some of the ones that came out around the same time as Quake were starting to look pretty good (like Marathon Infinity or Duke Nukem 3D).

  340. You Don't Need No Stinking Math by thelizman · · Score: 2, Interesting

    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.

  341. Real Geeks love math...posers hate it. by gatkinso · · Score: 2, Insightful


    Let's face it - you are not a geek if you can't prove L'Hopital's Rule.

    --
    I am very small, utmostly microscopic.
  342. More Math than CS by AveryT · · Score: 2, Interesting

    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.

  343. Math not needed..... by cbdavis · · Score: 2, Interesting

    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!

    1. Re:Math not needed..... by gwhalin · · Score: 1

      Programmer is not a computer scientist. DB admin is not a computer scientist. Network engineer is not a computer scientist

      --
      Greg Whalin
      greg@whalin.com
  344. My University's program... by _Potter_PLNU_ · · Score: 1

    We needed two Semesters of Calculus I and II or one Semester of the extended Calculus I class. Then, one Semester of Discrete Math.

    Of the two, I see a more direct connection to Discrete Math with courses in CS, than Calculus. However, Calculus has cropped up in some of my books. Usually it has to do with optional, more advanced material that usually isn't covered anyways.

    I didn't do so hot in Calculus and wish I had the chance to go back and retake those classes to relearn the material.

    Of course that was for a BA in Computer Science, and now they are adding a BS degree which requires more Math electives.

    --
    "Hard work never killed anyone." -- Some Dead Guy
  345. Counter-Strike by Anonymous Coward · · Score: 0

    I got my CS degree from l33t U.

    pwned

  346. At the other end of the spectrum.... by devphil · · Score: 1


    One of my best friends at university was also a double major like yourself. And he really, really liked math. To him, there was no such thing as too much math. When he heard that I had signed up to do my Calculus III course (the last math required for CS majors, other than statistics), he asked who the professor was.

    I told him.

    "Oh," he said, his face going numb, "you don't need that much math."

    Turns out this professor was very good at teaching, and a really nice guy, but also strongly believed in getting to the theories that underlie the theories that underlie the more common aspects of everyday math. Where "common everyday math" meant things like "set theory".

    On our final exam, we had to derive Kepler's laws of planetary motion. From first principles.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    1. Re:At the other end of the spectrum.... by BizidyDizidy · · Score: 1

      What do you mean by first principals? Kepler's laws of motion are fairly simple to derive, particularly if you've studied, say, Hamiltonian or Langrangian mechanics.

      --
      The safest way to approach lava is to have another person with you and he goes first.
    2. Re:At the other end of the spectrum.... by ePhil_One · · Score: 1

      First Principles refers to the three or four core assumptions that make up a numerical system, which I can't recall exactly, but its basically stuff like A+B=B+A; AB=BA; everything else can and should be proved from just those few items. So while it might be easy to prove knowing theorom A, you must first prove A, which depends on B, which likewise must be proved, until at last you reach First prinicples. Its really sort of fascinating how much can be reduced to just a few simple assumptions, and how radically things can change when you change those assumptions. Then realise that this is what some folks used to do for fun 200 years ago, because there were no video games.

      --
      You are in a maze of twisted little posts, all alike.
  347. HUH? Trig for Brickout? by Anonymous Coward · · Score: 0

    Here folks is the perfect example of why today's programmers write bloat-code. You don't need trig to write a BreakOut game. Otherwise it would have been impossible to write BreakOut back in the 70's/80's, running on the 1 mhz 6502 or Z80 processors of the time.

    Game coding is all about the art of coming up with tricks and shortcuts that make things LOOK like they are complicated. If you think you need to calculate ball trajectories and line intersections for a game like Breakout you are so not cut out for game programming.

  348. Math and CS are like beer and hot wings by Anonymous Coward · · Score: 0

    Math and CS are like beer and hot wings (or spagetti and sauce). There is a reason why most univeristies teach mathematics with 'the computer science option' or have departments called 'mathematics and computer science'.
    Example:
    a = 0
    for x = 1 to 10000
    for y = 1 to x
    for z = 1 to y
    a = a + 1
    next z
    next y
    next x
    print a
    what is the value of a? Ask someone who hasn't taken CS and they won't have the math skills available to tell you (but page 11 of the 900 page math book I used for the first math course I took when getting my CS degree describes the problem (and math solution). People without the math background will want to try and program it. I answer: what would you do if I changed 10000 to 1234567? It isn't that hard to come up with real world situations that need this kind of code. Are you going to wait all day waiting for your pentium 500 to give you an answer? Do you have (any) idea how (in)efficient your code is? The answer for the first is c(10000+3-1,3)=c(10002,3)=166716670000
    the answer for the second is c(1234567,3)=3.13611288303E17
    I could go on (about say graph theory). Those who shun the math would say "what would you use that yukky theory for?" and I would answer: internet routing applications. The two are inseperable. Those who argue otherwise are low-end hacks.

  349. CIS Major comes clean (me) by GPLDAN · · Score: 1

    Guys - I am 36 years old and have made it as far as I can in IT without a real CS degree. I am the "senior architect" for networking and security at a Fortune 100 company. Pays pretty well - about $150k/yr. Alot of work and responsibility. I have a Cisco CCIE and was working on my SANS certification.

    I'm stopping to go back and get a M.S. in C.S. from a real university program. At this age, I get to sit in undergrad classes to make up for the fact that my bullshit CIS degree didn't have the proper mathematical foundation classes, like Linear Algebra and Calc IV. because it's a real program, and not some B.S. do-it-from-home program, I leave my wife and kids at home and drag my ass into the 7pm class 3 nights a week, setaed with guys who are nearly half my age. It's a bitch, frankly. Takes your ego down several notches.

    I could - maybe - have skated by on certs. I have a good cert to have. Nobody else at my company with my background is doing anything like that. But I want to understand databases, and network programming inside and out. My coding is limited to C, makefiles, shell scripting, and a bunch of Network Perl programming. Basically, junior grade O'Reilly School of Computing stuff. It's time to be a real professional.

    If your age still begins with a 2, be smart - get a real CS degree. Get through the entire Calc path & linear algebra. Get a tutor. Use online resources. In the late-80s when I was in school, I was taught math by TAs from China, nearly exclusively. Most of us couldn't understand them. We didn't complain, and we should have. I wish I was a thorn in my alma mater's side, but I was 18-21, I was a sheep. Don't be. Get tutoring.

    I should do a public service announcement. "Hi, my name is Dan, and I've been a fake IT employee for 15 years."...."Say hi to Dan, people..."

    1. Re:CIS Major comes clean (me) by AvantLegion · · Score: 1
      If your age still begins with a 2, be smart - get a real CS degree.

      Damn. I'm only 198.

    2. Re:CIS Major comes clean (me) by phuturephunk · · Score: 1

      Frankly dude, you have nothing to complain about. You're making 150K a year (more than most human beings, college educated or not, will see yearly in a lifetime), you're married and you've probably got a whole lotta respect for what you do.
      I'm one of those kids thats half your age, but I failed out of school and immediately went to work during the boom years. After sitting, and learning, in a call center (In Suburban Florida, no less...thats Florida USA! Whodathunkit..;) ) for a couple of years surrounded by ex IBM engineers, millitary guys and various assortments of geeks I managed to work my way up (after moving a 1000 miles north for better pay scales) to a very comfortable position with respect from my peers and superiors. I can honestly say I wouldn't be this far along had I taken a second shot at school and sunk more of my precious time studying theory rather than using practical application..and that brings me to my next point...I'm also not in debt up to my eyeballs, as many people who went to college are, but thats another conversation entirely.
      No offense dude, but your little jibe about being a 'fake' IT guy is quite frankly insulting to me and probably every other IT person thats out there who can 'become' the computer. You don't learn this shit in school. You don't learn it by reading books or listening to some PHD drone on about the particulars of database linking. You become it through immersion. The elitist attitude pushed by colleges around the country making it seem like their way is the only way is bunk. If you want to learn a database, learn it...there's no information out there that can be taught in a classroom that can't be found just lying around waiting to be read. Why waste the money and the time away from your kids? So you can get a couple more letters by your name?
      Try harder..

  350. Don't need it that much by mikeg22 · · Score: 2, Interesting

    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.

  351. Algebra and Trig in college? by Gannoc · · Score: 1


    I thought ./ was full of smart people? Were you learning long division your senior year of high school

    Not trying to troll, but in my school, 90% of the incoming students took advanced calc first semester freshmen year.

  352. Re:A Warning:: Math and Programming by zubernerd · · Score: 1

    Quoting the parent There are mathematicians that couldn't program their way out of a wet paper bag - but all good programmers seem to have some faculty with math.
    I've seen this first hand. I've tutored a math student in CS level 1 (programming in Java), and while I've seen her do (complex) integrals in her head, she had a difficult time writting some of the assigned programs. The best way I found to help her was to have her think of the program in a (more) mathematical way... that helped a little.

    --
    Accentuate the positive, don't waste your mod points on the negative.
  353. Lots of Math! by Shafe · · Score: 1

    At my school (Cornell), CS majors have to take a LOT of math, because CS is really an extension of mathematics. Expect to take Calc 1, 2, 3 (Vector calculus), Linear Algebra, and something along the lines of probability or number theory. Also don't forget Discrete Math, Algorithms, Scientific Computing, and Theory of Computing. Programming is useful for some math classes like scientific computing, but you really just need to understand math very well to do well in computer science, especially if you're in a theoretical school.

    Remember, computer science != programming. You don't pay however many thousands of dollars to learn how to become a programmer. You could pick up any number of books for under a few hundred dollars and be a good programmer in a few weeks. Computer science is about the fundamentals behind what you're doing.

  354. What I tell my students by blackcoot · · Score: 1

    I get this "when are we ever going to use this stuff" schpiel from my lab students on a regular basis (I'm the lab T.A. for sections of CS1 and CS2). My usual response goes along these lines:

    • Physics: Calculus and Physics grew up together -- physics often having the problems which drove calculus. Understanding physics (or at least where the problems came from) tends to give enormous insight into how to actually solve problems. Physics also helps teach the basic science underneath Computer Science... experimental method, etc. Chemistry doesn't have the same deep developmental link with Calculus, but it does encourage the scientific mind.
    • Calc 1: This is the foundation of understanding how badly you're going to get screwed when you start haggling over how you're going to pay for a car / house / etc. It's also the foundation of Calc 2 and 3.
    • Calc 2: There's a huge class of problems which simply don't have a closed form solution or whose closed form solution. Things like Riemann sums, Taylor / MacLaurin series, etc. are unbelievably useful and crop up in the most unexpected places.
    • Calc 3: Now you can generalize all those things so that they work for functions of more than one variable. You start to appreciate why linear algebra is useful. This is where 90%+ of the math you need to do game physics and a large chunk of computer graphics originates.
    • Differential Equations: for most people, why we care about eigenvectors and eigenvalues. ECEs and EEs tend to care a lot more about this class. I liked it because I felt like my calculus was complete.
    • Discrete Math 1 + 2: (most people don't have to take Discrete 2) a large smorgasbord of things close to a computer scientists' heart: the combinatorics to figure out just how big a problem can be, the graph theory to understand data structures (not to mention how routing gets done on the internet), and a bunch of notation.
    • Fundamentals of Math: the math department's "how to do a proof" class. For us, this meant constructing the reals and rigorously proving all the things we usually take for granted about the reals, then extending this to rigorously develop a chunk of differential calculus.
    • Linear Algebra: I ended up taking two classes in this. The lower level class is pretty much a matrix cookbook / number crunching class. This was good enough for most computer graphics. I ended up enjoying the higher level class a lot because the proofs were really satisfying.
    • Numerical Analsysis: I can't stress how much I hated this class, but it was probably one of the most useful math classes I've taken. We ended up coding almost all the approximation techniques discussed in previous classes, and analysed their error bounds, with specific attention to where things break. We also touched on a lot of minimization techniques used in AI.
    1. Re:What I tell my students by blackcoot · · Score: 1

      D'oh, I forgot:

      • Probability and Statistics: I can't begin to put into words how useful this stuff is. As it happens, I use this stuff almost daily (doing probabalistic inference in computer vision). It also shows up in a lot of network classes (total reliability of the network, expected queue sizes and deviance, expected throughput and deviance, etc.) If you've understood this well, you'll laugh when you hear statistics like 40% of employee absenteeism happens on Mondays and Fridays while other people panick. You'll also not just to question the numbers you're given, but more importantly how to question them.
  355. I don't see anything on discrete mathematics!` by Zabu · · Score: 1

    What about Discrete Math, and Mathmatical Proof? These are two very important skill sets for a computer scientist. If you want to code or script, little amounts of math are necessary. If you want to prove the efficiency of an algorithm, Hold on to your hat

    --
    It's all good.
  356. funny by ph43thon · · Score: 1

    you're a funny troll.

  357. hmmmmm..... by ilikellamas · · Score: 1

    All those maths that they just listed my high school offers. I have taken all of them already and am about to graduate.... The standards aren't that high......

  358. Mostly discrete maths, linear algebra and logic by akuzi · · Score: 1

    Discrete maths:
    - Simple set theory, boolean logic etc. Computers are binary discrete systems, so this is a must.
    - Graph theory, very useful for search problems and a lot in AI.
    - Information and coding theory. Used a lot in systems, eg. for checksums, compression and cryptology.
    - Group theory. Has some advanced applications in cryptology.

    Linear algebra:
    - 3d computer graphics is basically all linear algebra. Vectors, Matrixes, quarterions etc.
    - Also very useful in signals processing.

    Calculus:
    - Used a lot in signals processing algorithms, including in neural nets, and hardware engineering/electronics

    Formal logic:
    - Used a lot in formal systems verification, and compiler theory

  359. Church's Thesis, Church's Thesis, Church's Thesis by 1iar_parad0x · · Score: 1

    While I've heard logicians complain it is the most overused theory in mathematics, I argue Church's Thesis is philosophically the most fundamental. Mathematics is the method of reason applied real world problems. Mathematics is also nothing more than a collection of definitions and step-by-step processes. (I've also recently realized encoding mechanisms are important too.)

    Church's Thesis simply stated (perhaps overly so), says that no universal computer is better than another. Thus, math and the computer program are the same. Am I worried, about computer programs eventually replacing mathematicians? No. Canonically logic defines all of mathematics. If I create a computer program that solves math problems in a deterministic fashion, then the computer program becomes mathematics. If I create a computer program that solves math problems in a probabilistic fashion, I will have sufficiently crippled it, so that it will actually solve problem in a rather human-like fashion. In other words, it will not be programmer doing math that is solving problems, it will be some rough statistical approximation of our probabilistic human brains working 'in silico'. (Actually, probability is kind of the black box of human reason. If I state that something has a 1 out of 2 chance of happening [i.e. an event can occur or not occur], then we say it is random. If I say that event A (as opposed to event B) has a 6 out of 10 chance of occurring, we say that event A is more likely, event though we have no real reason of 'knowing' why this event occurs.)

    I say all of this to make a point, math and computer science (in the abstract sense) is virtually the same thing. The computer program is becoming math. Logicians are starting to verify (and even prove [see some of Chaitin's work]) quite a bit of their mathematics in code. It has now become en vogue to look at problems in terms of initial configurations and the simple sets of instructions that define how the configurations behave [see Wolfram's work]. Thus, the line between mathematics and computer science are further blurring. Most of the really fascinating work being done in applying K-complexity (algorithmic information theory) to real world problems are being done by computer scientists [quantum information theorists also are doing quite a bit of interesting work as well].

    On a personal note, I've returned to school to finish a degree in Math. Previously when I attended school, I studied Computer Science. I decided to take some extra math classes for the heck of it. As a result, the advanced math courses (abstract algebra, non-Euclidean geometry, etc) served as electives in my CS degree. As a whole, I've found most CS departments don't view math classes in this way. The intersection of the two curriculums is very minimal. For instance, if I take a course from the Math department in 'recursive function theory', most CS departments [at least the one's I looked at] wouldn't take the course as an elective. If I take a 'Theory of Computation' as an elective in the CS department, most Math departments won't treat it as an elective either. I'm working my way through school so I couldn't afford to go anywhere but a state school. However, I'm a bit disgusted at this distancing of CS from Math. Most CS departments are becoming part of the School of Engineering so they can be ABET certified. While this seems good, CS is often viewed at 'baby' engineering. "If you can't hack EE, go to the CS department." Even worse most EEs shun pure math (a few brilliant counterexamples exist [Shannon, Zadeh, McCarthy, etc]). With this said, find me an EE who has studied pure math, and I will find you a brilliant computer scientist.

    --
    What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
  360. CS at the University of Missouri by tomskillman · · Score: 1

    I'm a 2002 graduate of the CS program at the University of Missouri - St. Louis. Math accounted for around 32 hours of my 120 needed for graduation. CS classes were around 33 hours. As you can see, it was pretty much a balance of Math and CS. Over and above all that, I had to take other classes such as Technical Writing, and some various other "related areas." The last few math classes were killers. We had to go up to Calc III and then on to Applied Statistics, Differential Equations, Linear Algebra, and a higher level math class (I chose Numerical Analysis). CS classes were pretty straightforward. They start off with C, then to C++. Electives were available in Java, Visual Basic, and a class that basically surveys many programming languages. The last CS classes were a bit more challenging. In the Program Translation Techniques class, we built a compiler using Lex and Yacc. In the Operating Systems class, we learned about the functions of the OS and used the OSP simulator to write various portions of the Operating System. The degree is very math-intensive, but if you can make it though, it's well worth it. Those that can't make it though the math can go for MIS instead.

  361. It's not *what* you learn... by gilmet · · Score: 2, Insightful

    it's *how* you learn that matters. First of all, 90% of people commenting here really don't understand math at all. I'm going to sound like a math snob, but trigonometry, geometry, and (American) Algebra are not math at all. As much as you might think they are math, they are in fact just tools. They are tools like your favorite programming languages and operating systems - you can use them accmoplish certain tasks. "Real" math is concerned with a way of thinking - knowing how to see structure in things where structure is not obvious, then translating that structure into symbols through which others can understand it (whoa... I didn't intend it, but doesn't that description sound a lot like what computer scientists do?). Maybe you think I'm full of crap, but "real" math is often better done by people who have backgrounds in History and Literature. You say, "yeah right," but I guarantee you that actual mathematicians are much more verbally (symbolically) inclined than regular tech-savvy people. I've really diverged from the argument here of whether or not math is useful for a computer scientist... but here's what I have to say about that. The best computer scientists will be interested in and excel at "real" mathematics - computer science is just a subset of information science which is math. No, I'm not a mathematician.

    --

    Every time you read this, I am going against my principles.
    1. Re:It's not *what* you learn... by gilmet · · Score: 1

      bah... sorry, I forgot to add my line breaks...

      --

      Every time you read this, I am going against my principles.
  362. in a nut shell by Anonymous Coward · · Score: 0

    AI = calculus, discreet math and Linear Algebra,statistics Systems and networking= calculus , discreet math, statistics graphics = calculus,linear algebra (lots of fun with matricies!) or you can be a naieve code monkey and just do application leve stuff in which case your job probably doesnt exist anymore ...

  363. Maths and Computing? Really? by ilikejam · · Score: 1

    Good article.
    I went through three years of maths courses at University (linear, calculus, number theory / cryptography...) and it was all very much relevant tomy computing degree.
    I would go so far as to say that anyone who hasn't got a good grounding in maths couldn't possibly be effective in a computing degree. Or anything else computer related - try calculating subnet masks without being able to convery decimal to other number systems.
    The University I went to (Glasgow) is, I believe, now demanding that *all* Comp. Sci. entrants have a decent grade in maths from their secondary (high) school.
    About time too.

    --
    C-x C-s C-x k
  364. Math in Highschool by FreshnFurter · · Score: 1

    I completely disagree with the author in this article in not trying to take calculus in highschool. It is the only time that you will get the chance to learn to think in an abstract way at a time when it is good for anyone to do that. Waiting until College is too late. Even if you get a lower score, it is not bad for you to see things more than once. Sometimes it is even better for your self esteem. It is clear that higher math should be part of a computer science (not programming) course. I hope that most people selecting CS don't expect to do web-design. Actually there are nice tools out there to do that and is probably something a person skilled in design (art!) is better apt at doing. Part of your calculus course should include at least precursors to Fourier Transform (image processing anyone?), Wavelet Transforms (compression), Linear Algebra (Optimization algorithms, machine vision!), analytical and projective geometry (3D visualization). It is not bad for anyone, having to use these things to be exposed early on. Choose the path of most resistance (hardest subjects). Stepping down is easier than stepping up

  365. What about computer engeneering? by Anonymous Coward · · Score: 0

    Everyone is talking about CS what about engeneering..? Is it any good??

    1. Re:What about computer engeneering? by tomskillman · · Score: 1

      I had the same question when I was looking into what degree I wanted. As it was explained to me, CS is more on the software side, where Computer Engineering is more the hardware side. It was actually suggested to me to get my degree in Electrical Engineering if I was interested in computer hardware. This would allow me to specialize in computer hardware, but still have other options if all fell through with computers. After a few classes, I realized my real dream was more on the software side. My sophomore year, I switched to CS with no unneeded classes. Lucky for me, the Chemistry and Physics classes I had taken counted as my "related areas" requirement and I didn't have to waste those credits.

  366. Favorite College Math Class by Giggles+Of+Doom · · Score: 1

    I think my favorite was my "Computational theory" class where the correct answer was impossible to get. You could get mighty close (think of the little tale where a father has two men stand on the opposite side of the room from his daughter, tells them that each time they move they may cross half the distance remaining between them an his daughter...) and that was good enough. Still, it was always frustrating to figure out if you were indeed close enough or not.

    --
    "A coward dies a thousand deaths, the brave but one."
  367. CS Mechanic by N8F8 · · Score: 0

    Does a mechanic need calculus? Probably not. The vast majority of computer engineers don't either. The math requirements are a holdover from the early days of computing.

    --
    "God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
  368. Math, or Logic? by Anonymous Coward · · Score: 0

    Assuming a competent high school education, for your average CS job, you could replace a collegiate Math curriculum with a Logic one and probably not see a difference in the end result.

    (An enterprising person lacking the money for a college class but still wanting to pursue computer science could probably, assuming the high school education again, get by by checking out a few Copi, and then Quine books from his/her local library.)

  369. to clarify -- original was unclear by 74nova · · Score: 1

    the whole of what i said sums up to be that people who are both are better. maybe i didnt make that clear enough. in general, math people arent as good as programmers at programming and programmers arent as good as math people at math. IN GENERAL. if you are good at both, you do not fall into the category of people im talking about. my point was that its a matter of specialties. yes, you have to know math if youre a programmer. yes, you (apparently) have to know programming if youre in math. if you are both, you are probably a superior employee. if you dont, you should at least know some of the other to facilitate cooperation on projects. the more you know about both, the better.

    --
    use your turn signal! you people act like it's divulging information to the enemy
  370. Wolfram Research by KalvinB · · Score: 1

    Prior to my current project there wasn't much math in any of the projects I was doing. Unless you're doing low level graphics, advanced math isn't really needed. Vectors, normals and what not where about the most advanced math I was doing. And you can learn that stuff anywhere. It's just a matter of knowing what you're looking for and being good at research.

    Now I'm doing statistics and put to use Linear Algebra before my class got to the same point; least squares. I've also implemented Euler-Mclaurin and converted quadpak over to C# to be able to to integration and summations. The net result is that I'm doing more advanced math than I've covered in college. I'm constantly at Wolfram and other sites or digging through Schaums Outlines looking up equations. And I use Mathematica to check my answers. The only reason I'm doing all this math is because it's a math program I'm working on.

    Do you need advanced math? Depends on what you're doing. If you want to make games or apps there's not necessarily a lot of math you need. Do you need a college degree to learn math? Not if you know how to teach yourself. Which you should be able to do. People who can't teach themselves will inevitably fail at computer programming at some point since it's a constantly changing field.

    I've become so fed up with the computer science program at Arizona State that I've just switched majors to secondary education to teach math (and possibly computer science) to high schoolers. I've taught myself pretty much everything I know so I might as well put that ability into a career instead of wasting money to not be taught by bad teachers and crappy books.

    You can either spend tens of thousands of dollars to be taught or spend a few thousand on books and teach yourself. And you can't avoid teaching yourself.

    Ben

    1. Re:Wolfram Research by Garridan · · Score: 1

      As a web developer, I found myself having to learn a bit about the math behind mortgage calculations. Now that I'm back in school, I just discovered that I was using differential calculus! Fortunately, I didn't have to do any of the math myself; I was able to find the appropriate equations in other code, and occasionally math sites. (terribly little finance info on math sites, oddly enough)

  371. Programming and/or Math != Productive Work by IPFreely · · Score: 1
    Very much so.

    Programming is more like a fundamental skill than an end goal. You need to be able to read and write to get along in most environments. But reading and writing in itself is not an end goal. Thus it is with programming. Being able to program is like being able to write in a different context, environment or language. All by itself, it doesn't accomlish anything.

    Math is similar. Math in itself does not accomplish too much. When it is applied to other topics, like science, engineering, economics, business, or whatever, then it becomes useful.

    I'd say that you need to decide what major area that you would like to work with: Science, engneering (and computer science falls in here), economics, business, or whatever. Then choose the type of math and type of programming that suits those goals. Don't try to think first in terms of programming and math and then go into a field of work.

    --
    There is nothing so silly as other peoples traditions, and nothing so sacred as our own.
  372. Arise Heretics and Know Thy God by Anonymous Coward · · Score: 0

    Traditions enslave your minds. Seducing you, compelling you to bow before the Scarecrows and Cowardly Lions of education. Selling water by the river as if it were snake oil to a mesmerizing tower of flying monkeys.

    Before you very eyes this moment, there is a solution!
    Lets dust off the dry bones and give them new life. ... or in other words, open source universities would be cool. open source college books. open video lectures, open interactive training, and certifications centers. Turn the real estate into day care centers and gladiator encampments.

    If we don't do it the Indians will!!!

  373. Speaking of Departmental Battles... by PedanticSpellingTrol · · Score: 1

    Here at the University of South Carolina, the College of Liberal Arts and the college of Science and Mathematics are being merged into a single entity, with only one dean. We're expecting the universe to spontaneously collapse any day now.

  374. Watch out! Your boss was not wrong! by Balinares · · Score: 1

    > Him: This number must be absolutely accurate, no rounding is allowed.

    Assuming no irrational numbers, this is actually completely possible, using fixed point datatypes. You answered your boss like a coder, thinking in terms of float and double. I don't think this was what he was expecting of you in this precise case.

    Technically your boss was not wrong, but he was certainly misunderstanding the issues at hand.

    An engineer might have answered, "The tools we have to compute floating point numbers use the standard binary approximations that CPUs come with. They allow for very good precision usually, over 10 digits after the point. To do without any rounding at all, we will need to either find and buy custom dedicated tools, or write our own. By when do you want the cost estimate of this approach?"

    That's what bosses -- the good ones, anyway -- expect. It comes with their job. :)

    --

    -- B.
    This sig does in fact not have the property it claims not to have.
    1. Re:Watch out! Your boss was not wrong! by Anonymous Coward · · Score: 1, Informative

      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.

  375. It helps by xaoslaad · · Score: 1

    Like everyone else is telling you, the math helps.

    I hated it; absolutely hated it. The first time I took Calculus I passed with a 61.

    I ended up taking it again and got it right the second time around with a solid B, went down a bit to a C in Calc II, and brought it back up in Linear Algebra with nearly an A.

    I HATE math; HATE it. But you need to know these things. I would take Calc I and II again someday just so I could peg it even better than the second (!) time around.

    No one ever said it is easy. No one ever said you're gonna like doing it. No one said you are going to use every last piece of it when you get done with the classes. But I'll tell you; once in awhile something pops up, and you're gonna wish you knew a little Linear Algebra....

  376. OT-Question by Anonymous Coward · · Score: 0

    I'm an assistant professor in a math department.

    I'm heading back to school for a BS in CS. I have my AA. I had College Algebra before for my AA and Statistics. I have to take Calc 1, 2 and 3 to get my BS. I never had calc before, and many of my friends tell me I should take a precalc class before jumping into calc 1. I have to admit, it's been 5 years since I graduted college, so my algebra is even a bit rusty. Should I take pre-calc or something else first even if it doesn't count twards my degree?

    1. Re:OT-Question by Anonymous Coward · · Score: 0

      I would take pre-calc considering its been awhile. I recommended it to my friend from high school as well. He took it but blew it off and is regretting it now in calculus. I even made an effort to find out what he was doing and how his classes were going ... he would always stumble over what he was covering and say "oh its easy though." Too bad his grades didn't reflect it. Oh well enough of my rant. Good luck.

      Cheers.

  377. patent algorithms by Anonymous Coward · · Score: 0

    Programs should be copyrightable, but algorithms shouldn't be patentable. An algorithm in computer science is an algorithm in mathematics.

    I should patent long division.

  378. Read beyond the question. by Anonymous Coward · · Score: 0

    The question may literally convey a concern for whether the math is useful, but it rings in harmony with every other student I ever dealt with who asked the same question: he doesn't _want_ to take the math.

    A college will make you take a shitload of general requirements. How useful is Music Appreciation 101 to a Computer Scientist? Not very. But it is 1) part of how you pay your dues - as an employer, I want diverse applicants. Geeks who sit in their office and can't carry on intelligent conversations outside of the work at hand make for intellectually stagnant corporate environments. Also 2) it's how you show that you can apply yourself when you're tasked with something you may not really want to be doing. It's something else I want to see in a potential candidate.

    The question clearly reveals that this individual doesn't want to have to take the math. How many people have we all seen like this? He's lazy, he wants to take the shortcut, he wants the quick reward. The fact is that this guy wouldn't survive 5 years of a technical education and I won't be hiring him when he bails with an Associate's degree in Making a Windows Box Look Like it Can Outperform Unix.

  379. Re:Certain types of programming . . . by dumpster_dave · · Score: 1

    True . . . especially that 10%

    I had to give one of our interns a 20 minute explanation of Set Theory et alia the other day to explain why doing a query to display a certain cross-section of data can take (literally) longer than the current age of the universe (if by join) or about 6 seconds (in-line sub queries).

    One could probably figure that out from a Data Structures class [or wherever you happen to learn your "Big O()" notation] to derive the result of x*n as opposed to x^n! in computation . . . .

    However, unless you are truly limiting yourself to that niche, I'd consider Vector Calc to be very important [necessitating Diff Calc, Integ Calc, Series Calc]. Not sure Linear Algebra is really that useful any more--all the libraries are written [unless you're doing compiler work]. Outside of academia [writing simulators/solvers for upper-tier physics projects].

    To be honest, though. I don't thing one should be able to receive a college degree without having completed a full year of calculus anyway.

    But if you want to be able to work in more than a few niche markets, you'd better have V-Calc, DE, LA, Stat down pat.

  380. Math and Programming by pngwen · · Score: 1

    Ah, Mathematics, the basis of programming itself!

    This might sound a bit odd, but in a way, it is true. The kind of disciplined, structured thinking that goes into mathematics should go into a program. You can write a program without the kinds of process that you use in mathematics, but the end result is never as good as a disciplined structured approach.

    Using mathematics skills, it is possible to prove the functionality of a design before the first line of code is ever written. You can reduce the complexity of the logic in a program. You can minimize a program's code to contain ONLY what it needs in order to operate.

    Mathematics provides you with the foundation to do that. While you may not be doing a lot of integrals or differentials every day, you can certainly use the same approaches to tackling those problems in any programming task.

    Classes in mathematics that are especially helpful would be 3-4 semesters of calculus, 2 of differntial equations, 1 of critical logic and 1 philosophy course in logic and critical thinking.

    Try it, I think you will be amazed at how much of a better programmer you can become once your mind is trained to break the complex down into the simple and solve it!

    --
    I am the penguin that codes in the night.
  381. how about some hardware too by Preferred+Customer · · Score: 1

    A grasp of mathematics is no doubt essential in order to become a competent programmer. As well, methinks, an ideal programmer would also be a circuit slob. Just as important, I'd say.

  382. Add statistics to the list. by willy_me · · Score: 1

    and you have what every CompSci major should know.

    1. Re:Add statistics to the list. by Anonymous Coward · · Score: 0

      I'd replace number theory with statistics, actually. In CS, number theory is much less broadly useful than statistics.

  383. ACM issue dedicated to subject by Amigan · · Score: 2, Interesting
    The September issue of Communications of the ACM 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"

    --
    "Software is the difference between hardware and reality"
    1. Re:ACM issue dedicated to subject by Anonymous Coward · · Score: 0

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

      I have a Masters in CS. I could not agree more.

      Programming is a small part of CS.

  384. Looking for training by coldtone · · Score: 1

    My math skills are week, (I tried doing some 3d stuff but it made me run crying back to windows apps). I would love to learn more, but I don't know where to begin.

    Assuming I know how to add, subtract, multiply, and divide (But nothing else) what subjects would I need to learn, and in what order? (I'm guessing that Calculus isn't first)

  385. Set theory is still needed for RDBMS coding by msobkow · · Score: 2, Insightful

    Mathematics is involved in most aspects of computing, from the complex calculations of modelling and engineering systems (which includes video game models, movement skeletons, and physics models) to the set theory that drives RDBMS coding.

    You don't need a math degree to program, but you do need an understanding of set theory, linear algebra, O(n) algorithmic efficiency, and boolean logic transforms.

    At very least, you need to have an understanding of O(n) algorithmic efficiency to know when to use a particluar solution for a problem. Just because a hackjob from a coder works doesn't mean it's going to scale to solve the full problem set in production.

    Without those basics, you aren't programming, you're just bodging code and probably causing more long-term issues and expense than your salary is worth.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:Set theory is still needed for RDBMS coding by Anonymous Coward · · Score: 0

      I am interested in learning more about this formally. I'm working on getting into a CS program, but can you recommend any web resources?

  386. Math for computer scientists by tim1724 · · Score: 3, Informative
    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.
    --
    -- Tim Buchheim
    1. Re:Math for computer scientists by Anonymous Coward · · Score: 0

      "I don't think they're particularly useful to most people in CS."

      Understanding the tools used for modeling in the sciences is useful when "CS" isn't an end in itself, but rather, a tool to be used in the advancement of some other science.

      What value will a computer programmer add to a physics lab, if he has no clue about the stuff being computed?

    2. Re:Math for computer scientists by tim1724 · · Score: 1
      What value will a computer programmer add to a physics lab, if he has no clue about the stuff being computed?

      "computer science" != "programming"

      If one is going to be a programmer, then he needs to understand at least the basics of the discipline for which he is coding (whether that is physics or accounting or whatever).

      But I wasn't talking about programming .. I was talking about computer science.

      --
      -- Tim Buchheim
    3. Re:Math for computer scientists by scottcha · · Score: 1
      Tim's list is good. If you're going to be writing games or plotting data or doing graphics, you also need:
      • geometry
      • trig
      • matrix algebra
      Graph theory has some suprising applications to the Internet, as Jon Kleinberg of Cornell has pointed out. I've written an article about how graphs and matrices can be used to wring some interesting information out of a search engine.
  387. Math and computer science here too by Mindjiver · · Score: 1

    I'm planning to gradute with a "magister"(*) in computer science and a bachelor in mathematics.
    This is from a swedish university so some things are not the same as for you americans. :)

    Every autumn there is a new bunch of cs-students that either hate mathematics or at least think it's worthless or can't figure out what it has to do with computers. They usually don't believe you when you tell them that cs is more or less mathematics. There are the odd ones that actually know what they are getting them self into, but most don't.

    There was even a guy in my class the first year that asked the professor "when we were going to be using Photoshop".
    Needless to say almost a lot of those who don't like mathematics drop out after one or maximum two years.
    We were about 90 the first year, maybe 50 the second and now in the third year I think we are about 25.

    One fault my university does is that they try to ease the new students in to CS by not having any really hard courses in the first year. The only slightly challenging CS-course the first year is "algorithms and datastructures". Well there used to be two math courses that since then has been merged into one since they were to "hard".

    The univeristy should start the program really tough so the people that won't make it anyway drop out as soon as possible.

    Anyway, the problem this creates is that students are fooled into thinking they can pass three (bachelor) or four years (magister) of computer science when they in fact can't.

    Enough ranting now.. back to mathematics.

    All courses here are 5 points (not sure how that translates into the american system but it's 7,5 ETCS points I think)

    math courses :
    ---------------
    Calculus I (derivates, antiderivates, single variable)
    Calculus II (two variables)
    Numerical analysis
    Statistics and probability
    Discrete Mathematics I ( elementry discrete math)
    Discrete Mathematics II (graphy theory, permutations)
    Linear Algebra I (matricies, vectors)
    Linear Algebra II (linear transformations)
    Abstract Algebra (groups, rings etc)
    Logic
    Operations analysis

    There are also the mixed math/cs courses :

    Automata theory (PDA, turing machines)
    Complexity analysis I
    Complexity analysis II

    CS-courses that I feel has been the best so for are operating systems and the compiler course and of course automata theory. Nothing is more enlighting that making a turing machine on paper.

    I say embrace your inner geek and get knee-deep in maths. It will surely impress the nurses. :D

    (*) This is a swedish degree roughly equivalent with a masters.

    --
    I know not what course others may take; but as for me, give me liberty or give me death!
  388. building models by fab13n · · Score: 1
    Programming is about building an abstract model of real life stuff.

    Maths is about building abstract models, and ensuring them some properties through formal proofs.

    Therefore if your way of thinking is not mathematically oriented, you are likely to design false algorithms as soon as you will be asked more than building GUI with m$-visual-whatever.

    And being exposed to various kind of mathematics is the least unefficient way we know to give one a more mathematically way of thinking.

    If you are affraid by maths, chances are that you will be affraid by designing quality software.

  389. Math? by cephalon_tsurpher · · Score: 0

    I think that for whatever reason, math gets a bad rep. It's routinely passed off by college students as simply "busy work: required for a degree, but I think that any sort of algebra, calculus, or even simple arithmetic at its base form can be helpful to anyone.

    Math represents logic at it's purest form. In most situations, you cannot argue math. It is a constant, and an absolute. A+B = C.

    Math is not simply "used" by those who learn it in school when they want to perform long division. It's ingrained in the minds of people who practice, and understand it, and it's used in every imaginable instance.

    I'm only a college student at the time, and don't have much on-the-job experience, so I'll stay out of the programming talk. I think that math is important for everyone who ever wants to use or understand any sort of absolute logic, or even objective logic, for that matter.

    In that respect, I think that math is important to lawyers, programmers, ditch-diggers, aerospace engineers, and the aforementioned people flipping burgers ad McDonalds.

    1. Re:Math? by narcc · · Score: 2
      I think that math is important to lawyers, programmers, ditch-diggers, aerospace engineers, and the aforementioned people flipping burgers ad McDonalds.
      You mean the programmers right?
  390. I FORGET EVERYTHING!! by bagjuice · · Score: 1

    Being a Junior with a CS major and a math minor, I can't help but feel I am the only one forgetting pretty much everything a year ago except for the concepts and the bare basics. I believe college is to learn how to learn. Any math intensive field one might fall in, you WILL need to reference and most likely relearn whatever skills you will need. Perhaps I just have some serious memory loss for wtever reason but I just can't see myself taking wtever math intensive job without having to relearn something I forgot in college.

  391. Requirements at some places go beyond that. by Slime-dogg · · Score: 1

    Crypto is an optional thing, but where I went to school, Math through DiffEq was required. We didn't get a minor, though we had enough credits in Math to do so, because the school didn't want to appear "easy."

    Anyway, we had way more math through the CS department than just plain old Calc + Multi Variant Calculus. We had logic! And when we were done with that, we had machines! Grammars, Automata theory, and last but not least, Algorithms. Those are all math courses, but the majority of Math majors didn't take those (unless they had a special interest). I'm sure that the Math department offered something similar, but not in the context and language of computer science.

    Anyway, if you get through school and have no problem writing the same program in a functional language and a procedural language, you'll be on your way. The functional languages are really hard to grasp for those hardcore procedural guys, but they are important, and not just for AI. If you are experienced with the lambda calculus, it shows up in the way that you code. Not only does the amount of work that you do decrease (lines of code go way down), you also find yourself thinking in several branches towards a solution to the problem.

    A CS degree from a good reputation school should be invaluable to businesses. If you have a grad from one, then it's more than likely that you'll get good quality inventive stuff out of them, even if they suck for the first couple of months (fresh out of college people are like that.)

    --
    You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    1. Re:Requirements at some places go beyond that. by ari_j · · Score: 2, Insightful

      My alma mater is kind of notorious for being very theoretical in CS, but lately has succumbed to the pressure to be more practical. The curriculum requires Formal Languages and Automata, a 400-level CS course. Discrete Math from the math department covered most of the logic, and if you didn't learn it there you learned it in the required EE 201: Digital Electronics and its lab. Data Structures and Algorithms is another required course, and depending on the professor you either learn it right or you don't. I knew it already, so my professor didn't hurt me, but the guy they had teaching it my last year in school used about a 1200-page textbook, which is a good thing. :) You also have to take Datacomm, which requires you to know all about NRZ, Manchester, et al. right up through how TCP works and has evolved.

      Another required course is Programming Languages, which didn't go into enough depth but still required you to write functional programs (in Lisp), logical programs (in Prolog), and concurrent programs (in your choice of languages; I used C++ to save time).

      Will you use most of these skills daily in a programming job? Not consciously, but they pervade your thoughts and you write better-informed code as a result.

    2. Re:Requirements at some places go beyond that. by Damn_Canuck · · Score: 1

      What the parent DIDN'T tell you is that he never showed up to most of his classes, and when he did he majored in sleeping. Just ask my shoulder. He fell asleep on it in automata a few times. And not at the back of the room.

      Seriously, though, the classes at our alma mater were quite good, when taken with the right professor. With the math requirements for computer science there, all it would take is one more math class (calculus 3) to give any comp sci student a minor in mathematics. I know quite a few, though, who achieved the double major in math and computer science without too many complications (Diff-Eq is required in that case, as are certain other high-level classes).

      --
      Given that God is infinite, and the Universe is also infinite, would you like some toast?
    3. Re:Requirements at some places go beyond that. by ari_j · · Score: 1

      He's right...I was diff-eq, two semesters of linear/abstract algebra, and an elective shy of a math major by the time I left. I should've gone that 7th semester, after all - I wouldn't be so sleep deprived now, that way. :D

  392. Go Ahead ... Avoid Math by fupeg · · Score: 1
    I love CS guys who don't know any math. Why? Because I eat their lunch and take their jobs. Well actually that was a few years ago. Now I'm the guy they have to come to get a job. When I interview them, I test their math skills. If it is apparent that they are lacking, I show them the door. Yes, I am what all CS degree holders fear the most, I am a programmer (well my business cards say architect now...) with a degree in math. So go ahead and take as little math as possible and still get your CS degree. Here's what I took in college (click here for descriptions):
    • Ma 2 ab. Probability, Statistics, and Differential Equations. What happened to calculus and all that? I took it in high school...
    • Ma 5 abc. Introduction to Abstract Algebra. You want to really understand the essence of object oriented design?
    • Ma/CS 6 abc. Introduction to Discrete Mathematics.
    • Ma 7. Number Theory for Beginners
    • Ma 108 abc. Classical Analysis.
    • Ma 109 abc. Introduction to Geometry and Topology.
    • Ma 112 ab. Statistics.
    • Ma 116 abc. Mathematical Logic and Axiomatic Set Theory.
    • Ma/CS 117 abc. Computability Theory
    • Ma 121 abc. Combinatorial Analysis.
    • Ma 160 abc. Number Theory.
    1. Re:Go Ahead ... Avoid Math by the+eric+conspiracy · · Score: 1

      love CS guys who don't know any math.

      Same here, although I specialize in eating the lunch of math majors. When I was in school I majored in Chemical Engineering, but took a lot of math courses on the side because I had a real talent for it, and thought it was a nice diversion from much harder stuff like Organic Chemistry. By the time I got my PhD I had more than enough math courses to qualify for a MS in math. Since I was generally doing the math for fun, I was normally the top student in any math course I took. Another ChE student had done a similar thing 4-5 years before, so the math guys were getting used to it. Towards the end of my education the math professors were telling me that they thought my solutions to the assignments were more elegant than their own. Several tried to recruit me into being their grad student.

      Now that I'm doing programming it floors me when the CS guys jaws drop because I can do relatively simple integrals or other calculations in my head. Most of the CS people coming out of school these days can't multiply 4 times 5 without a calculator. LOL.

  393. There are two types of math by TastyWords · · Score: 1

    "Real" Math and "Pure" Math



    Real math is the stuff you can find a use for - engineering, space shuttles, differential equations, calculus, etc.

    Pure math is the stuff which doesn't seem to have applicability - non-Euclidean geometry, Galois, and Group theory, etc.

    You'll find more people than not take "real" math and the pure math people feel like the real is a matter of plugging parameters into an equation and getting something back. You'd be surprised how many "real" folks believe they are pure until it comes to doing something imaginative.

  394. The unreasonable uselessness of Mathematics by Organic+orange · · Score: 1

    I have an undergraduate math degree. I also went to Berkeley for grad school, accepted to Math department, passed the Math graduate prelim exam, and took every graduate Theoretical Computer Science class, getting A minuses and As and one A+. I have co-authored in top conferences four articles that were either theory or at least half theory. Three of these papers contained new algorithms that I had done at least half the work in inventing. I have now been a professional programmer for several years, so I am qualified to speak from both perspectives of being educated in both theory and practice.

    As measured by ability to produce results in reality, this math/theory stuff is rarely useful and certainly not so in comparison to practice with the reality of the machine. There is something about computer programming that people who have written code for years know that people who took math classes do not know.

    The math *may* help, but very rarely; consider the *opportunity* cost: one year spent coding is going to help you much more than one year spent studying math. I *tried* this; this is not just an idea I have. Consider the author of the article; he's a math teacher! Don't take advice from programming from math teachers, take it from programmers!

    Mathematicians like to talk about the "unreasonable usefulness of Mathematics". Is that why mathematicians tend to make such poor programmers? What usefulness? When did it help you when your girlfriend was angry? Did it help you debug your Makefile? Can you bench 200 lbs since you took Calculus? Given how much we invest in it and how little of my life it helps, I talk about the unreasonable uselessness of Mathematics.

    Unfortunately in English we only have one word for "know", but on other languages there are two words, one for knowing intellectually, such as "savoir" in French, and one for knowing a person intimately, such as "connaitre" in French. People who have written code, especially people who started when they were 12 or so, know intimately, connaitre, software in a way that far exceeds people who took a bunch of theory and only know intellectually, savoir, theorems and algorithms.

    My friends who wrote code for years and didn't specialize in theory can pick up enough of the theory they need when they very occasionally need it from, say, Cormen, Leiserson, and Rivest (the white book). Keep a copy of that on your desk and skip the Calculus and all the other stuff. You can learn it if you need to.

    Therefore, do not get seduced by the Modernist lie that Mathematics is the highest, greatest, bestest thing. It is not; it is just another thing, and beyond arithmetic and high-school algebra, not often a terribly useful one at that. Modernism is an attempt of Mind to make a tyranny over Body; while Mind has its place, this is too one-sided and becomes painful for Body. As the Buddhists say, "Mind and Body are two, Mind and Body are one" and "Dark is a word for merging upper and lower; Light is a word for distinguishing pure and defiled. Right in Light there is Darkness, but don't confront it as Darkness; Right in Darkness there is Light, but don't see it as Light". You need both Dark and Light.

    Larry Wall expresses this pain of Modernism very well in this article on Perl calling it "The Hammer of Modernism": http://www.wall.org/~larry/pm.html : "The funny thing is, Modernism itself was a kind of hammer, and it made everything look like something to be hammered. . . . In fact, at many different levels, Modernism brought us various kinds of dysfunction."

    Math wants to tell you that the world is "just" some "details", some constants plugged into the Real Thing, the Equations and Theorems! [said gazing up at the sky with lots of resounding major chords playing in the background], that the Real Thing is ideas which are above the lowly mud of reality.

    However, those who deal with reality, scientists, engineers, carpenters, gardeners, moms, etc. soon find out that the world is not dumb and lifele

  395. Math: not for programming, but for the PROGRAMS by patbob · · Score: 1
    Some math is useful for programming directly, logic, algebra, etc. However, the higher math isn't really needed to write the program, but to solve the problem you're writing a program for. So, while you might not use the math for a while, depending on what you get into over your career, you may find that a lot more of it applies toward your understanding of the problems you are asked to make the computer solve. That makes you capable of writing (and getting right) programs that someone with less math knowledge can't handle.

    That said, one of the more useful courses I took in college was the numerical analysis, wherein we studied things like how to figure out the computational magnitude of an algorithm and how to reduce error progagation through an equation or algorithm. If such a course isn't on your school's list of required courses, put it on your own personal one. I've lost count of the times I've used knowledge from that course, and even of the smaller number of times I've had to teach the basics to a coworker so they could understand why it was important to write things "my way".

    --
    Welcome to the net of 1000 lies. Upgrades are scheduled soon that should bring us to the 10,000 lies mark.
  396. Keep your grain of salt at the ready. by Anonymous Coward · · Score: 0

    He writes this regarding multivariate calculus:

    "If you are going to program any sort of modern video game, you will likely be using this sort of math for calculations."

    I've been programming "modern" video games for ten years (although the modern ones from nine years ago don't seem so modern today), the vast majority of which has been spent in the most difficult, mathematically intense specialization therein: real-time 3D graphics. I have employed multivariate calculus exactly zero times.

    Multivariate calculus is quite useful for computing volumes, densities, areas of continuous surfaces, and the like. In video games, however,we have little use for any of those, and when we do need them, there is no calculus involved because all "physical" or rendered objects are either simple bounding volumes (boxes, spheres) or piecewise-linear boundary representations (which is a fancy way of saying triangle meshes) for which there are simple formulas to use.

    I'm not discouraging anyone from taking calculus. On the contrary, I whole-heartedly encourage it, but don't expect to make much direct use of the knowledge. On at least two occasions, I have seen enthusiastic young programmers try to employ calculus to solve problems, and do so wrongly. It's a natural tendency to tackle an existing problem with a method of problem-solving with which you are comfortable, but more often than not, calculus isn't the right tool for the job.

    Example: This is back in the old, ancient days of about 6-7 years ago, before we had $499 graphics cards to render our triangles for us, so we had to do it the hard way. That meant rasterizing the damned things ourselves (and clipping--yuck!). Texture mapping was the tall order of the day. The easiest way to texture a triangle on the screen was to linearly interpolate the texture coordinates in 2d on the screen, and lookup the texture at every pixel (at least logically, this is how it was done, but in practice it was all done incrementally with gradients and so forth). However, this was not correct, because texture coordinates do not vary linearly on the screen--the perspective projection means there has to be a division by "z" (depth) somewhere. So this young colleague (who was actually older than me) set out to make a perspective-correct texture mapper, and being fresh out of school he naturally chose calculus as his tool. Unfortunately, he overlooked the most basic observation in the formulation of all his fancy integrals--that "z" is not linear in screen space, for the same reason texture coordinates aren't--and his solution was all wrong. It *looked* right (who could argue with all those integrals?), but it was dead wrong. All calculus did was obfuscate the problem.

    A discipline that is immediately useful in modern 3d video game programming, however, is that part of physics known as "mechanics"--rigid bodies, velocities, torques, and the like. This is knowledge you'll use on a daily basis whether working on physics code or not, as it will give you a solid grasp on vectors, coordinate frames/transformations, and the like which are essential to most areas of 3d video game programming, including (especially!) graphics. You need a solid grasp on these concepts (and it may take a while--after ten years, new insights are still a regular occurence for me).

  397. Excellent Commentary by ninjadroid · · Score: 1

    I must say, I am truly impressed with the well developed arguments the Computer Scientists of slashdot have given for the superiority of their methodology vis-a-vis that of the mere code monkey. Why, with empirical support such as "IMHO," "Just my $0.02," and "In my experience," I'd say it is obvious beyond a shadow of a doubt that a mere code monkey cannot hold a candle to a true blue Computer Scientist.

    It goes without saying that the ability to architect a program of several hundreds of thousands of lines of complexity, a feat which is really no more difficult than the simplest of soldering tasks, is of infinitesimal value compared to the ability to prove an algorithm correct. And we all know that Knuth was really just kidding when he said that "Premature optimization is the root of all evil." What he really meant was that we should hoist high upon our shoulders and cheer onwards those gallant few who devote themselves to making that 5% of a program's code, wherein 95% its execution takes place, run faster; the natural corollary being that the mere code monkeys who design, implement, and debug the other 95% are to be fed gruel and enroll in indentured servitude to their sheepskin bearing overlords.

    Throughout the course of history, every great leap in the progress of humanity has, without fail, been initiated by those who embraced the world created for them, and followed the One True Path to enlightement that the intelligentsia (whose motives and methods are obviously pure and beyond question) have laid out for them. That's why you never hear about relatively mediocre students revolutionizing the world of physics while serving as mere clerk monkeys in a patent office. That's why the company that almost single handedly revolutionized the gaming industry was founded by wise and studied sheepskin bearing patrons of the mighty Computer Science. That's why the most popular operating system of our modern age was created under the leadership of one with years of rigorous education and edification. Mere code monkeys amount to little more than a festering pile of monkey feces in this world!

    Further, this is why the most popular language in academics is Java. Computer Scientists will settle for nothing more than the fastest language, with bare-metal access beyond compare, when writing their incredible and world definining algorithms and data structures.

  398. Yes and no by Brandybuck · · Score: 1

    When I was in university (UCSD), two years of calculus were required for computer science degrees. Since I was as CS minor I didn't have to do this. That was a good thing because I never was able to wrap my head around integrals.

    Now it's twelve years later and I'm a software engineer. I work for a major ultrasound company. For what I do I have never needed any math more complicated than algebra. But that's because I'm a systems programmer. However, I have several coworkers who routinely use higher math. They have to deal with acoustics and waveforms and signal processing. Matlab is more important to them than G++.

    So it depends on what you're programming. For most drivers, systems software, databases, and applications, you won't need much math. But for some stuff it's essential. You don't know what you're going to be doing in twelve years, so take the math now while you can.

    --
    Don't blame me, I didn't vote for either of them!
  399. examples of math by slothman32 · · Score: 1

    I heard many opposing viewpoints. I like both math and computers. I still don't know though why math is needed in programming. I want examples of people doing different things and needing math to solve it. Tell me how being able to differentiate y=x^3+x^2 will help me make a program to enter prices of foobars and sum them up quarterly. I don't understand it.

    --
    Why don't you guys have friends or journals?
    1. Re:examples of math by Anonymous Coward · · Score: 0

      Don't understand math? You must have an abby normal brain.

  400. This article was comforting to me by MysticalMatt517 · · Score: 1

    I'm currently a Computer Programming student at a local community college. I'm about ready to graduate and I am looking to continue my education at another college. I've done very well (I have a 3.95 GPA) but I am ready to move on to other challenges. I only went to Community College because it was handed to me free (awesome scholarship) but now I'm glad I did it. It gave me enough basic programming skills that I understand why more advanced theory is needed.

    The amount of math needed for a CS degree has scared me for a long time. I never took calculus in High School and have been worried that it would hurt me ever since. I am however, very good at algebra and geometry was very easy for me. Looking at this encourages me to move forward.

    Now if only I could find a way to pay for it all. (My parents have promised zero support...)

  401. not a troll but an opinion by swordsaintzero · · Score: 3, Insightful

    I worked freelance for hotels.com and some other big name firms. I am a highschool dropout. The CS grads I worked with were good, but not great. Other than one ex army CS grad I found the inability in my peers to aproach a problem from a new angle to be across the board. Something this new generation seems to be forgetting is that once upoun a time someone that knew ass from a $ prompt and didn't go to school got more credit than ninnies who excel at theory but cant code to save there own life. If you learn deep magic on your own without having it spoon fed to you then in my experience you are someone who really knows what they are doing. Often excelling at real world problem solving above and beyond hothouse flower programmers. Thats the difference between a person that can write a few cotton candy language database connections and someone that writes drivers on the bare metal. You either LUST after computers they consume your life. If you dont live sleep and breathe them for a few years then you can't achieve truly wizardlly status. You cant impart love with a university course. As to math being important to programming, if you cant see that a universe based purely on numbers requires you to be able to manipulate them in order to be really good at what you do, then you have no business in a cs course at all. I went from programming for a living to building harleys and hotrods / programming for fun but I spend just as much time in front of the keyboard now as I did then. A real geek just cant give it up. Sorry for any spelling errors etc. for some reason this thread irritated me and I just had to spout off.

    --
    Panel F, Relay #70
  402. Your bias is showing by jabber01 · · Score: 1

    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.

    Excuse me, but Java is just a language. As is C, as is Perl, as is Lisp. As is English. You can express and develop theory in any language. You can write grand poetry as well as rank obscenity, in any language.

    I agree with your point 100%, but Java has nothing to do with it.

    --

    The REAL jabber has the user id: 13196
    What you do today will cost you a day of your life

  403. Maths and OOP by Anonymous Coward · · Score: 0

    'Being a mathematician won't make the switch go off that allows you to expertly use object oriented programming'

    Utter bullshit. Mathematics is all about building abstractions ontop of abstractions, about proving and tidying away the details so that higher-level maths can be done on higher-level concepts. The analogies with OOP are many and should be obvious to anyone who's done any serious University-level maths.

    A simple example would be looking at algebraic structures as classes inheriting from eachother.

    Hilbert space extends vector space and Metric space
    Metric space extends topological space
    Vector space extends Module
    Module extends Ring
    Field extends Integral domain
    Integral domain extends commutative ring with unity
    Comm. ring with unity extends ring
    ring extends group
    group extends semi-group

    etc etc. And that's an over-simplification of the way these concepts relate to eachother in a very very 'object-oriented' way. Do some category theory

  404. Waterloo CS degree is a B.Math by Anonymous Coward · · Score: 0

    Thought I'd mention that the University of Waterloo Computer Science department is part of the Faculty of Mathematics. Hence, my CS degree is a Bachelor of Mathematics. I always found the math far more useful than say, biology, when related to CS.

  405. Doesn't matter by cubicledrone · · Score: 1

    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?

    Employers and society no longer value higher education, so it really makes no difference what math courses one takes. Any subject not understood by the HR drone reading the resume will make no difference in that candidate's "qualificiations."

    --
    Business isn't willing to pay for products, innovation and careers, so we get brands, mortgage commercials and layoffs.
  406. Computer Science != Programming by acaro · · Score: 1

    Everyone seems to be discussing if/when math skills are useful for programming. Since when is programming equivalent to computer science?? Programming is a very useful (maybe even necessary except for theorists) skill for computer scientists, but it is NOT the only thing computer scientists do. If it were, then any hacker (in the classical sense, not the malicious sense) could be called a computer scientist. In my mind, reducing computer science to programming is the same as calling any IT guy who patches/installs/upgrades software a computer scientist. If you REALLY cannot understand what else there could be to computer science other than programming, then I would hesitate to call you a computer scientist.

  407. CS != programing != coding by denigod · · Score: 1

    now that we have established that, where do we find the employers who are intelligent to realize what they need? because they all seem to think that they need coders.

  408. Not quite right. by Geekwad · · Score: 1

    I'm actually a Math/CS major at U of I and the schedule they posted isn't really representative of what I've been doing. Namely, there is not nearly that much science.

    In fact, I got into the Math/CS program because I didn't want to take any more Chemistry and Physics. The closest thing you have to take to either of these is a Natural Science requirement which is generally a blow-off course.

    Here's this year's (Most of the course numbers are bumped up by a hundred for next year) Math/CS curriculum:

    http://cs.uiuc.edu/education/undergrad/req_mcs.h tm l

    --

    - http://pakman.sytes.net/
  409. Certain types of jobs... by BrianMarshall · · Score: 4, Interesting
    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.

    --
    "When the going gets weird, the weird turn pro" -- HST
    1. Re:Certain types of jobs... by Anonymous Coward · · Score: 0

      I have to disagree. I am a mathematician, but my day job involves writing some pretty complicated SQL. I have next to no formal training in CS, but the normalization and simplifications are trivial when viewed from the eyes of an experienced mathematician.

    2. Re:Certain types of jobs... by Anonymous Coward · · Score: 0

      Set theory is within the realm of math, and if you want to be damn good at really understanding SQL and databases, you had best know your sets.
      I think it benefits you to perform all aspects of your job as a scientist, regardless of what you are using, and applying that science can blur into a bit of art and craft. That takes passion, dedication, determination. Things that no matter the college, you have to take upon yourself to learn and implement!

    3. Re:Certain types of jobs... by BrianMarshall · · Score: 1

      The normalization and simplifications are trivial if you have a talent for looking at the world from the point of view of SQL. It's the talent that's important; you just happen to (also) use yours for mathematics.

      --
      "When the going gets weird, the weird turn pro" -- HST
    4. Re:Certain types of jobs... by BrianMarshall · · Score: 2, Insightful
      Looking at a part of the the world and expressing it in software is a craft. There may be science involved, either in the problem being addressed or in the way the software expresses it or in the way you evaluate the software. But the act of programming, "The Art of Programming", is a craft.

      To be a good developer requires mastery of Junior High math.

      You know about set theory (as did Dr. Codd), and you use it when you think about SQL. I don't know about set theory but I have a talent for looking at the world in the right way.

      I agree that passion, dedication, [and] determination in relation to a scientific view of the world is required. But I had that when I was ten; it certainly does not take university level math to achieve that.

      --
      "When the going gets weird, the weird turn pro" -- HST
  410. CS Reading by Anonymous Coward · · Score: 0

    If you think math is not need for a CS degree, I will challenge to read and understand the following

    The Art of Computer Programming, Volumes 1-3 Boxed Set
    by Donald E. Knuth

    An Introduction to the Analysis of Algorithms
    by Robert Sedgewick

    An Introduction to Formal Languages and Automata
    by Peter Linz

    Introduction to the Theory of Computation
    by Michael Sipser

    The Computer Science stuff

    kcw,MSCS

  411. Disagree with Calculus Advice by frostgiant · · Score: 2, Insightful

    "A college calculus teacher will be used to working with struggling students because for many of them, that is the toughest class they will ever have to take. But high school calculus teachers will be more used to working with the top students in the school. If you aren't especially gifted in math, you may find that you don't get what you need from these teachers."

    If you are not especially gifted in math, why not take calculus in high school anyway and then retake it in college?

  412. My experience by Dizzutch · · Score: 1

    As a current CS Major (3rd year). We're required to take 2 semesters of Calculus, and a Discrete Mathematics course (Boolean Algebra, Algorithms, Big O notation, Logic etc.), in order to complete the CS major. Most students however are suggested to minor in math which ads two semesters of calculus, up to multi-variate, an upper level math course, and linear algebra. Most CS students, however; end up taking Linear Algebra in order to take graphics and robotics classes. I myself think that doing CS at my school without the math minor is not worth it. The math is important, and it gives you a step up on your peers when looking for jobs, and applying to graduate school. This is just my input on the matter.

  413. writing boring code by butane_bob2003 · · Score: 1

    boring, stupid IT code often does not require much math, although it comes up occasionally. I have run into a few instances where I actually had to think for a minute or two about an equation or solve a problem mathematically. This mostly occured in graphics and statistics (graphing, etc) code. But then, I have been writing mostly boring Java high performance server type stuff (parallel programming, J2ee, network stuff) and complex java clients in swing and Java2D. More useful in this area is good OO design and knowledge of design patterns, along with a good dose of experience. I would say this is the more mundane, common side of computer 'science'. Real science comes into play in Natural Language Processing (NLP), robotics, artificial intelligence and not suprisingly games and graphics. Graphics can be an extremely interesting and wide-reaching field, good math skills are definately required there. AI is getting much more prominent as we develop new techniques and find more applications for it. To make a long answer short, Yes, concentrate on math as much as you can handle, unless you want to write boring IT code for ever and ever (you don't). I have a feeling that IT coders are soon to become the burger flippers of the developed world. I'd like to do something more interesting, but I'm not too strong in the math department.

    --


    TallGreen CMS hosting
  414. reasoning by gnuLNX · · Score: 1

    Programming and mathematical reasoning are one and the same. If you are good at math you have a good shot at being a good programmer. Yes you can be a good programmer without being good at math,but I would argue that you are a closet mathematician.

    Math is nothing more than algorithms...programming is all about algorithms.

    --
    what?
  415. CS: The Slacker Course by LoveTheIRS · · Score: 2, Insightful

    From what this article suggests for a schedule. It really is stupid. It looks like you waste your time until Junior Year, and then you still waste most of your time. No wonder India programmers are eating American programmer's lunches, Calculus I & II,? Excuse me those are really basic courses. There is a lot more math out there. Also, the course outline that was suggested lacked three other major genre's of classes that any idiot should see is neccessary for a Computer Programming Job.
    1) Algorithims: Lecture and Labs, Any idiot can pick up a programming book and learn if-then, switch, and then a couple of coding libraries. That stuff is stupid simple, like I learned that stuff by myself. What needs to be learned is Algorithims and their applications. State-Machine being the most simple of code organization and algorithims. If you don't come out of College being a walking library of effective algorithims, you just wasted four years. The real programming is in how you tackle problems with different code organizations and algorithims. I am going to venture to say is that the reason behind the failure of so many computer game companies attempting to build a game engine is those guys have no idea how to apply algorithims, much more get a bunch of the neccessary algorithims in games to work together. Algorithims should be taught from second semester freshman year in lectures and labs. You just cannot be an effective programmer unless you know that stuff.
    2) Memory Management- With the advent of garbage collectors Memory Management is less worried about. However, If you aren't going to program Java or C# you are going to need to program your own memory management. Again, an knowledge of algorithims would be nice, especially in this sub-topic. A programmer needs to create a logical and well thought out way of managing memory in every piece of non-C#/Java code they write. Memory Management is essential to Embedded and EEPROM programming because they can't afford the overhead of garbage collection. AS a CS you don't want these doors closed off to you because embedded's are usually the ones that have to destroy all their software and build a platform from dirt and sweat again. Also, Companies need embedded programmers for everything these days from Microwaves to ovens , to Cars, you name it.
    3) Debugging- There have to be more techniques out there than printing strings onto a console. People need to be able to organize their code in such a way that debugging is relatively painless. This debugging should probably be the class you take Senior year that combines all the good Memory Management techniques, good well applied algorithims with a review of large project's code. Primarily Open Source Code (because you can actually look at the code) should be analyzed be these students. Students should poke at all the big Open Source codebases for theil applications of the algorithims that they had been learning the past four years. Their senior project, a project that lasts all Senior Year, should be the application of this debugging class and the computer algorithims, and students should prove their handle on debugging techniques learned in this course in their programming additions to the Open Source Projects.

    A Person might argue that most algorithims are only used in one area of programming. However, since Computer Science is not an end all and only a tool, Computer Scientists should be very knowledgeable about the algorithims used in, say calculations of quantum physics. The fact is that those algorithims can very possibly be effectively applied to other areas. Computer Scientists need to be very familiar with almost all areas of science because they really are usually the employees of people with well defined needs in a very vertical market. Those slaves need to be very flexible and knowledgable otherwise they might not be able to adapt to the needs of their employer.

  416. Any here not in grad school? by genner · · Score: 1

    I'm noticing a trend here and I want see if I'm right. Is there anyone here ,willing to defend the strict math requirments, who isn't a grad student/masters holder/PHD? In other words is all this math usefull to us poor bachelors degree holders?

  417. wtf? by Anonymous Coward · · Score: 0
    You can be guaranteed that if you do all your homework, you will get an A+ in the course. That's it.


    Um. A bit of a generalization? Or maybe grade inflation is even more real than I thought. I am a reasonably intelligent person, and I write good code for a senior CS major, but I have struggled through every pure math class I've ever taken. I have done all the homework and failed the tests. I also spent about 2-4 hours/week in sections with the TA and study sessions outside of class trying to figure it all out. Not to mention looking up formulas and obscure theorms online because our POS $150 textbook is so unclear I can read a paragraph 15 times and still not understand a single sentence. And I am not the only one. Math is tricky, and for some minds it is just plain difficult.

  418. No need for Calc 1 in college. by students · · Score: 1

    If you take Calculus in high school, you won't need to take Calc 1 in college. You can take the College Board's AP exams and get credit most schools will accept. Even those that don't will accept an exemption. And if you don't do well on the test, you probably
    A. Didn't listen/get people's advice.
    Or
    Have a bad teacher, which if you go to a small school, you should have know about and prepared for in advance.

    I intend to take 3 calculuses in highschool. Yes, the NC School of Science and Mathematics offers Calc 3. For free, too.

  419. Whooops. I meant to preview, not post. by Anonymous Coward · · Score: 0

    www.ncssm.edu There are a few others, but they are minor.

  420. Double Majoring in Math and Computer Science by Mshift2x · · Score: 0

    I'll be attending Dakota State University next year (it's one of the top computer schools around), and I originally intended to major in Math Information Systems, but my advisor suggested I double major in CS as well since the degrees are only a few credits difference. Has anyone else done this? What benefits (knowledge or career) will this offer besides just a single degree?

  421. Re:Certain types of programming...Nitpicking? by lcsjk · · Score: 1

    "Because so many people here are saying that yes, you need math and problem solving skills."

    "No one mentions that being able to communicate effectively...."

    If you really want to communicate effectively, you might even want to put a subject and verb in the aforementioned sentence.

  422. Math by gtclav · · Score: 1, Funny

    Math my dear boy is nothing more than the lesbian sister of biology.

  423. Re:Certain types of programming...Nitpicking? by aWalrus · · Score: 1

    Which one of the two?

    =)

    --
    Overcaffeinated. Angry geeks.
  424. Over-simplification by Rufus88 · · Score: 1

    You are most definitely right, CS is all math. When it comes down to it, all a computer can do is manipulate numbers

    I think that's a bit of an oversimplification. It's like saying that sociology is all physics, because the only thing the atoms comprising a population of people can do is obey physical laws.

  425. music majors have to take calculas at MIT! by peter303 · · Score: 1

    One year of calculas is a school-wide requirement, even for the 20% who do not major in science or engineering.

  426. turns out it did make a difference... by wtfover · · Score: 2, Informative

    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.

  427. Machine Learning text by Anonymous Coward · · Score: 0

    From the looks of the code examples in this page,
    I feel that Tom Mitchell's Machine Learning book contains more useful/practical AI algorithms.

    And yes, you do need to learn math.

  428. Monkeys in the Congo by MonkeyCookie · · Score: 1

    Kinshasa, Democratic Republic of the Congo
    05 May 2004

    Dear Sir,

    We vehemently object to your implication that our very important and vital job of connecting servers to databases is not a "serious software engineering and design job".

    Connections between servers and databases are vital to our communications infrastructure, and although you treat the job of creating them with disdain, we happen to know that it is a very creative, difficult, and fulfilling job. We have all the Microsoft certifications to prove our skills.

    We are not simply cheap labor for outsourcing, but skilled simians who are highly valued for our database-connecting expertise. We command salaries of many bushels of bananas for this fine work. When we are not producing database connections, we are also creating many fine sonnets of Shakespearean origin, a work which also gets us many bushels of bananas.

    We urge you to take us seriously, as without us your precious Internet infrastructure would become as foul and mushy as a month-old banana.

    Sincerely,
    Monkeys of the Congo

  429. I suck at math and did fine. by ivaldes3 · · Score: 2, Interesting

    I have a BS and MS in computer science and worked for many years in the industry before becoming a doctor and founding Linux Medical News.

    I SUCKED at math, working like a dog for C grades in calculus. My miserable performance was highlighted by a D grade in Differential Equations that I worked very hard for. This did not keep me from making straight A's in my programming classes. There is the phenomenon of mathematica 'late bloomers' and I understood it better when I hit 25-27 years old. However, I've never come close to being good or even mediocre at it.

    In 20 years, I have yet to do an integral since those awful days and I have worked for IBM as a NASA contractor, the now defunct Compaq and briefly had my own software company. I am now working as a researcher in the highly technical field of functional MRI. I still suck at math. I was regarded by my peers as a good software engineer. Even though I no longer program professionally, I still have a good intuition for software problems and can write quickies without difficulty. I now use a sliver of my ability to make sophisticated spreadsheet models for successful investing. A beautiful benefit indeed.

    Do not let lack of math ability deter you from an interesting field that will help you anywhere you go!

    -- IV

    --
    http://www.LinuxMedNews.com Revolutionizing Medical Education and Practice.
  430. Re:CS has very little to do with math by ealar+dlanvuli · · Score: 1

    The best example I can think of is trees (any of the decent kinds) vs skiplists in actual code.

    Skiplists will always win out in my mind because they are easier to impliment, profile, and maintain.

    Also, trees seem to be a topic that confuse a lot of people. Writing code that people can't understand in a professional setting is bad.

    --
    I live in a giant bucket.
  431. it depends ... by bob_jenkins · · Score: 2, Informative

    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.

  432. Writing Documentation by mrchaotica · · Score: 1

    Not to mention that programmers are more and more the ones who write the documentation for the software; just think about JavaDoc.

    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  433. A redefinition of CS? by seregost · · Score: 1

    Let me start by stating that I feel that "CS" should stand for "Computational Science," not "Computer Science." This is because I see CS as a study of the abstract principle of "computation" and not the study of a particular tool used to achieve that computation.

    Note that the "S" in CS stands for science. Science is distinguished from engineering in that it strives to study abstract ideas rather than focusing on particular tools or objects that manifest attributes of those ideas.

    In my opinion, most sciences are a tangible subset of mathematics. Math provides the mindset needed to move science beyond the realm of tangible reality into an abstract space where ideas become seperated from a physical medium.

    One might call this place "memespace."

    It is in this memespace that the notion of a computation resides. To me, computational science is the study of the behavioral mechanics of mathematics. In the past, we've been able to study certain limiting cases of the behaviour of mathematical ideas. (ie, when the behaviour is linear or is easily approximated by such primitives). This really is due to the computational constrains of the human mind.

    But due to the glorious age of the computer, we have been liberated from our own weaknesses in this realm. Suddenly, the study of computation has blossomed. We're now able to visualize mathematical behaviour in ways our ancestors could only have dreamed about.

    To the modern computational scientist, all the world is aglow with complex behaviour ripe for study. And its no surprise that we are re-visting even the simplest of mathematical primitives, only to discover their behaviour isn't as simple as once thought!

    In a sense, CS is a new way to think about mathematics. For everything CS borrows from mathematics, mathematics borrows something from CS. They are really one in the same!

    A mindset that thinks CS is just about programming is missing the core of one of the most unifying disciplines in existance today.

    At least that's my opinion! ;-)

    1. Re:A redefinition of CS? by POWRSURG · · Score: 1

      You do know there already is a field named Computational Science, right?

    2. Re:A redefinition of CS? by seregost · · Score: 1

      I was aware of graduate programs that allowed you to study in a similar interdisciplinary field, but I wasn't aware that it had been standardized, or that any form of undergraduate program was available. That's pretty cool! Thanks for letting me know.

      I still think alot of colleges do not distinguish significantly between the (for lack of better words) "engineering" and "mathematical" aspects of a typical computer science program. At the university I attended, CS was in the LAS college. This made sense to me... The core of the program seemed to have more in common with math than with engineering. But alot of people wanted to move it to the engineering college.

      They argued that CS was more of an engineering discipline. I always thought that was what computer engineering was for. So I dunno.

    3. Re:A redefinition of CS? by POWRSURG · · Score: 1

      Well, don't feel bad about not knowing as SUNY Brockport is the only college in America (and as far as I'm aware one of three in the world) to offer it as an undergraduate program with a specific department dedicated to it. Yes, there are colleges which offer it as tracks within mathematics, chemistry, physics, etc, but those are subdivisions within their specific programs, not a major onto itself. Rather then repeating myself, my previous comment should speak for itself.

  434. It Is Not What You Take In College... by $criptah · · Score: 1

    It is what you know that counts.

    I took the following math classes in college:

    Descrete Math

    Calc 1

    Calc 2

    Calc 3

    Linear Algebra

    Statistics 1

    Statistics 2

    Combinatorics

    To be honest with you, now I cannot do any math without a book. Sure, I have learned quite a lot of useful stuff, but because I have never had to use it, I forgot most of it. The trick is to learn something and keep using it.

    A couple of weeks ago I got back into OpenGL programming and as a result, I had to remember some stuff about multi-variable Calculus. If I had not taken it in school, I would have had problems with it, but because I knew what to look for, I was able to restore my knowledge within several minutes. The point is: learning is good becuase once you learn something, you can fall back on your knowledge if a right time comes. If you haven't learned math, what are you going to do when you need to use it? Learning it from scratch is harder than flipping through a book and remembering what is what.

  435. Clear communication as a predictor of skills by Atario · · Score: 2, Interesting

    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!)

    --
    "A great democracy must be progressive or it will soon cease to be a great democracy." --Theodore Roosevelt
    1. Re:Clear communication as a predictor of skills by Anonymous Coward · · Score: 0

      (Very carefully proofread text...aaaaand submit!)

      You misspelled 'and' :D :D

    2. Re:Clear communication as a predictor of skills by caluml · · Score: 1

      Hmmm. Reminds me of the dyslexic DNS admin we had at the last company I'd work for. DNS is one of the few important things that needs to be completely accurate, wouldn't you say?

  436. Math and CS by Klingensor · · Score: 1

    I use computers to solve computationally intransigent problems. I consider myself a mathematician. In my estimation, there is no other choice than to learn everything mathemetics that you can. CS is just a minor footnote.

  437. MOD PARENT DOWN... by Anonymous Coward · · Score: 0

    Sure, taking a quote out of context to make a joke is all well and good, but what about when somebody uses taking-out-of-context for evil? It's a slippery slope!!

    hmm... that didn't turn out as funny as I thought it would. Oh well, I'll post it anyway!

  438. Here's what I have to do by trialsboy · · Score: 1
    Keeping to the subject, here's what Ive done in the first year of my course:
    • Linear Algebra
    • Matrices
    • (Good for 3D Graphics)
    • Complex Numbers
    • Recurrence Relations
    • (Good for complexity)
    • Discrete Maths
    • Logic
    --

    "Pushing little children, with their fully automatics, they like to push the weak around"
  439. Math at University by gnuman99 · · Score: 1
    What most people don't know, is that math as you know it, pretty much ends during the second year math classes at university. There on, most of the things are based on theory. Sure, there are a few classes in applications, but most deal with proving theorems and such.

    Arithmetic ends after first year of university in math classes. Pretty much everything you do with computers is covered by first year of math classes. Complex numbers and other nice things are covered in second year, but after that, well, most classes will be pure theory, like functional analysis or metric spaces.

  440. The Art of Computer Programming by Shewmaker · · Score: 2, Informative
    Knuth has an excellent overview of the mathematics important for undertanding algorithms in Volume I of The Art of Computer Programming.

    --
    "For the Snark was a Boojum, you see." -From the Hunting of the Snark: An Agony in Eight Fits, by Lewis Carroll
  441. At the graduate level by Rize · · Score: 2

    Computer Science is 90% math at the graduate level. Don't skip out on linear algebra if you want to do 3D graphics and pay very close attention to anything involving matrices and vectors.

  442. Good at CS, bad at Math by Anonymous Coward · · Score: 0

    I passed Calc I the first time I took it in high school with a B grade, but barely.

    Now I'm a junior in CS, and it wasn't until the 4th time I took Calculus II in college that I actually passed it instead of dropping it (before failing out) - with a C grade and almost no understanding of the last half of the semester at that (except for series, because those translate so well to CS concepts I already understood easily enough). That's for somebody who got a 23 ACT math score in high school, 26 cumulative (I do much better in English, reading, and science, scoring in the upper 20s).

    I haven't taken Calc III, and probably never will. It's not required for my CS emphasis. Same goes for Linear Algebra, Diff. Eq., or other math classes besides my non-calculus Statistics course (although, I now wish I'd taken the calculus-based one, to give me a better idea of practical uses for calc).

    Math simply doesn't come easily to me, but what's worst is the fact that I rarely see any useful purpose for it. I have the mind of an engineer, not a scientist - if it's useful, I can learn it, else, I can't. I really do love learning theory (of any kind), but the truth is that I absolutely need to know how I can use theory in practice, otherwise, it's a useless waste of brain space to me. The only reason I passed Calc II the 4th time is because I found examples and ways to somewhat convince myself that certain things I was learning were useful.

    I really wish I were innately better at math... My code is decent (A's and B's in nearly all my CS courses), but my math frankly sucks.

    If anybody out there in Slashdot-land can suggest a book that teaches Calculus II, III, Diff. Eq., Linear Eq., etc. in a way that practical minds can understand, please, please, reccommend it! :)

  443. See Pratt's book on image processing by DrZoom · · Score: 1
    I open my copy of Digital Image Processing by Pratt and I find on page 4:
    Y(x, y, t) = integral from 0 to inf C(x,y,t,l)V sub S(l) dl
    On page 6 is the Dirac delta quickly followed by Fourier transforms and a little linear systems theory.

    Looking throught the entire book I see a lot of mathematical analysis, linear algrebra, linear systems theory, probability theory, ... My copy of the book was published in 1978! Nowadays thing are worse.

    It is easy to understand why a computer science professor once told me that most of his graduate students were poorly prepared in math.

    Homework: Study the most recent MPEG specs.

  444. my 2 cents..... by Alien_Phreak · · Score: 1

    the school I went to required 1 Math course.

    now given I had already taken calc I in h.s. so I was better off then most people, but I ended up only having to take 1 math class (calc II ) and a stats class.

    personally, I wish we had much higher math requirement. Heck, looking at the math classes I wanted to take, I would almost end up with a math minor.

    If you end up in a field having to do with crypto, graphics, or AI you absolutely need a strong math background.

    anyhoo... that's my 2 cents.

  445. the real reason by 10am-bedtime · · Score: 2, Interesting

    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.

  446. i have my doubts on the school system in general.. by coronaride · · Score: 1

    don't forget about professors who just don't care. the community college that i went to was a joke. on the first day of my discrete math class, the professor walked in and said "this is my last semester here, so i really don't feel like teaching. come if you want, i'll give you all the answers to the tests."

    and let's not forget about my engineering physics professor who actually marked me down on my final because i formulated a better method for solving the equation than the one that she used in class. she claimed that it was not fair for her to have to check my formula to make sure that it was ok..which of course it was.

    --
    Those who can, do. Those who can't, go into business for themselves.
  447. Your Lame! by pretzelsofwar · · Score: 0

    Ha, I took calc I, II and calc of serveral varibles, along with a course in matrix theory my frist year for ECE. I think that is a little bit out of date, I find myself taking a lot more classes then they have there.

    --
    redvsblue.com
    ::BANG!::
    Sarge: Did you just shoot yourself in the foot?
    Simmons: Yeah I do that sometimes now..
  448. Computational Science by POWRSURG · · Score: 1

    I love math and I love programming, that's why I decided to get my BS in Computational Science at the only college in North America to offer it as a full department, rather then some track under Computer Science, Mathematics, Physics, Chemisty, etc..

    While at SUNY Brockport I've done a great deal of number crunching and thus done most of my programming in FORTRAN. I've learned some C++ where pure number crunching wasn't required, so please don't start flaming me borthering to learn FORTRAN. Currently I am continuing on for my MS there while working on the College's Web site, where I am work PHP and MySQL (yes, I recognize this doesn't relate towards my field, but I *am* still a student and find it a bit more fulfilling then going out to faculty's machines to explain to them that the 400 instances of spyware that I had just cleaned off their machine was what was boggign down their machine).

    In my experience, above the 200 level most Computer Science classes deal with theory and involve very little programming. I've seen instances of students forgetting how to code merely because they don't have to do it much. I've seen students waste minutes at a telnet terminal trying to figure out how to compile a C++ program that links to the math library whose output is something besides a.out. The student wasn't an idiot, he just hadn't compiled anywhere besides in Windows. It just sickens me. Honestly, I basically minored in Computer Science so that I would have it on my resume so that future employers would know that there was something different to what I've learned, and might get me an interview to explain it.

  449. Computer jobs for those who cant handle maths? by Darthmalt · · Score: 1
    Just curious but what kind of Computer oriented Jobs are available for those who can't handle the maths.
    Whoever said
    "as long as you do your homework and study you'll get an A+ was full of it.

    I took Pre Cal and got a D despite the fact that I spent so much time studying precal that my grades in history(easy), Intl studies(easy), and sociology(hard) all dropped. Until that Class I was majoring in CIS now I'm Buisness but have no idea what I want to do.
  450. Dropping math requirements in Macon by Darthmalt · · Score: 1

    a friend of mine that goes to a college in Macon GA (I don't think it was mercer) Said that they were going to drop most of the Higher Math requirements for computer major's because they weren't needed.

  451. Do you want a job? by Anonymous Coward · · Score: 0

    I dropped out of school, but I study and keep on top of new development processes and technologies. I follow what the market wants, while other people waste their time taking Calc II and waiting for their employer to train them. The training never comes, they get outsourced, and I move on to another OOAD gig with a high pay rate. They get raped by corporate America and I send my invoices. In the end it comes down to this: if you want to make money, study what's in demand. Who cares if you don't have the theory so long as you're employable and make lots of money. America is about money and Calc II won't get you anywhere.

  452. Math is the basis of all subjects by Nrlll9 · · Score: 1

    I think everything is math. without math, you get nowhere. hell, even english is math, grammar is math, if you formalize it. logical reasoning is math. I think my math sucks too much though. i wish i learn more math.

  453. Computer Lib by bluethundr · · Score: 3, Insightful

    In 1974, Ted Nelson had some thoughts to share on this very topic in his revolutionary book Computer Lib. As the "crackpot, visionary, gadfly" he calls himself he stated that "Universities require higher math (usually calculus and at minimum linear algebra) before allowing students to program a computer. This is preposterous! This is akin to requiring a PHD in mechanics in order to drive a car down the road! Grade school kids can - and do - learn how to program computers with no math background at all!"

    This is a paraphrase, because unfortunately I don't have my copy in front of me at the moment. But I believe I got it pretty close. While I agree with Ted on the whole, I also concede that it entirely depends on what you want to do with your programming projects.

    If it's got anything at all to do with breaking apart, twiddling or mangling things like sound and video and many applications of graphics then yes higher math will be a requirement. It will also be useful in helping one think logically enough to handle programmatic tasks more easily.

    That being said, there are still many many programmatic tasks you can accomplish...to make your life easier because someone else hasn't in the area you're programming in, or just to learn the internals - the process! - of programming: Ted was dead on (as he was about a lot of things!). No math will be required for a great many tasks!

    --
    Quod scripsi, scripsi.
  454. BA in CS and an MBA is the way to go! by cphanson · · Score: 1

    No no no... just get yourself a BA in CS, then get an MBA. This is what i'm doing... I understand CS and IT/IS because i've done it (well ok, so undergrad course work and a couple of internships doesn't constitute "doing it all", but its a good start). Now i'll be managing all of you and making MORE MONEY. Presto! A nerd who understands business and has the competencies to communicate with the rest of the world!

    Now... about those loans...

  455. Re:CS has very little to do with math by Anonymous Coward · · Score: 0

    Actually, it has a lot to do with math. I attend Purdue (a CS/Math dual major, ECE minor). Here, CS was a fork from math. In my upcoming CS final, I'm using my descrete math book to study graphs and their traversal.

    If you want a job that won't get outsourced, you need to know math; it's required in all the *real* development out there.

  456. What is CS, anwyay? by Anonymous Coward · · Score: 0
    I have a BS in Computer Science, but I don't know what it is.

    I started out thinking it was about programing. (That was silly of me, since I aleady knew how to do that. I guess I just figured I'd spend four years learning more and more languages.)

    For a while, I thought Computer Science was an obscure and not terribly useful field of Math. And maybe it once was. When my Algorythems Proff had to spend 2 weeks showing people what a 2-column proof was, that was a good hint that the Computer Scientists in that class had nothing to do with Math beyond Algebra.

    So... I have a degree in CS. I don't know what it's about. Maybe I need to go to grad school to learn that?

  457. Math is difficult? Homework, Textbooks and ADD by BigBlockMopar · · Score: 1

    Not to mention looking up formulas and obscure theorms online because our POS $150 textbook is so unclear I can read a paragraph 15 times and still not understand a single sentence. And I am not the only one. Math is tricky, and for some minds it is just plain difficult.

    Oh yeah, I agree; sometimes it *does* take a lot of reading to get your head around something. And other times, you just need to follow through examples until you learn the method because the textbook describes the proof so poorly.

    Note also that in my engineering program, our focus wasn't on proofs or theory. It was about practical applications of higher math. The whole idea is that math is a tool for us. Our tests and exams were "Solve this", "Integrate that", "Find the radius of convergence of this series". It was possible to do 100% of the problems on a test correctly, and as such, get an A+. Which is only fair; I don't consider that to be grade inflation. This is not an English Literature class or something else which is only qualitatively correct or incorrect.

    I have a collection of Calculus books - over a dozen now, old textbooks from used bookstores. My personal favorite is the 1910 gem, Calculus Made Easy by Silvanus Thompson. Of course, it wasn't helpful beyond Calculus I, but I still refer to it when I've forgotten how to integrate something. It's helpful to have a bunch of different textbooks explaining the same thing; sooner or later you'll find an explanation which just makes things drop into place.

    But if you still can't get it, you have to be honest with yourself and ask yourself how much of your homework you've really been doing.

    You also have to consider the possibility of attention deficit disorder (ADD). I *couldn't* do math until I got it delt with; now I love math, and there are about 100 other facets of my life which have been improved as a result of diagnosis and treatment. (I think ADD is a different evolutionary behavior rather than a "disorder" as it's called. ADD helps me with a lot of things, coming up with creative and different ways of solving problems. But it does make some aspects of life in today's world tough. I take my Ritalin only when I need to focus.)

    But the most important thing is that, in the immortal words of Bernie Perrier (a great high school calculus teacher), "Math is not a spectator sport". You *have to* do the homework. It's that simple.

    --
    Fire and Meat. Yummy.
  458. slight clarification by rabs · · Score: 1

    ...difference between strings and binary...

    Here I mean the difference between the string representation of a number vs the binary representation of it.

    - rabs

  459. Depends on what you want to do by gubachwa · · Score: 3, Interesting
    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.

  460. Computational Neuroscience and Math by FleaPlus · · Score: 2, Informative

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

  461. Another result of mathematical ignorance ... by dpt · · Score: 1

    ... you tend to make a fool of yourself on /. a lot, too, when you talk about things that are beyond you, because you "downloaded a Perl module" that did "crypto" one time, yet don't understand what's going on (for example, what the range of a function is and why it is significant). In short, you don't want to appear *that* stupid in public!

    There's also the obvious problems with not being able to get or keep a job because all the "web developer" and "GUI" monkey work isn't so hot any more. In short, get your degree, and make sure it contains some actual maths.

  462. Computer Science IS Math! by Snorpus · · Score: 1
    Uh, I hate to break it to you, but if you think that CS == Programming, or CS == Programming Languages, then you're sorely mistaken, or the curriculum you're following is way out of date.

    CS is problem solving, as is EE, MechE, ChemE, Physics, etc. No matter the problem domain in science and engineering, the solution ends up being mathematical. The Language du Jour might solve a particular problem slightly better today, but fundamentally all languages come down to a combination of sequence - selection - repetition. Even OO languages... they merely encapsulate the logic into "objects" and methods, but the SSR structure remains.

    IIRC, my BSEE program, 35 years ago, before there were undergrad CS degrees, was as much math as it was engineering: > 4 semesters of calculus > 2 semesters of advanced calculus > 2 semesters of probability and statistics > 1 semester of linear algebra I don't use any of the above on a daily basis, but the thought processes (the problem solving ability) remain with me. In other courses, I learned Algol and Fortran, but the logic I learned there is still good for C++ and Java.

    As an earlier poster noted, an understanding of calculus and physics ought to be required for high school graduation, let alone college.

  463. U of Waterloo, CS vs Software Eng. by Wraithlyn · · Score: 1

    OK, disclaimer, I haven't even RTFA, but I have quit from a respected CS program (University of Waterloo), and one of the reasons was there was too much math. It just wasn't where my passion lay.

    Now, I'm pretty good at math, and truly talented at CS (self-taught coding since age 7, way beyond teachers in high school, etc), but by the time I was getting to things like Calc 2 and Calc 3, I simply wasn't motivated to apply myself to it.

    Now, there were other reasons I left... there was the cost factor, and some people I knew were starting a company back in the dot-com days. I tried to go there as a co-op term, but the co-op dept said I had to take another job with a company that indicated they wanted me, and I couldn't work where I wanted to. I told them where to go.

    BUT... the fact that the program seemed too math intensive for what I wanted was still a significant factor. I HAVE an excellent foundation in math. I'm great with the CS. But I was still soured away from the CS program at the leading Canadian CS university.

    I did get 2 full years in though. I think the most important thing I learned was "big O" notation... analyzing algorithm efficiency. You can apply that to everything.

    I think that would be a great hiring test too... show someone a simple algorithm like a nested loop (in anything... even pseudo-code) and ask them what order of efficiency it is. If they don't understand that it's n^2 and the MATH behind what that means, seeya later.

    In the years since I left, I've been able to tackle every problem that came my way. And I'm not talking about "connecting web servers to DBs" (although there has been plenty of that, and there is an art to doing it as efficiently as possible). I've written file sharing and communications networks, servers that deal with thousands of simultaneous clients, streaming compression, encryption, you name it. If I can master things like multithreading, advanced networking, cryptography, etc.. what exactly am I missing from something like say, Calc 3?

    I do sometimes wish I had opted to stay and finish. There were some interesting CS things in the final years like AI and operating system design (I've heard that one is hell... but then I heard that about 'multithreading' too and it wasn't too hard). But I wonder if I could pick these up too myself anyway with a few books and the 'net.

    I understand UW has a new "Software Engineering" program now, with less emphasis on advanced mathematics. Perhaps that's something that is more suited to me.

    --
    "Mind, as manifested by the capacity to make choices, is to some extent present in every electron." -Freeman Dyson
  464. Guess its a rant by alwynschoeman · · Score: 1

    Somebody said that what is important when you hire somebody is their ability to think and not the qualification.

    I personally know 1 or 2 developers with no formal training but who are excellent developers and thinkers. This is by far not the norm though.

    Having said that. Someone with 3 years of University level math behind them has a lot more experience in solving complex problems and using their brains than someone who has done a 6 month course in some arbitrary programming language.

    I know that my engineering degree has given me the ability to think and solve complex problems. It has also given me huge amounts of background information and knowledge which normal programmers don't have and as a result I can make informed decisions and focus my attention, compared to just fiddling around until I find something that works and probably won't understand the solution.

    The depressing part today is the number of watered down BS degrees you get these days. The trend seems to be to make the subject matter simpler if you cannot find enough people who are smart enough.

    I interview BS graduates who took physical education and psych. in their final year! They have perhaps 10% or less of the exposure that a proper degree would give you not even mentioning the depth of the knowledge. Despite this they have 'Computer Science' degrees, and are touted as internationally competitive professionals.

    This trend is why programmers are commodities today. The same holds for system admins. There are too many people who have no aptitude or interest in technology, performing tech jobs. Why? Because it (used to) pays well. A programmer or system admin should be someone for whom its not just a way of putting bread on the table, but an addiction, a way of life. Guess how many system admins don't even have a pc at home...

  465. Exactly how much math is required? by jtwine · · Score: 1
    I have read plenty of posts regarding how math is important to, and some even say a required part of, Conputer Science. But exactly how much math is required? Algebra? Calculus? Stats? DiffEQ?

    Yes, there are special situations like Games/Graphics, but the average programmer is not likely working on the next FPS game engine. (And even if they were, would DiffEQ be required?)

    Personally, I consider myself quite shi*ty at math -- things like advanced calclus or DiffEq (although I start to get nervous when I think about FOIL :). That is one of the reasons I left college in my third year (after relational algebra, I saw no reason to continue further). The most useful math class I ever took was in my first year: Finite Math.

    Neither lacking a degree or the math expertise has EVER been a limiting factor in my professional or personal life.

    I still produce high quality, high performance software and algorithms, command a six figure salary, and have never had to beg for a job. There is no math problem that I have ever encountered in my career that my trusty TI graphing calculator could not handle.

    IMHO, do not give math too much weight. That is just as bad as too little. Some math is important, maybe even required. But, not all of it.

    Ask yourself this: how many times last year were you required to use Calculus, DiffEQ, etc. in order to complete a programming related task? And was it something that a calculator could not have done faster (time == $$$) and more accurately?

    Just my $.02 (from experience) on it...

    --
    -=- James.
  466. Utterly irrelevant... by warrax_666 · · Score: 1

    to what I said.

    Also note, that there are other ways to represent ("store") iteration, for instance it is very common in FP to use tail recursive functions to represent iterations. Note that this works quite well in the absence of assignment (and runs just as fast if you have a language/compiler which can optimize tail recursive calls). There is no need for an "assignment" operation until you look at the assembly/hardware level.

    --
    HAND.
  467. Answers! by Medievalist · · Score: 1

    Lots, usually.
    They generally aren't.
    No. Both are derived from logic, neither is derived from the other.
    Praps I'll read it if I get bored with taunting trolls.
    Already got one, thanks anyway.

  468. Re:Certain types of programming...Nitpicking? by lcsjk · · Score: 1

    Here is the original message:
    [Ok. Let's nitpick: It's not "Here here". It's "Hear, hear". Why do I bring this up? Because so many people here are saying that yes, you need math and problem solving skills. No one mentions that being able to communicate effectively (and correctly) is also very important.]
    The phrase starting with 'Because' is not a sentence. It is a response to the question, and as such has an understood "It is" preceeding the word "Because". Of course, I did not mention that the last part of the phrase contains a quote and should have been "Yes, you need .....skills." in quotes. My point is that one should not correct another's english without checking to make sure his own is correct. (However, this response may have errors.)

  469. Re:Certain types of programming...Nitpicking? by aWalrus · · Score: 1

    Which brings us to my original point:

    "If you really want to communicate effectively, you might even want to put a subject and verb in the aforementioned sentence."

    You state that after mentioning two sentences. =)

    --
    Overcaffeinated. Angry geeks.
  470. Totally offtopic by Anonymous Coward · · Score: 0

    We were having a conversation about ethics in another thread, which I very much enjoyed. It's since been archived, so I can't reply directly, but I wanted to thank you.