Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Education Math Programming

CS Profs Debate Role of Math In CS Education 583

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?"
This discussion has been archived. No new comments can be posted.

CS Profs Debate Role of Math In CS Education

Comments Filter:
  • Simple Solution (Score:5, Insightful)

    by ExploHD ( 888637 ) on Saturday March 12, 2011 @02:19PM (#35465070)
    If you don't want math with your computer science, learn computers / networks / shiny jargon at a trade school
  • by Anonymous Coward on Saturday March 12, 2011 @02:22PM (#35465108)

    It's not ./, it's /. you twit.

  • by curril ( 42335 ) on Saturday March 12, 2011 @02:26PM (#35465124)

    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.

  • by $RANDOMLUSER ( 804576 ) on Saturday March 12, 2011 @02:37PM (#35465200)
    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.
  • by phantomfive ( 622387 ) on Saturday March 12, 2011 @02:37PM (#35465202) Journal
    So, the professor, Brad Vander Zanden [utk.edu], 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. [washington.edu]

    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?
  • by Missing.Matter ( 1845576 ) on Saturday March 12, 2011 @02:39PM (#35465212)

    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.

  • Re:linear algebra (Score:4, Insightful)

    by phantomfive ( 622387 ) on Saturday March 12, 2011 @02:39PM (#35465216) Journal
    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).
  • by pz ( 113803 ) on Saturday March 12, 2011 @02:40PM (#35465224) Journal

    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.

  • by Anonymous Coward on Saturday March 12, 2011 @02:41PM (#35465226)

    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?

  • by thisnamestoolong ( 1584383 ) on Saturday March 12, 2011 @02:50PM (#35465282)
    Let's eat, grandpa!
    Let's eat grandpa!

    Grammar: it saves lives.
  • Re:Simple Solution (Score:4, Insightful)

    by Anonymous Coward on Saturday March 12, 2011 @03:06PM (#35465382)

    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!

  • by idealego ( 32141 ) on Saturday March 12, 2011 @03:06PM (#35465384)

    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.

  • by jmcbain ( 1233044 ) on Saturday March 12, 2011 @03:08PM (#35465406)

    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.

  • Re:Simple Solution (Score:5, Insightful)

    by IICV ( 652597 ) on Saturday March 12, 2011 @03:16PM (#35465500)

    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.

  • by Ghengis Khak ( 1967518 ) on Saturday March 12, 2011 @03:31PM (#35465574)

    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.

  • by demonlapin ( 527802 ) on Saturday March 12, 2011 @03:37PM (#35465626) Homepage Journal
    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.
  • by Annymouse Cowherd ( 1037080 ) on Saturday March 12, 2011 @03:37PM (#35465636) Homepage

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

  • by h00manist ( 800926 ) on Saturday March 12, 2011 @03:38PM (#35465646) Journal
    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...
  • by chiasmus1 ( 654565 ) on Saturday March 12, 2011 @03:56PM (#35465776) Homepage
    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?
  • by perpenso ( 1613749 ) on Saturday March 12, 2011 @05:15PM (#35466416)

    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.

  • Re:Simple Solution (Score:3, Insightful)

    by Anonymous Coward on Saturday March 12, 2011 @05:20PM (#35466440)

    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?

  • by Gavin Scott ( 15916 ) on Saturday March 12, 2011 @05:25PM (#35466478)

    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.

  • by gtall ( 79522 ) on Saturday March 12, 2011 @06:51PM (#35467090)

    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.

  • Re:linear algebra (Score:5, Insightful)

    by RzUpAnmsCwrds ( 262647 ) on Saturday March 12, 2011 @06:56PM (#35467126)

    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.

  • Re:Hah! (Score:4, Insightful)

    by epine ( 68316 ) on Saturday March 12, 2011 @07:51PM (#35467430)

    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.

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

  • by Anonymous Coward on Sunday March 13, 2011 @04:23AM (#35469550)

    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.

All seems condemned in the long run to approximate a state akin to Gaussian noise. -- James Martin

Working...