Slashdot Mirror


CS Profs Debate Role of Math In CS Education

theodp writes "Worried that his love-hate relationship with math might force him to give up the pursuit of computer science, CS student Dean Chen finds comfort from an unlikely source — the postings of CS professors on the SIGSE mailing list. 'I understand that discussing the role of math in CS is one of those religious war type issues,' writes Brad Vander Zanden. 'After 30 years in the field, I still fail to see how calculus and continuous math correlate with one's ability to succeed in many areas of computer science...I have seen many outstanding programmers who struggled with calculus and never really got it.' Dennis Frailey makes a distinction between CS research and applied CS: 'For too long, we have taught computer science as an academic discipline (as though all of our students will go on to get PhDs and then become CS faculty members) even though for most of us, our students are overwhelmingly seeking careers in which they apply computer science.' Frailey adds that part of the problem may be that some CS Profs — math gods that they may be — are ill-equipped to teach CS in a non-mathematical manner: 'Let's be honest about another aspect of the problem — what can the faculty teach? For a variety of reasons, a typical CS faculty consists mainly of individuals who specialize in CS as a discipline, often with strong mathematical backgrounds. How many of them could teach a good course in cloud computing or multi-core systems or software engineering or any of the many other topics that the graduates will find useful when they graduate? Are such courses always relegated to instructors or adjuncts or other non-tenure-track faculty?' So, how does this jibe with Slashdotters' experience?"

81 of 583 comments (clear)

  1. Do you want computer science, or engineering? by FooAtWFU · · Score: 4, Interesting

    And, for that matter, do you want to learn in the classroom, or in industry?

    --
    The World Wide Web is dying. Soon, we shall have only the Internet.
    1. Re:Do you want computer science, or engineering? by curril · · Score: 5, Insightful

      Which is really the way it should be broken out. Computer Science should be about the math, theories, and algorithms that make up computation, and computer software engineering should be more about building applications. Sort of like how traditional engineering relates to physics.

    2. Re:Do you want computer science, or engineering? by $RANDOMLUSER · · Score: 5, Funny

      Sort of like how traditional engineering relates to physics.

      Thanks a lot. Like there weren't already enough religious warriors at this party.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    3. Re:Do you want computer science, or engineering? by Unoriginal_Nickname · · Score: 2

      If you make it real Software Engineering, meaning it is taught by the Department of Engineering and has the opportunity for p. eng. accreditation, students will end up having to take MORE math (at my university it's something like Lin Alg. I-II, Calculus I-III, ODEs, PDEs, Applied Probability and Applied Stats) just to satisfy their general requirements.

      I'm also unclear on exactly what part of CS doesn't require math, applied or not. What kind of programs are you going to write without a strong mathematical background? CRUD is the only thing I can think of, but to write those you don't even have to go to high school.

    4. Re:Do you want computer science, or engineering? by mikael · · Score: 3, Informative

      You should look at the current jobs market. All of the good paying jobs require solid mathematics knowledge, especially for anything simulation/visualization related - CFD, aerodynamics, combustion systems, design/simulation of industrial processing equipment (grinders, shredders, slicers), and require OpenGL, CUDA, MPI, OpenMP experience as well.

      Those jobs that aren't mathematics related, seem to be more arts based (web design) requiring knowledge of Photoshop, 3Dmax. The remainder seems to be management or customer facing roles.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    5. Re:Do you want computer science, or engineering? by munitor · · Score: 3, Interesting

      I'm a Mechanical Engineer with 30 years experience and for a BSME from a fully accredited major school, my math requirements were only Calculus 1-3 and ODEs (loads of application, of course). In my career I've only used the calculus a few times (e.g. passing the EIT exam). I did do some graphics programming, FEM, etc. in school, but at the end of the day, what maths you needed really depended on the direction of your career. What few bits of software I've written that get used needed just bitwise operations and logic. You don't need much math for that.

    6. Re:Do you want computer science, or engineering? by metlin · · Score: 2

      In fact, I would say that there are three separate (but related) categories in computing --

      1. Computer Engineering -- this would be akin to any other field of engineering. You learn about microprocessors, VLSI, DSP, and other elements, not dissimilar from EE or ECE. Lots of practical, engineering considerations should be involved.

      2a. Theoretical Computer Science -- this, to your point, should be about theoretical computer science, complexity, discrete math, topology, graph theory, and other aspects of "real" computer science.

      2b. Applied Computer Science -- one learns to apply the topics of above to specific real-world problems (e.g. how can you use physics and vectors in building a raytracer or graph theory in network topology or how semantics encoding can ensure soundness and completeness in parsers etc).

      You can have something along the lines of Computer Science & Engineering where both are taught, for those areas which overlap (e.g. OS design, device drivers etc).

      3. Programming/Development -- this is the least glamorous and the most pedestrian application, so much so that I question if this should be taught at all. If one were to understand the fundamentals, they should be able to pick up the intricacies of applying them in any language or API. Ditto with system administration. In my mind, I bucket this with all the IT/IS/MIS load of crap.

      The reason this last area is popular at all is because there are no polytechnics these days -- back in the day, this would have been an easy skill that would have been taught in polytechnics for people to quickly learn and apply.

      In the hierarchy of things --

      pure math >> applied math >> theoretical physics >> applied physics >> engineering physics >> engineering >> programming

    7. Re:Do you want computer science, or engineering? by Col+Bat+Guano · · Score: 2

      The software engineering part doesn't need (continuous) math.
      Testing, process, management, analysis, design, coding, requirements gathering are all fairly math free.

      Sure there are some domains that require continuous math, but there are a hell of a lot of other domains that don't.

    8. Re:Do you want computer science, or engineering? by gtall · · Score: 2

      Logic is not mathematics, and legions of mathematicians will tell you this. Mathematical reasoning uses logical reasoning. Models of logics use mathematics. However, logic systems are not mathematics systems. Any part of mathematics is what we'd call a theory in logic.

      And implementation does not require only first-order logic. At its core, at least if we are talking computer programs, the reasoning required is a variant of modal logic. If we are talking hardware, there are all sorts of logic that could be used: fuzzy logic, modal logic, intuitionistic logic, usw.

    9. Re:Do you want computer science, or engineering? by Roger+W+Moore · · Score: 2

      Sadly, there is almost nothing that will be learned in 4 years of college that used that couldn't be taught in 10 minutes of skimming through a "best practices" document

      ...and how would you know which "best practices" document to skim through if you don't have a broad knowledge of the field? What happens when you encounter a problem for which there is no "best practice" because you are the first to do it? The value of a university education is that it gives you a framework of knowledge and skills and the ability to expand it as needed.

      Given that EVERY student taking science should be made to take basic calculus. In fact in the UK basic (polynomial) calculus used to be part of the old maths O'level so everyone going to university ended up learning it - even those going to do an english degree - in the same manner that those of us doing physics had to learn Shakespeare. So if 16 year-old future english students could manage to learn enough calculus to pass an O'level there should be no problem for any science student, no matter what their field, to pass a basic calculus course at university.

    10. Re:Do you want computer science, or engineering? by Undead+Waffle · · Score: 3, Interesting

      Calculus was where I was introduced to the concept of limits, which is the core of Big O notation.

      I really wish some of the people writing the code I now have to maintain understood Big O notation...

    11. Re:Do you want computer science, or engineering? by bpsheen · · Score: 2

      Yes, You need the ability to write a series of operations that interact with each other. Those operations are instructions and a bunch of instructions and data is what software is. However you don't need Calculus to be a good programmer. It possibly helps with certain areas but for the most part if you can write a sequence of instructions and have the desired result, is that not computer science. Where does the knowledge of advanced maths really fit here? Sure you need to understand Bresenham's_line_algorithm you need to understand integer addition, subtraction and bit shifting, I don't see any Calculus or any other advanced knowledge really needed there. If you can do read a word problem and write code to solve it you can write code, That in effect is computer science. Is it not?????

      --
      My first computer had 1024 bytes of ram
    12. Re:Do you want computer science, or engineering? by catmistake · · Score: 2

      Once again we have some people that want to redefine words. Computer Science is mathematics. Either something is computer science or it is not. I don't know of much computer science going on outside of academia. Programmig is not computer science. Software Engineering has been accepted as a meaningful term in the last 15 years... but I still have trouble understanding exactly what it is that is being engineered under this term... I know it isn't electronics, or computers, or engines or bridges or roads... and I know what programming is... I just don't get it... unless, of course... it is a trumped up marketing term.

    13. Re:Do you want computer science, or engineering? by metlin · · Score: 2

      No, he was saying that at the very least, everyone should have basic levels of education in certain things, and that these things include essentials (e.g. basic math such as calculus, core English literature such as Shakespeare etc).

      I would in fact add a few more to the list -- basic chemistry, including physical, organic, and inorganic; basic physics, including mechanics, electromagnetism, quantum mechanics; engineering drawing; at least conversational skills in one non-native language; introduction to music theory; fundamentals of philosophy and the main schools of thought; introduction to social sciences, including economics, political theory, geography, history, law, sociology, and psychology; and finally, art.

      I could point to someone like John Stuart Mill as the product of such an education, but I will instead leave with a Heinlein quote:

      "A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."

    14. Re:Do you want computer science, or engineering? by Lemmy+Caution · · Score: 2

      That's one of the points of a bachelors. It isn't a vocational degree.

      It is now. Or, rather, it's the new HS Diploma. It no longer guarantees you entry into the middle class. Companies won't take a chance on you because they like you or think you'd "fit in" to their culture if you have a Bachelors. Once, this was, in fact, the case: a BA or BS gained you entry into the corporate world without any questions of specific skills: the employer would train you as needed.

      That era is over. There are more college educated people than there are jobs we would consider providing the basis of a middle-class existence. The BA or BS is actually a little less than a vocational degree/

    15. Re:Do you want computer science, or engineering? by Lemmy+Caution · · Score: 2

      And that's why Soviet superiority in computer science helped them to win the Cold War!

    16. Re:Do you want computer science, or engineering? by stiller · · Score: 2

      Really? I don't know where you are looking, but I don't see the situation you describe at all, not now or ever before. By far the most jobs in software development (you describe a lot of other, perhaps related fields) are about implementing business logic. And I don't mean business logic on the 'quant' level, but rather on the mundane, daily process level. These do not require any substantial knowledge of maths, except to reach a very high level of expertise. Before you say these jobs don't pay as good, take a look at average SAP consultant/engineer salaries.

    17. Re:Do you want computer science, or engineering? by AK+Marc · · Score: 2

      What people refer to as "CS math" would have brought science to its knees if scientists payed any serious attention.

      CS math requires:
      Engineering Math I (Calculus)
      Engineering Math II (calc 2)
      Discrete Math
      And linear algebra or differential equations.

      Math for a full-on engineering degree requires:
      Engineering Math I (Calculus)
      Engineering Math II (calc 2)
      Engineering Math III (Even more calculus!)
      Diff EQ
      Applied Engineering Math

      One more math class for full-on engineering than CS. Do you really think that someone making it through two semesters of engineering calculus, discrete math and Dif EQ is completely inadequate? Because you can get a bachelors of science in science (like chemistry or physics) with the same or fewer math classes as CS (and yes, physics and chemistry require fewer math classes than any engineering degree). Oh, and if you count the CS mandatory statistics class as math, which it is more math than most freshman math classes, then CS requires more math than any degree from the college of science other than an actual mathematics degree.

      So, tell me again how CS is weak on math. Go ahead. I'm waiting. How many math classes did you take in college? If you aren't a mathematician (and count statistics as math), then I probably have taken more than you.

    18. Re:Do you want computer science, or engineering? by Anonymous Coward · · Score: 3, Insightful

      At the same time, it turns out that many math wizards are horrible programmers.

      In many ways, I feel you could substitute "programming" with "composing music" in your hierarchy and still be making roughly the same argument; there is a well known overlap between mathematical and musical talent, music can certainly be "reduced to" mathematics. And yet, a math professor rarely turns out as good music as a musician and there is really no general assumption going that the best musicians are also math wizards.

      Unfortunately, by knowing math or CS one does not know programming, just as one doesn't know music that way. There certainly have been musicians who were able to translate improved mathematical understanding into more sophisticated music, but this would not hold true for all or even most musicians and it would be ridiculous to dismiss those musicians who don't care about math as less talented. The same, imo, holds for programming.

      It may look like a paradox when all of a program or a musical composition can be reduced to math but a math professor might not be able to write as good a program or musical score as a programmer or musician who is a math novice. But the answer is that even though the finished product can be thought of as a purely mathematical artifact, the procedures for deriving at the product are not the same skills as a math professor uses to manipulate mathematical expressions. In other words, the skills of a math professor are not sufficient to perform well in programming or musical composition.

      I'm not sure I'm really objecting to anything you said as such, I just wanted to point out what I perceive as limitations to the scope of your argument.

  2. Simple Solution by ExploHD · · Score: 5, Insightful

    If you don't want math with your computer science, learn computers / networks / shiny jargon at a trade school

    1. Re:Simple Solution by Gorobei · · Score: 3, Informative

      Um, the prof was saying calculus and continuous math have little to do with CS. Discrete math, etc, is always going to be a big part of CS/algorithms.

    2. Re:Simple Solution by Anonymous Coward · · Score: 4, Insightful

      Um, the prof was saying calculus and continuous math have little to do with CS.

      And he couldn't be more wrong, IMO. Knowing only discrete math, or only continuous math, can be as bad as being blind or deaf; it may arbitrarily limit the abilities of otherwise smart people, resulting in worse solutions, or none at all, to many problems. For example, factorials of large numbers can be approximated much faster using continuous functions. And since calculus pops up everywhere in the real world, anyone doing real world simulation (like graphics and physics) may need it! In fact, I believe one should be familiar with as broad a field of math as possible; for instance, abstract algebra and geometry are both very useful.

      Math is very stable knowledge that can be applied to all kinds of problems and may speed up the learning of new concepts. Industry related things usually aren't that stable: It simply makes more sense to learn proper theory and then specialize as needed for the problems at hand. Moreover, teaching such unstable things in universities is borderline idiotic, since they may no longer be relevant after graduation!

    3. Re:Simple Solution by IICV · · Score: 5, Insightful

      Yeah, exactly - CS needs some very specific kinds of math, and instead of organizing the curriculum around it, universities teach a "jack of all trades" mathematical toolkit that's not especially useful.

      For example: in order to get my CS degree, I had to take a statistics course that used calculus. However, according to the school curriculum, this statistics course mostly covered continuous, classical statistics - not the discrete, Bayesian statistics which are so incredibly useful in computer science (why do you think your inbox isn't full of spam? Discrete Bayesian statistics). The only reason why we covered Bayesian statistics at all is because the professor was a Bayesian statistician, and he shoe-horned it into the class.

      Another example: I had to take the first calculus series, which was comprised of introductory calculus topics; I also had to take the first quarter of the second calculus series, which was advanced calculus. However, I found out from other students who took the rest of the second calculus series that the later courses covered mathematical topics that are ridiculously useful for computer vision and computer graphics - I believe they covered things like convolution and calculating the curl of a vector field.

      Basically, computer science uses a lot of discrete math, and a lot of vector/matrix math. Universities don't have a lot of general education courses that teach discrete math or vector/matrix math. This means that CS students have to slog through a lot of continuous mathematics that is, quite frequently, not very useful, and not necessary to learn the discrete stuff - when they could instead be learning mathematics that would be very useful.

    4. Re:Simple Solution by khallow · · Score: 3, Interesting

      For example: in order to get my CS degree, I had to take a statistics course that used calculus.

      Given that calculus-based statistics is pretty important to CS (eg, software metrics, big "O" stuff, writing programs that use statistics, etc), how is this relevant to your complaint?

    5. Re:Simple Solution by Anonymous Coward · · Score: 3, Insightful

      In my CS degree I took a "Discrete Mathematics" course. There was also a "Linear Algebra" course that covered matrices and vectors. I also took several other mathematics classes that covered calculus, statistics, etc. Basically, courses over the real and complex numbers. Ignoring calculus is basically throwing out almost all of mathematics that has happened since Newton. Any formulas you use will just be the algebraic results of applying calculus to find them. While it's possible to just use mathematics in computer science without understanding it, it's a bad idea. It's what causes programmers to think floats are great for storing fractional currency values or to ignore catastrophic subtraction. You can learn some of the tricks to avoid problems with floats, ints, and other CS mathematical problems, but you won't understand *why* they are problems or be able to discover problems in new algorithms on your own.

      And seriously, how is anyone supposed to do any sort of numerical analysis without understanding taylor series or fourier transforms? How can someone perform complexity analysis without a good grasp of infinite series and calculus?

  3. It's not the math ... by tomhudson · · Score: 2, Funny
    Forget advanced math - too many people lack basic language skills. This is supposed to be a tech site, and yet we still see people whose first language is english continuously confusing they're, their, and there, or rein, rain, and reign.

    We need some grammar nazis in the admissions offices.

    1. Re:It's not the math ... by $RANDOMLUSER · · Score: 4, Insightful

      Before everybody jumps all over him for being wrong and off-topic and all that, I'm going to agree with him. As working programmers, not necessarily CS professors, we manipulate language(s) for living, both formal languages for programs, and natural language for (ick!) documentation and communicating with others on projects. These languages, formal and informal, have both syntactic requirements and expressive requirements. A statement (or function) may compile cleanly and yet read as complete gibberish to a human trying to understand what this piece of code actually does; similarly, an e-mail may read as though it says something useful, yet impart no actual information. We all see examples of these phenomena every day when we write code for a living.

      --
      No folly is more costly than the folly of intolerant idealism. - Winston Churchill
    2. Re:It's not the math ... by Anonymous Coward · · Score: 2, Insightful

      You may try to write off this guy as anal. However, if you mix up your grammar on the job, I'll see you as a moron. Therefore, I'll give you the crappy assignments. Sorry, that is just the way it is. How can I trust you with a computer language when you can't even master the one you grew up with?

    3. Re:It's not the math ... by tomhudson · · Score: 2
      While a space elevator to the ground probably isn't doable, one that doesn't reach down to the troposphere could be. At which point asteroid colonies begin to look a bit more feasible.

      A space elevator for the moon would only require the same tensile strength as kevlar, and one for Mars would be doable at the limits of current technology if it weren't for Phobos getting in the way every 8 hours..

      So the best way to get an Earth space elevator (or anything else) is to get your materials from the moon, from the lunar space elevator, rather than boosting them up Earth's gravity well.

    4. Re:It's not the math ... by thisnamestoolong · · Score: 4, Insightful

      Let's eat, grandpa!
      Let's eat grandpa!

      Grammar: it saves lives.

      --
      To the haters: You can't win. If you mod me down, I shall become more powerful than you could possibly imagine
    5. Re:It's not the math ... by CptNerd · · Score: 2

      When I was in high school (in the early 70's, admittedly the dark ages) I learned how to parse sentences in two different classes: English and Latin. Learning how to parse a sentence to extract and identify the pieces was a skill that paid off when I had to learn about parsers and compilers in college. I agree that language skills are vital to practical software development, not just from the technical standpoint of writing logical software, but also from the political standpoint of understanding the requirements that the user expects the software to meet.

      --
      By the taping of my glasses, something geeky this way passes
    6. Re:It's not the math ... by tomhudson · · Score: 2
      I'd like to emphasize that both mathematics and language are used to communicate. Numbers don't "exist" by themselves. We're the ones who add multiple meanings to the number 42, for example.

      Look at the way we invented the number zero. There's no ready analog in the natural world. We can point out the first, second, third, ... apples in a row, but not the zeroeth one, and say "that is apple number zero".

      It's one reason we don't use roman numerals for math - no zero (they wrote nullus instead) - and why it was replaced with hindu-arabic numbers.

      Even back when we were learning to count on our fingers, we used numbers (or digits) to communicate more than just an abstract concept - we instinctively associate numbers with the objects they represent when we communicate with math. X dollars @ YY.ZZ per hour for an hourly wage, for example. We expect to be paid in dollars, not the abstract number behind it (though fiat currency and the fed are doing their best to change that :-)

    7. Re:It's not the math ... by demonlapin · · Score: 2

      That's just punctuation. Try capitalization:
      I had to help my uncle Jack off a horse.

    8. Re:It's not the math ... by Anonymous Coward · · Score: 2, Funny

      You're right. We never would've made it through the winter without eating grandpa. Wait. Without eating, grandpa. Wait. No. It was one of those. Can't remember which.

    9. Re:It's not the math ... by delphi125 · · Score: 2

      There's no ready analog (to zero) in the natural world.

      None?

  4. linear algebra by aahpandasrun · · Score: 2

    I could understand CS majors being required to take linear algebra, but Calculus and Calculus 2? It's a waste of credits for the most part.

    1. Re:linear algebra by hedwards · · Score: 2

      All the schools I've ever been to require students to take calc 1 & 2 in order to get to linear algebra. Plus, you don't typically see series and sequences until calc 3, and those are probably the most useful portion of calculus for programmers. You don't see it until then because they typically want you to have an understanding of what exactly it is that you're doing.

      Differential equations is probably not a bad thing to have under the belt either, depending upon what exactly it is that you're wanting to program. Besides, aren't computer scientists supposed to be more than glorified programmers?

      And it's really not a waste, unless you fail to learn the conceptual basis for it. A lot of it is useful in terms of informing a person's way of looking at the world. Calculus itself is considered a freshman level series at most colleges and most other sciences require it as a condition of graduation. Sure if you focus on the calculations I'm sure it isn't terribly useful, but it does contribute towards ones understanding of how to model things mathematically.

    2. Re:linear algebra by phantomfive · · Score: 3, Insightful

      Try understanding neural networks without understanding calculus. You can become a code monkey without it, but there are areas of computer science that will be beyond your grasp if you don't understand calculus (and statistics).

      --
      "First they came for the slanderers and i said nothing."
    3. Re:linear algebra by RzUpAnmsCwrds · · Score: 5, Insightful

      Try understanding neural networks without understanding calculus. You can become a code monkey without it, but there are areas of computer science that will be beyond your grasp if you don't understand calculus (and statistics).

      There is always going to be the some aspect of CS that's beyond your grasp, no matter what you take.

      As someone who just graduated from a 4-year CS program and is about to get an MS in CS, and as someone who is a paid researcher on a major CS research grant, let me say this: CS is much broader than most people think.

      Anyone who says that CS is just about the theory of computation has a very narrow view of CS. There's a sort of bullshit 'purity' argument that anything else should be put into another category like programming or computer engineering.

      Some topics are easy to categorize. Design methodologies? Software engineering. CPU design? Computer engineering.

      But then there are topics that defy classification. Is compiler design a CS topic, or is it CE? It's probably both. Is static verification a CS topic or a SWE topic? Both.

      And then there are topics that obviously belong (at least partially) in CS but often have very little to do with computational theory. Computer vision, natural language processing, network theory, and quite a bit more.

      If you limit CS to just algorithms and the theory of computation, students get a very limited view of what's out there. I would argue that students should have a good idea of how real computer systems work, how operating systems are designed, how network systems communicate, and how software is designed and built. None of these topics fit neatly and entirely under the "CS" banner, but that doesn't mean that they aren't important and it doesn't mean that there is not legitimate and ongoing research in those fields.

      There is no getting away from the fact that most need to be able to write code after graduating from a CS program. Even in the academic community, most positions involve quite a bit of coding. There are a very few positions where academics can focus on the theory all day long. For most projects, though, publishable results depends on producing a working system, and that means writing code.

  5. Some Math is Good by shawnhcorey · · Score: 5, Interesting

    I don't know about calculus but doing formal proofs help me in learning programming because they are, in essence, the same thing. In a formal proof, you break down a problem into simple steps and state the authority for each. It is similar to programming. So some math is good.

    --
    Don't stop where the ink does.
    1. Re:Some Math is Good by thenextstevejobs · · Score: 2

      I don't know about calculus but doing formal proofs.

      Thank you.

      As someone who went through a very "theoretical" CS program at a top 20, I am certain I was forced to spend WAY too much time doing calculus instead of exploring other areas of math. The core tenets of it are very important, but putting everyone through class after class of multi-var blah blah is just a waste of time. Most students didn't get a chance to take analysis or anything that would teach them about WHY the shit works or what the theory or point of it was. We just had to do course after course of symbolic manipulation that none of us would ever use.

      More discreet math, more graph theory, more analysis, more formal proofs, more whatever else I never got a chance to explore, less calculus.

      --
      Long live the BSD license
    2. Re:Some Math is Good by martin-boundary · · Score: 2
      For example, calculus lets you do sums (*), and sums crop up whenever there is repetition or recursion, which is pretty much all over the place in CS.

      (*) The Euler Summation Formula converts a sum into an approximate integral, or an integral into an approximate sum.

  6. oh, this again.... by mevets · · Score: 2

    There is nothing distinguishing about any of the examples noted; nor worth any study. I don't deny that the mathematics::programming link of overstressed.
    Seems the problems are more rooted in basic experience. Many arts understand that imitate comes before create; despite the whining of the student/apprentices. While programming isn't quite an Art, its practice is close enough to deserve a different approach from the basic sciences.

    Certainly the root of all evil is falling into the buzz-trap where studying and instance of a technology (java, cloud computing, multi-core(wtf?)) takes the place of learning something worthwhile, like planning, design, debugging.

    bah, get off my lawn.

  7. CS is mathematics by bkmoore · · Score: 2

    Once upon a time, CS was a field within applied mathematics. In my opinion, CS still is. The problem is most people who major in CS, especially at the Bachelor level, will likely end up become programmers once they graduate and won't be actual "computer scientists" per se. In most other engineering fields, there is a differentiation between mechanics, machinists, technicians, engineers etc. Most people wouldn't hire a mechanical engineer to do machine and tool making, or a civil engineer to dig holes, unless he was also so qualified. One alternative is for universities to have separate tracts for applied programmers and students who are more interested in the theoretical end of CS. I don't think you need to be a mathematician to implement most programming ideas, but you do need to be very well versed in mathematics to know how to find optimal solutions or design software to solve unique problems for which there is no simple recipe. Disclaimer, I am not a CS major. It is only my opinion from the outside.

    1. Re:CS is mathematics by sydneyfong · · Score: 2

      Most people wouldn't hire a mechanical engineer to do machine and tool making, or a civil engineer to dig holes, unless he was also so qualified. One alternative is for universities to have separate tracts for applied programmers and students who are more interested in the theoretical end of CS.

      Sidetracking a little, I just read a rant (allegedly) from a late Japanese engineer specializing in nuclear facilities who died in 1990s. He complained that the engineers who drew the designs were oblivious to the mistakes the technicians would make on the ground -- loose screws, poorly fitted parts, etc. that would lead to nuclear disasters like the one Japan might be having now.

      And I believe this is what would happen if "CS" people simply designed systems and left the implementation to "programmers". And computer systems are usually much, much more complicated than most physical, mechanical systems. Which is why sane companies hire top "CS" talent to write code as a programmer, instead outsourcing it to code-monkeys. The implementation matters, and those who thought otherwise were punished by products that turned out to be crap.

      My personal experience is that even at the design, architectural level, there's not a real need for actual maths in software development. People with good maths are generally better at relevant things such as logic, identifying solvable subproblems, etc. but the actual maths is not generally used. Where I do see a lot of maths is in academic CS papers, where proofs of optimality require those maths (some of those proofs are rather spectacular displays of maths, or so I've heard... I've never been good/interested enough in maths to drill into these things). But going heavy on maths just to train people to publish academic CS papers seems to be rather.... missing the whole picture.

      --
      Don't quote me on this.
  8. consider the source by phantomfive · · Score: 2, Insightful

    So, the professor, Brad Vander Zanden, appears to be a professor at the University of Tennessee. Great, it seems to be an ok school; it's a top 50 public school, and a top 100 overall US school. That's a respectable ranking. He even has something of a research page. However (and I don't live anywhere near there so I don't have personal experience, and things could have changed since this list was compiled), their computer science program is ranked rather low, so I don't know if he's all that great an authority.

    Here's my opinion (disclaimer: please don't trust my opinion, a random guy on slashdot, either): basically, if you know math, you will use it. You don't need it; you will still find a way to survive in the software world without knowing math, but math will open many doors for you. Would you really want to be shut out from understanding computer graphics, understanding artificial intelligence, and algorithmic complexity? That's just in computers, if you close your mind to math you'll be closing your mind to understanding the way the physical world works, too. You'll be losing the logical/mental discipline that comes from understanding math. Why would you want to give up all that, and try to live as a code monkey?

    --
    "First they came for the slanderers and i said nothing."
  9. It's called computer SCIENCE by Missing.Matter · · Score: 3, Insightful

    I have seen many outstanding programmers who struggled with calculus and never really got it.

    That's because computer science is not programming. You won't find an outstanding computer scientist who doesn't have a solid mathematical background. The theory of computation and the basis for all we do is entirely based in math, and therefore understanding math is essential and inseparable to understanding computer science.

    our students are overwhelmingly seeking careers in which they apply computer science.'

    If you're looking to be a vocational institution, by all means, drop the math and train your students to be code monkeys. Yes, train, not teach, because teaching them would consist of providing them with a solid mathematical foundation on which to base their careers.

    And it's patently false that applications of computer science do not require math. In my field, robotics, I do a lot of programming, but I do just as much theoretical work to understand the algorithms I'm using, and to develop new ones. Linear algebra, statistics, convex optimization.... these are all mathematical topics I use regularly, and I couldn't function without. Cutting topics like these not only take the Science out of CS, but the true value from the education itself.

  10. Different Definitions by pz · · Score: 5, Insightful

    I have seen many outstanding programmers who struggled with calculus and never really got it.

    The summary is not absolutely clear on who makes this statement, but the article attributes it to "a professor". I don't know where this professor works, but the outstanding programmers I know can all do calculus in their sleep. Not all programmers, or even all good programmers, but the outstanding ones. It isn't about continuous versus discrete, which is a complete and utter red herring, but the ability to think abstractly. Hell the best programmer I know is a pure theoretical mathematician: his code is always beautiful, clear, easy to maintain, and, imporantantly, correct; he's prolific to boot. But he's an outstanding programmer. I know plenty of work-a-day programmers who are not outstanding, and whom I would suspect would have problems with integration by parts.

    Based in part on my differing experience, I posit that the quoted professor does not work at a high-end institution where really outstanding programmers are likely to be found. This opinion is bolstered by the observation that discrete mathematics (the Z transform, difference equations, discrete Fourier transforms, and the like) and continuous mathematics really are not that different if taught properly. If an individual can't master continuous and discrete mathematics, then they are not going to be an outstanding programmer, because they can't think sufficiently abstractly.

    Outstanding programmers can do system architecture, data structure design, algorithmic development. No one who can design and understand a Fibonacci heap is going to have problems with dx/dt.

    --

    Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
    1. Re:Different Definitions by gront · · Score: 2

      And think about post calculus math: Linear algebra... gotta know what those array things are and how to deal with them; probability and statistics are also very useful in programming. Sure, a code warrior may not need to know differential equations or vector calc to design a UI, but advanced code design and the "science" part require math. Oh, and the secret of calculus? Calc 1: figuring out the instantaneous rate of change of an equation and the minimums and maximums. Calc 2: the area under a curve. Calc 3: the volume of a curved object.

    2. Re:Different Definitions by syousef · · Score: 2

      I have seen many outstanding programmers who struggled with calculus and never really got it.

      The summary is not absolutely clear on who makes this statement, but the article attributes it to "a professor". I don't know where this professor works, but the outstanding programmers I know can all do calculus in their sleep. Not all programmers, or even all good programmers, but the outstanding ones. .

      Well if you phrase things like that I can't argue with that because the definition of a great programmer vs a very good one is subjective and you can always shift the goal posts. However I can say without doubt that there are famous and noteworthy programmers that aren't mathematically inclined, and that many of them would be rusty on Calculus even if they were able to do it very well at some point. I don't consider myself outstanding in the sense you describe, but I do know that while Calculus doesn't scare me and I could pick it up and even teach it (and have even coded the Runge–Kutta method for a university project), right at this point in my life I would need to brush up first.

      --
      These posts express my own personal views, not those of my employer
    3. Re:Different Definitions by AEC216 · · Score: 2

      I always saw the math curriculum as a weed out tool for a CS degree. If you don't have the aptitude/want to systematically solving math problems, maybe it's time to re-think the CS degree.

      --
      May I please have my frontal lobotomy if I bring back the ashtrays?
  11. Re:I agree.. less math by mgbastard · · Score: 2

    I would submit the math requirements are common in the core requirements of any Bachelor of Sciences degree, rather than specific to a Computer Science major.

    If you don't want to master basic college-level math to earn a sciences degree, then perhaps you should be lobbying academics to offer a Bachelor of Arts with a Applications Development major instead.

    --
    Anyone seen my low uid? last seen 10 years ago while panning the #@$# out of Taco's 'web based discussion system'
  12. I went for artificial intelligence by holophrastic · · Score: 4, Interesting

    University through AI had me taking computer courses -- which sounded like fun, since I was a computer guy all my life. It would have taken four years before even getting to an AI course, because of all the math courses along the way. I don't care what you say, when I walk through a room, my brain doesn't do any calculus to avoid walking into the desk. It just doesn't. But AI in CS said "calculus is the fastest way to approximate natural path finding".

    So I left, and switched to psychology, where AI is called cognitive modelling.

    The first day said "the goal is to model things after natural processes, if it takes ten days for the computer program to walk through the room, but it does so naturally, computers will be faster next year."

    The third day of the course was to write a neural network in LISP -- oh, and to also learn LISP from scratch -- to solve a real-world decision-making problem. We had two weeks to complete the assignment.

    Neural networks are fun, by the way. And ten years later, when I wrote an on-line ticketing program that needed to choose the best way to apply multiple coupons to multiple purchases (in a self-serve kiosk application), brute-force computation did it in 60 seconds, competent programming did it in 10 seconds, pre-computing did it in too much memory for the device, a neural network did it in 50 milliseconds. My client was very happy -- and never knew.

  13. The maths are scary! by Brandybuck · · Score: 2

    I used to think that too, until week before last. I'm a literature major who couldn't make it past second semester calculus. Until week before last I never needed to do any math in programming beyond arithmetic.

    Then I landed on a project involving OpenGL. There's a heck of a lot of math there, and a lot of math/graphics jargon. What makes it even more frustrating are all the tutorials for beginners that assume you've majored in math and never bother explaining homogeneous coordinates, frustrums, etc. Almost as annoying as they're assuming you already know the syntax to glsl. I am good at geometry, and could write very complicated POVray models, but OpenGL has been kicking my butt due to my lack of linear maths.

    --
    Don't blame me, I didn't vote for either of them!
  14. Applied software engineering programs by idealego · · Score: 4, Insightful

    I started a Bachelor's in computer science and switched to an applied software engineering program. It's much less math, and the average course is far more useful in the real world. All the employers I've talked to so far have said that they prefer hiring out of the applied program because the students are ready to start working and have a broader range of skills.

    As many have already pointed out, computer science != programming.

    What we need is more schools that offer applied programming programs for those who want to become programmers and not computer scientists. And more students need to learn the differences between them and which one they want.

    1. Re:Applied software engineering programs by nate+nice · · Score: 2

      Almost every MIS we've hired has turned out to be an idiot who you can't rely on to do something they haven't been explicitly trained for. I only hire CS degrees or Math degrees. I care that my workers are smart and can learn hard things quickly. I have to pay them more but they're worth it.

      So I disagree with you. We don't need more applied programs because we have plenty. The fact that someone goes to school for 4 years to learn programming hilarious. Programming is supposed to be a 1 or 2 semester course and something you can pick up on your own because syntax and semantics aren't difficult. I want someone who can do some Lisp or ML since those are actually applied now in .Net even with Linq. I want people who understand what their algorithms are actually doing. I want people with analytic minds that can solve problems that are difficult and unfamiliar.

      The big drawback many CS degrees have is their lack of general business skills. They don't always understand business concepts. But I'd rather have to teach that then have to explain things to a developer who doesn't know how to figure things out and do them right the first time.

      --
      "If you are a dreamer, a wisher, a liar, A hope-er, a pray-er, a magic bean buyer ..."
    2. Re:Applied software engineering programs by danlip · · Score: 2

      I wouldn't want to fly in a plane built by an engineer that didn't know physics, and I wouldn't want to run software written by a programmer that didn't know computer science. Both are possible, but tend to end badly.

  15. Do you want a university or a trade school? by jmcbain · · Score: 4, Insightful

    I think a better question is: Do these professors think their college should be an institution of higher learning or a trade school? (Disclaimer: I got a PhD from a top-20 university.)

    Let me make a few points:

    First, while it's true that numerical math is not used in many CS areas, discrete math is. Logic, set operations, and the like are used pervasively in CS. And learning numerical math is a core breadth area that instills mental discipline. Quite frankly, if math is not your strong point, then you should consider moving out of CS.

    Second, the role of a university CS undergraduate curriculum is not to teach "cloud computing or multi-core systems or software engineering". It's to teach core CS topics. It's like like suggesting that a mechanical engineering student should be taught how to fix the engine of a Ford Mustang or that an electrical engineering student should be taught how to install video cards into a PC.

    Let me make this clear: Any "hot topic" CS subject you teach in a university will be outdated in a few years, quite possibly between the student's freshman and senior year. This includes "cloud computing" and "multi-core systems". Back in my day, the hot topics du jour were ATM networking and grid computing, but fortunately I went to a good university that focused on core topics.

    What's the difference, you ask? Here are you go:

    Hot topic: cloud computing
    Core CS topics: distributed systems, distributed algorithms, operating systems

    Hot topic: programming in C#
    Core CS topic: programming language structure, compilers, automata theory

    Hot topic: multi-core systems
    Core CS topic: computer architecture (x86, for example), instruction sets, digital systems

    Hot topic: writing video games
    Core CS topics: graphics, linear algebra, digital image processing

    Learning math and these CS core topics allows students to learn new skills in the future. Case-in-point: Recently I have been working in a new area: machine learning algorithms (SVMs, bayesian inferencing, etc.). The importance of this area has grown in the Google-era and was not widely regarded when I was an undergraduate. My fundamental knowledge in mathematics is serving me well right now.

    Finally, the professors quoted in the article are from U. of Tennessee and SMU, which are like 4th-tier universities. So don't take their word too seriously.

    1. Re:Do you want a university or a trade school? by Jane+Q.+Public · · Score: 5, Informative

      "It's like like suggesting that a mechanical engineering student should be taught how to fix the engine of a Ford Mustang or that an electrical engineering student should be taught how to install video cards into a PC."

      No, it's not like that at all, because a mechanical engineer (or most of them anyway) are not going to be working on cars for a living, and electrical engineers are not going to be installing video cards for a living. But CS students are going to be doing mundane programming for a living.

      The problem is that teaching practical, career programming is probably what a Software Engineering program should do. But that is a relatively new degree, and many colleges and universities still rely on Computer Science programs to (supposedly) teach those skills. But for the most part they do not.

      It's all very well and good to say CS is one thing, engineering is another... but until academia fully catches up with that concept, many who intend to go into programming as a career are getting the short end of the stick.

      And no, despite your derogatory comment, Software Engineering is not suitable material for a trade school, any more than Electrical Engineering is.

    2. Re:Do you want a university or a trade school? by Anonymous Coward · · Score: 3, Informative

      You're missing the point. All of the "Core CS Topics" you mentioned in your lists can be learned (deeply and completely) without having a graduate-level understanding of calculus. Basic algebra and boolean logic pretty much covers it, when combined with CS specifics like understanding algorithmic complexity, etc. The divide is between those that write new fundamental algorithms and need the heavy math to do the research, and those that merely engineer with, implement, and use the wide array of readily available algorithms in existing public papers...

    3. Re:Do you want a university or a trade school? by Ghengis+Khak · · Score: 4, Insightful

      Finally, the professors quoted in the article are from U. of Tennessee and SMU, which are like 4th-tier universities. So don't take their word too seriously.

      This comes off as a snobby, ad-hominem cheap shot. You made some strong points in the rest of your comment and I didn't see the need for it. In the interest of full disclosure -- I hold a master's degree (CS) from a top 20 University; working on the PhD.

    4. Re:Do you want a university or a trade school? by demonlapin · · Score: 4, Insightful

      He views education that focuses on practical skills as a trade school. Which, pejorative associations aside, it is. Most professorial types that bop this around would recoil in horror if you described their programs as trade school for academics, although that's precisely what they are.

    5. Re:Do you want a university or a trade school? by chiasmus1 · · Score: 3, Insightful

      Yes, but I believe the argument was basically about the math courses that really have little importance to Computer Science. Calculus is rarely used in computer science. When professors are asked why it is still in the program, a lot of them will respond with something about "maturity" or something else like that. If you need a lot of math for computer science, that is fine, but shouldn't it be the math that is more common to computer scientists?

    6. Re:Do you want a university or a trade school? by gtall · · Score: 4, Insightful

      With a slightly different spin, it used to be the case that a liberal arts education prepared you for many things precisely because it taught you how to think for yourself in several different areas. Find a job in an area you are not an expert in? You will have the skills necessary to learn it. This is completely beyond the ken of most HR departments in companies. Brain-dead companies who think schools are cookie cutters, you must have the right bumps and curves to fit into their industrial machine. And the result is stagnant companies whose Business School Product running them figure their best way to retire early is to ship the company to China and pad out that retirement package.

      In concert with this are several social trends. Schools of Education which focus on making Johnny/Sally feel "empowered" with ill-deserved self-esteem rather than taught. Parents who think Johnny/Sally go to school to free them for their two-career lifestyle. Parents who cannot turn off the damn TV and mind-numbing video games since it keeps the little bastards occupied rather than taking an active interest in their education while they are at home. A Hollywood which glorifies the dumb-ass but lovable schmuck who can get a laugh, rap his/her way via a hip-hop philosophy that says get yer ya-yas NOW, forget about actually working for an intellectual attainment that will make you a step above your peers. There's a commercial for a furniture company in my area which uses a rock song with the refrain "I want it all, I want it now, usw". That's the anthem we've taught our kids, you deserve to have it all, right now, no hard work, no paying your dues, you can get it just by demanding it.

      It is amazing any kid makes it through the hurdles adults put in their place to actually learn to think for themselves. Science competitions are petering out because parents are too stupid to demand achievement because, G-d forbid, Johnny/Sally might fail. Johnny thinks his ticket to success is the NBA and NFL because he's never been taught statistics and what that says about his odds for coming out on top...presuming he gets no career-ending injury.

      So when I hear comments to the effect of computer science "students" do not need math, I'm horrified we are bringing up a generation of intellectually sclerotic brats who will never be competent to go up against the kids China, Taiwan, Korea, Japan, usw, are generating.

    7. Re:Do you want a university or a trade school? by SatanicPuppy · · Score: 3, Insightful

      I am so tired of people saying, "Well you have to have math because you have to have logic." Logic is separate from math, and math is largely concerned with inductive logic...You know, the kind you never use in CS? In all the math I've had in my life, the only kind that had deductive proofs of the sort that resemble programming logic, was 10th grade geometry. I started CS via Cognitive Science, which is largely Philosophy. I had more, and more relevant, logic courses in Philosophy than in CS or math, and it gave me a huge edge in programming over my math-centric peers.

      I've been in the field for 15 years, and I've never used a single thing from advanced math. I used some pre-calculus once, to figure out how much air conditioner I needed for a server room. I had to take 3 semesters of physics too. What the hell was that about? At the same time, I only had a single course in network theory, and it was obscenely general, with LANs mashed up together with the sort of latency issues you'd only run into if you were networking satellites.

      I agree as far as teaching theory...That's all I was ever taught, and it's served me well. But advanced math isn't useful for the vast majority of CS majors.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    8. Re:Do you want a university or a trade school? by NoOneInParticular · · Score: 2

      I don't think that Numerical Analysis is that central in a CS education. It usually is there to convince the students that all the assumptions that they have learned in calculus (e.g., that the real numbers exist) is false when dealing with computers. So why first teach them something they don't need, then teach them that this doesn't work in practice, and then ways to get around it, finally ending up with methods to solve problems they will not face in practice? Can't we just teach them directly what they need to know: floating point, fixed point, rational numbers, arbitrary precision, and when to use what? Where does calculus come in?

    9. Re:Do you want a university or a trade school? by metlin · · Score: 2

      As an adult math major (dual emphasis in CS and actuarial science), I suspect you wouldn't know hard core stats if it bit you on the ass. Most service courses at the graduate level (yes, I had a previous career in academia working with grad students) they teach you just enough to get your resident statistician to feel sorry for you, pat you on the head, ask for your parameters, fix your fucked up model and/or experiment, and walk away shaking their head.

      I hold an undergraduate in electrical engineering and a master's in computer science -- and I do data analytics for a living.

      So, I'd suspect that I probably know more about stats and their real world application across a plethora of fields (engineering, marketing, political research, economics) than you ever will.

  16. Computer science as an academic discipline by LambdaWolf · · Score: 2

    Dennis Frailey makes a distinction between CS research and applied CS: 'For too long, we have taught computer science as an academic discipline (as though all of our students will go on to get PhDs and then become CS faculty members) even though for most of us, our students are overwhelmingly seeking careers in which they apply computer science.'

    I get that the extent of math necessary in computer science is an open question and I won't pretend to have an answer to it, but challenging the presence of math, and the academic approach in general, in a university setting bothers me. Of course computer science ought to be taught as an academic discipline in an academic setting. Who cares if students will use it in their careers? The whole point of a university is to study academic disciplines—maybe you intend to apply them and maybe you don't, but either way they are considered worthy of pursuit for their own sake. And that goes not just for computer science (assuming that's your major) but for math, science, and humanities as well.

    If you just want to get a job as a programmer without learning all that theoretical stuff, skip the university altogether and just buy a book, or go study at a technical college. Now, you might have a really hard time getting hired without that bachelor's degree, and that does indeed suck, but that's the fault of the labor economy—it's not fair to ask universities to change their philosophy to accommodate corporate culture.

    --
    "This algorithm runs in constant time. Come on, 2,147,483,648 is a constant..."
  17. Dynamic programming by Sits · · Score: 2

    Sigh. My previous comment was horribly garbled. What I meant to say is - did you test a dynamic programming solution too? It sounds like the sort of problem that such a technique would do well at (but perhaps it would run into the same problems as pre-computation).

    1. Re:Dynamic programming by holophrastic · · Score: 2

      The problems I tend to encounter that require advanced computer programming haven't found dynamic programming to be useful. Here's why.

      Dynamic programming winds up being a mathematical technique to a CS problem. Math techniques are notorious -- in my world -- for requiring clearly bounded problem spaces. Specifically where a complex problem is complex because it has many subproblems. In my business world, a problem is complex because it does not have distinct subproblems (overlapping or otherwise). In math, being able to separate a conglomorate of subproblems is effortful -- because equasions don't do that. In CS, it's the opposite. Any programmer who can see the hundred subproblems to a problem can program 100 algorithms.

      In this particular case, from 10 years ago, I'll get into more detail.

      You can buy a single adult admission ticket, or two single adults, or an adult and a child, or a couple's ticket, or a family of two adults and two children. Each is a different price. Also, you can have coupons. $s off, % off, % off an adult ticket, % off a couples, $s off a couple. Each is a different amount. Where the math fails is when I say that every day there are a different set of tickets and a different set of coupons and you can purchase any number of tickets and use any number of coupons. It turned out that the humans at the box office couldn't reliably figure out the best way to apply three coupons to four tickets to save the customer the most money.

      Unlike most dynamic programming problem spaces, in this case, the subproblems don't just overlap, they interact -- and they interact completely. Brute-force has an enormous number of permutations to calculate in the event of 4 tickets and 2 coupons. pre-computing has even more since there are 50 tickets and 50 coupons to consider.

  18. Less math limits job opportunities by perpenso · · Score: 2

    I don't get why I had to learn all the math in university. I agree some math is useful, but I have never in my 10 years working applied any of the advanced stuff, nor found learning it helpful.

    And some other grad from your class will tell a completely different story. My first job was pure tech, embedded kernel software. My second job was molecular modeling. If I did not have the math (which I too never expected to use) I would not have been qualified for that job. Also, later when I went to business school I used more advanced math in marketing classes than I ever did in computer science (again, I never expected this).

    So basically the CS program is preparing your for more advanced jobs, a wider range of opportunities. The fact that some members of your class never go for such jobs (and you may not be one of those, perhaps your next job will use the math) is no reason to drop math from the CS program.

  19. then they're software engineers by Annymouse+Cowherd · · Score: 4, Insightful

    Software engineering and computer science are two entirely different fields. I don't know why they're combined so often.

  20. Is any discussion ever on topic? by h00manist · · Score: 3, Insightful

    I'm not one to nitpick, but increasingly I find that nearly every single post on a story is off topic. There are hardly any posts about the topic itself. Joking is great, humor is great, side notes are great, but when on-topic stuff becomes under 10% of the comments, well... many repetitive comments about spelling, duplicates, personal attacks...

    --
    Build your own energy sources from scratch. http://otherpower.com/
  21. Real CS people need more continuous math than ever by Animats · · Score: 2

    CS is more about continuous math than ever.

    Until the mid-1980s, computer science was mostly about discrete mathematics. Knuth is heavy on combinatorial and clever integer math. Mathematical logic and proof of correctness were big. I went through Stanford CS for a Masters in the mid-1980s, and and never had any class that required serious number-crunching.

    But now it's completely different. Graphics, game programming, machine learning, robotics, control, audio and video processing, and even finance all involve heavy number-crunching. Differential equations come up everywhere. Statistics is far more important, and there have been major developments in the theory of statistics. (Much classic statistics assumes you're limited on compute power; that's why "least squares" methods were so popular once. Now there are better techniques, ones much better at handling outliers.) As a result, AI is working much better than it did during the "expert system" and "AI Winter" eras.

    Basic calculus is not advanced math. Calculus is just what gets you to entry level so you can learn real math. Real people use this stuff. Last year I took a course at Hacker Dojo on machine learning, taught by a quant from Blackstone Capital using the Stanford course materials. They assumed everyone had a thorough knowledge of calculus. I'm not a "math person", nor an academic, but that's the price of staying active in this industry.

    If you just want an "IT" degree, you may not need much math. The math parts will be bought with the package you install and administer. But in that case, you're probably better off getting a degree in business administration with some extra IT courses.

  22. Ah but you are touching on another debate by bussdriver · · Score: 2

    Most people are job seekers and college is just a hoop to jump through in that pursuit - I've run into plenty of people without passion for their subject of study; they are there for the job they want (influenced by the pay, stability, and misconceptions of what that job will be to them.)

    Industry only ever cares about the bottom line; human resources are just another form of resource with some PR risks attached to it-- but otherwise quite removed from humanity. They pressure universities along with their drones to train workers... even complaining about graduates as not knowing enough of the buzzwords they are looking for (which is not the purpose of universities.)

    3 Aspects are going on from what I see:

    1) Trade school lacks prestige (pay) over college so the 'market' demand is for a university level prestige in a trade school.

    2) Business philosophy(religion?) permeating all aspects of the culture. If you run a school with a business mindset you are going to rip it from its foundation. My university is in a culture war not inside the institution but inside the minds of its staff. Words like I.P. gain acceptance and warp perspectives. "Producing students", employers as the "indirect customer", and students as a "customer" are changing perspective as well as shunning those who stick to the traditional perspective that brought the world forward up to now.

    3) Society bias for college. not having a degree is becoming as bad as being functionally illiterate. My former employer had no degrees in the building except mine yet even hiring a RECEPTIONIST they'd chuck out the applicants without a degree (in this economy they get a lot of applicants.) Nobody working there could be hired for their own position these days.

    I create waves with staff when I argue the college model is not even good for programmers or even software engineering. IT as well. Those jobs are more like carpentry or plumbing and should have a better suited model. This is largely misunderstood and hopeless but i keep making the point hoping they at least get what i'm saying. I have a carpenter and a plumber uncle- there is a ton of experience involved but no PhD program for them-- they are masters of their field which is every bit as much (in some cases more so) as most PhD degrees. In their career, a degree wouldn't mean much because you can't book learn it all classrooms over a few years. It uses other kinds of learning and thinking. Our schools too often focus on 1 approach as if there is only 1 way to think about EVERYTHING; research shows there are different ways of thinking, different kinds of intelligence, and different learning styles. I've seen plenty of good students who are "smart" because they can navigate a system that happens to be suited to them but who can not function outside; they often go into academia -- not because they suck, they are great - but because it best suits their talents... this however results in a cycle of like minded people concentrated in an institution which is part of their own identity and therefore must retain the characteristics which were so beneficial to themselves (for the self-centered ones; not all are like this - others merely fail to see...sheltered and have a culture-shock reaction to alternatives.)

  23. Graphics is only part of video games by perpenso · · Score: 3, Insightful

    Hot topic: writing video games
    Core CS topics: graphics, linear algebra, digital image processing

    FWIW. Graphics is only part of video game development. Most of the time the graphics is largely "outsourced" by licensing a graphics engine. Other parts of game development are in the areas of artificial intelligence, networking, databases, human/computer interaction, etc. Hovering over everything is data structures and design/analysis of algorithms, this is where so many things go wrong. Toss in a good understanding of architecture and compilers. The core CS topics necessary for developing a modern AAA game is pretty comprehensive.

    Many aspiring to work in game development limit their chances to do so by focusing only on the graphics. Just as many interested in computer programming limit their opportunities by avoiding the advanced math. I will admit that in many of my jobs I did not need the math, however to my surprise I've had job opportunities that did require having had the advanced math classes. Not that I was doing much of the math myself but I needed to understand and communicate with the actual mathematicians. I've had to dig out those textbooks from that "extra" second year of math to implement some algorithms.

  24. Computer Science != Being a Programmer by Gavin+Scott · · Score: 3, Insightful

    I think the distinction between pure "research grade" CS and applied "I want to get a job in the real world" CS is the important thing.

    For too long it has seemed as though if you like computers then you should aspire to a CS degree. But as everyone finds out, the stuff you learn in a real in-depth CS program is often not applicable to much in the world of interesting application development. The stuff that IS could just as easily be taught in a more applied way without all the math.

    We're supposed to be leveraging "re-use" and not re-inventing algorithms every time, so people should be able to use a library of algorithm objects (or whatever) for pretty much ALL applied programming, at which point all you have to understand is the trade-offs between different available choices and what they do but not necessarily how they do it or especially how to invent a better one.

    I think of "real" CS as what you find in Knuth. If you want to publish papers on combinatorial algorithms then you probably want at least a master's in math before you even get started with the computer stuff. You will then aspire to getting a job as a CS professor, or possibly working in a corporate sponsored lab for IBM or maybe Google. But the things this type of scientist does may not be the kinds of things that actually got people excited about computing to begin with.

    If what you really want to do is to build cool applications and Change The World(tm) then honestly hardly ANY math is needed, and while more knowledge and a better understanding of the fundamentals of what's going on will always make you better, there might be more effective and efficient things to expend your effort on, especially in cross-discipline areas that interest you and which you would like to work in.

    Pure CS is really just pure math, and there are a limited number of applications (and jobs) in such a thing. What really makes computers interesting is their applications, so instead of CS, why not learn applied programming plus an application domain like Biology, Finance, etc. Ask yourself "what problems do I want to solve?" and if computing is going to be a tool to that end and not just an end unto itself, then a pure CS degree is probably a waste of effort.

    G.

    1. Re:Computer Science != Being a Programmer by SnapShot · · Score: 3, Interesting

      Agreed. But, lacking specific domain knowledge, in the real world, I've had about 20 times where I wished I had a design and/or art degree for every time I wished I knew higher level math. Sure, I'm never going to refine a sort algorithm or build an unbreakable cryptographic algorithm but my users are more likely to appreciate a UI that is intuitive and appealing.

      --
      Waltz, nymph, for quick jigs vex Bud.
  25. Hah! by woolio · · Score: 2

    First, while it's true that numerical math is not used in many CS areas, discrete math is. Logic, set operations, and the like are used pervasively in CS. And learning numerical math is a core breadth area that instills mental discipline. Quite frankly, if math is not your strong point, then you should consider moving out of CS.

    Are you kidding?

    I was in a PhD program in Electrical Engineering at a top-10 university [not trying to start a pissing contest here]. Quite frankly, I had a much better opinion of CS until I started taking a lot of graduate-level CS courses there.

    Saying CS people do a lot of math is like saying a bank teller or cashier does math all day.

    I found undergrad and graduate CS students alike would go running for the hills as soon as someone said the words 'integral' or 'derivative' . Random processes and statistics were avoided.

    Most 'numerically' focused papers/research was focused about speeding up raw calculations (such as matrix multiplication) without any understanding of the application and without any critical examination of the possibility for lowering complexity through close approximation, transforms, etc...

    Many papers (especially related to CPU/compiler performance don't even average measurements properly). Even the industry-standard 'SPEC' CPU benchmarks use the wrong type of averaging which leads to incorrect results -- in some cases a faster computer (which completes all benchmarks faster than a slower computer) can have a *worse* score than the slower computer].

    Computer architecture and programming are fine things to learn, but they are not enough in themselves. If a person wants to be an architect, they have to know not only about construction but also about design -- art, etc... Likewise, I think too much of CS is focused on either way-to-abstract stuff and/or trade skills without giving students a chance at actually learning something more domain-specific.

    Programmers are a dime a dozen. Decent programmers that truly understand what they are implementing (in a specialized field - engineering, sciences, etc) are very rare.

    1. Re:Hah! by epine · · Score: 3, Insightful

      Even the industry-standard 'SPEC' CPU benchmarks use the wrong type of averaging which leads to incorrect results -- in some cases a faster computer (which completes all benchmarks faster than a slower computer) can have a *worse* score than the slower computer.

      This comment is incomprehensible, on several levels.

      No one who works seriously with benchmarks thinks there's any correct form of averaging that diminishes salt consumption. Benchmarking is inherently a high salt diet. Low sodium, high sucrose benchmarks are known as pie charts.

      There is one form of averaging I dislike more than most: Apple Pie charts, the primary ingredient of which is a carefully selected Photoshop filter whose slices precisely match a particular CPU's scheduling slots, and never denominated in performance/dollar. We know how fundamentally accurate that benchmark was from all the suicides reported among professional Photoshoppers when Apple switched to Intel (none that I can recall).

      Are you trying to imply that the SPEC averaging method has the property that there exits machines x,y such that for all benchmark disciplines b: time[x,b] < time[y,b] yet SPEC[x] > SPEC[y]? That would violate some deep ordering relations, which I've never seen short of fraud.

      If you were implying that sum{b} time[x,b] < sum{b} time [y,b] yet SPEC[x] > SPEC[y], and this is somehow prima facie illegitimate, you need to repeat some stats courses. If machine x scores times (20,45) and machine y scores times (31,31) the arithmetic mean and harmonic mean achieve different rankings. Which mean is the wrong mean? You'll be seeking a course which covers the covariance of principle components, one of several reasons why you can't normalize benchmark disciplines to unit weight over measured scores without the copious addition of salt.

      I'd love to have seen published the processor heat map after running the Apple Pie benchmark suite. That little red spot is the AltiVec unit, which never gets a break. It takes more than a "correct type of averaging" to ensure fair benchmark coverage.

      A good benchmark is one where I look at the numbers and go "that's why I thought, the (pre-Intel) Apple sucks" and the guy beside me goes "yeah, that's what I thought, AltiVec rocks" and we're both right because we filtered our needs and budgets through the numbers presented.

      From a purist perspective, I happen to think than on any CPU ever made, it's inexcusable that time to reverse the bit order of a 64-bit integer is greater than the time to increment a 64-bit integer (whose ripple carry unit subsumes every possible path length, making it's implementation a superset of bit reversal propagation paths).

      I think of that comparison as benchmarking down to the bare wires. Every CPU I can recall fails this basic test all the way back to the SC/MP. Is symmetry of no importance in computer science? It makes me wonder about CS education altogether.

      And don't get me started on popcnt. Not counting either? For shame.

  26. Crappy code is the undoing of Computer Science by ghostunit · · Score: 2

    I dislike this kind of dissing of math in favor of praising a "hands-on" approach to programming.

    I don't know if developing math skills helps with what is mostly a craft such as programming, but I think that encouraging an anti-intellectual atmosphere in the programming community will only lead to an even greater abundance of insultingly crappy code that consumes more effort and causes more frustration than any other factor in the industry.