Slashdot Mirror


What Math Courses Should We Teach CS Students?

Coryoth asks: "If you're taking computer science then getting as much mathematics as you can is probably a good idea. Ultimately, however, there are only so many math courses you an squeeze in. Given that, what areas of mathematics should we be teaching CS students for maximum benefit? Traditionally university math courses are structured around the needs of the physical sciences and engineering, which means calculus is what gets offered. While a decent calculus course can teach a certain amount of formality in reasoning, wouldn't CS students be better served with a course in mathematical logic and foundations with its greater degree of formal reasoning and obvious connections to fundamental concepts in computer science? Are courses in abstract algebra and graph theory going to be useful to CS students? Should courses in category theory (yes, it applies to computer science) be required of students going on in theoretical computer science? In short — what areas of mathematics are going to be the most useful and most applicable to computer science students? What courses were of the most value to you?"

54 of 392 comments (clear)

  1. It realy doesn't matter by Silver+Sloth · · Score: 3, Insightful

    Whichever branch of maths you follow it encourages logical thought.

    --
    init 11 - for when you need that edge.
    1. Re:It realy doesn't matter by ObsessiveMathsFreak · · Score: 4, Funny
      Whichever branch of maths you follow it encourages logical thought.

      Except for mathematical logic. Those guys leave all semblance of logic at the door.
      --
      May the Maths Be with you!
    2. Re:It realy doesn't matter by NibbleAbit · · Score: 4, Informative

      I am VP of software development at a software company. I hire a lot of recent graduates (and am always looking for more good talent).

      What I look for as a starting point is a solid understanding of how programs work, and enough programming experience that I am not teaching the basics. Experience with both lower level languages (C++) and higher level languages (Java, VB, etc) is required just to get past HR. Also, knowledge of the context (networks, operating systems, databases) is required.

      The above just gets you to the point that HR will really read your resume, and possibly pass it on to me. Once I get a resume, I assume those skills are present. What I look for are things that are more intangible.

      • Passion (The love of the art of programming)
      • Communication skills (The ability to understand and be understood, both written and verbal)
      • flexibility (If the decision is made to accomplish something that does not agree with your idea of the best way, attack the problem as if you believe it truly is the best way. This does not mean silencing your opinion before a decision is made)
      • teamwork, cooperation, social skills. I don't want prima donnas
      • Potential. Hard to judge in a recent grad, but I want people who strive to accomplish more than their current position.
      • Business Knowledge. Since our software is designed to solve business problems, it is essential that all of our staff understands what a business is.

      The graduates that can show these traits are very likely to be hired. Those that don't, won't. Some of these characteristics can be taught in formal courses, others have more to do with personal development and maturity. Specific languages can be taught to the right person very quickly. A solid background in math is also essential (Algebra, Statistics and Calculus) but I have yet to use n-dimensional calculus in non-cartesian space for practical business applications.

    3. Re:It realy doesn't matter by 0racle · · Score: 2, Funny
      I have yet to use n-dimensional calculus in non-cartesian space for practical business applications
      Thats because your just a VP, management doesn't do anything for practical business purposes. Impractical maybe, but not practical.
      --
      "I use a Mac because I'm just better than you are."
    4. Re:It realy doesn't matter by Llywelyn · · Score: 2, Insightful

      "but I have yet to use n-dimensional calculus in non-cartesian space for practical business applications."

      Two points come to mind:

      First: I have yet to directly use complex analysis in any of my day-to-day work, I'd still consider the class extremely valuable for the experience in working with coordinate systems, transforms, and the like. I'd also consider the proofing process I had to do in that class extremely valuable. All of this is in spite of never seeing "i" in my day-to-day job.

      Second: *You* may not have need of graduates with such skills, but many people do. Some people need the ability to work with 8-dimension nonlinear ODEs that rotate between two coordinate systems. Sure, not every grad will, but the exposure gives a graduate a higher chance of actually knowing that its out there and being able to use it if the need arises.

      --
      Integrate Keynote and LaTeX
    5. Re:It realy doesn't matter by Anonymous Coward · · Score: 2, Informative

      Let's make something clear, here: You're not hiring computer scientists. You're hiring developers. The two sets share members, but they are not one and the same thing. It should come as no surprise at all, I suppose, that /. folks never know the difference.

      Ultimately your influence (and other industry folks like you) moves the direction of undergraduate computer science departments and education in a direction that is absolutely orthogonal to where it should be going.

      "practical business applications" have zero to do with computer science.

    6. Re:It realy doesn't matter by exp(pi*sqrt(163)) · · Score: 2, Funny

      Hence my sig :-)

      --
      Doesn't it make you feel good to know that our freedoms are protected by politicans, lawyers and journalists.
    7. Re:It realy doesn't matter by SeattleGameboy · · Score: 2, Insightful
      What a crock of BS. I see why you were able to rise up to VP level, you are full of hot air.

      THERE IS NO WAY IN HELL you can deduce all those items (Passion, Communication, Teamwork,Flexibility, Teamwork, Potential, BK) in a freaking one hour interview. Are you kidding me? Best you can hope for in a one hour interview is to figure out whether or not he/she was lying about anything on their resume. Almost all research on job interviews indicate that people make up their mind on whether or not to hire within first 15 seconds.

      Even if you are some Yoda and can deduce those things from a interview, you must not be hiring much because you probably can count in one hand you the number of people you can demonstrate those abilities in an hour. I have interviewed hundreds of candidates over the years. I can honestly say, I have never met a candidate who showed abilities in all of those areas. If you are looking for a perfect candidate, no such beast exists (or at least they won't be going to interviews to get hired). In fact, some of the best developers I ever hired were guys who BOMBED their interviews (usually shy, not very outgoing, etc.), but are demons when it come to producing effecient codes.

      What a baloney. I wish you would tell us which company you work for so I know to stay away from it.

  2. computational statistics by lubricated · · Score: 3, Insightful

    Well, perhaps because it has something with what I do, but I was surprised computational statistics isn't on that list. Perhaps it's the other way around, statisticians need to learn to program. Regardless there is quite a bit of overlap. This is also one of the few areas remaining where the speed of your program actually matters.

    --
    It has been statistically shown that helmets increase the risk of head injury.
    1. Re:computational statistics by Anonymous+MadCoe · · Score: 3, Informative

      Yep I find that most CS majors I've worked with the last couple of years lack a solid understanding of statistics in general. IMHO this is a very important skill.

      The danger of not teaching it is that most guys that need it in their professional life think they are very smart, start using it and suffer from the "sourcer's apprentice syndrome".

    2. Re:computational statistics by Peter+Mork · · Score: 4, Interesting

      I'm willing to assert something stronger. Instead of requiring undergrads to spend a year learning calculus, the requirement for all undergrads should be basic statistics. In the decade or so since I completed a math degree, I've used calculus only rarely (the intended implication being that even a mathematician might find little need for calculus). Statistics, on the other hand, are needed to correctly interpret newspaper articles.

    3. Re:computational statistics by arivanov · · Score: 5, Interesting

      In my biased opinion, that is a course that MUST NOT be taught to CS students unless they have the full one year worth of Probability Theory before that. In fact it is a course that MUST NOT be taught to any scientific student who has not taken a full probability theory course first. Unfortunately, many universities especially in the US tend to do that - teaching stats without teaching the probability theory which makes them possible.

      As far probability theory itself is concerned its knowledge is essential for nearly any task in CS starting from an OS and all the way to transaction systems especially if the system is operating under a resource constraint. The time your request traverses the system, the completion rate, etc are all described by Markov chains and there is a appallingly low percentage of CS people who actually know them and can understand how their systems behave. There is no way in hell you can optimise or even understand a complex system without this knowledge. Unfortunately most Unis now prefer to use this time to teach marketing buzzword bollocks also known as Unified Process, Agile, etc instead.

      The second most important math area for a CS student is possibly optimal control. This one is also nowdays omitted from some university curicullae which IMO is an absolute madness.

      --
      Baker's Law: Misery no longer loves company. Nowadays it insists on it
      http://www.sigsegv.cx/
    4. Re:computational statistics by jawtheshark · · Score: 4, Funny

      Indeed, 87% of all computer science majors have no clue about statistics....

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    5. Re:computational statistics by nelsonal · · Score: 2, Interesting

      I think most everyone would be improved by more exposure to statistics. Business is one degree that most needs more calculus (most of what businessmen deal with is rates of change). For example the income statement contains the first derivative of most of the balance sheet, but I've never heard the term even broadly hinted at in any business classes.

      --
      Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
    6. Re:computational statistics by LizardKing · · Score: 5, Funny

      What about the other 23%?

    7. Re:computational statistics by The_Wilschon · · Score: 2, Informative

      I'm not quite sure how you're planning to teach statistics in any meaningful way without using calculus.

      You're right that professional mathematicians, depending on their field of course, don't need much calculus. For instance, group theory is pretty hot now, and it doesn't involve calculus, unless you're studying some algebraic properties of something involving calculus. Graph theory doesn't involve calculus really. But statistics certainly does involve calculus, unless you're planning to teach a quite naive form of statistics. A naive stat will involve necessary weaknesses which will quickly begin to be exploited by newspaper studies, just as a complete lack of statistical knowledge is exploited now.

      My own field, physics, is the same way. You can teach algebra-based physics, but it is much harder to learn than cal based physics, and you can't do nearly as much with it.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    8. Re:computational statistics by Anonymous Coward · · Score: 2, Funny

      Also, they should be taught Latin. The plural of curriculum is curricula, not curriculae.

  3. ballpark by superwiz · · Score: 4, Informative

    probability (heavily skewed towards combinatorics), number theory, geometry (the plain euclidean one because this is really the best way to train a human brain for logic that's been found in the past few thousand years), calculus (of 1 and 2 variables... the rest is a waste of time unless you are specifically training programmers whose skills will be heavily computational in nature), linear algebra, and formal logic. Category theory (which is really just object-oriented math) could be familiarized with, but showing its applications would be more useful than going rigourously through proofs.

    --
    Any guest worker system is indistinguishable from indentured servitude.
  4. Core Math for Comp Sci. by Anonymous Coward · · Score: 3, Informative

    Linear and Multilinear algebra
    Logic (Philosophy) -> Discrete Math -> Discrete Math 2
    Calculus 1 - 3

    I would probably put those as the core of any good CompSci program.

    1. Re:Core Math for Comp Sci. by Enselic · · Score: 2, Interesting

      I agree with Linera Algebra, if you know linear algebra, you can pick up on 3D rendering APIs easily, and making 3D games is great fun, and you learn a lot about programming in general, like the need to structure your code (source code of 3D games without good structure is hell to modify).

      Also, a lot of geometrical problems can be solved using Linear Algebra, things that can be useful in GUI code for instance (like, which of these arbitrary line segments are closest to the cursor, what angle does these lines form, etc etc).

  5. How far are they going in CS? by cperciva · · Score: 5, Informative

    (For the benefit of members of institutions with other sizes of courses: When I write "one course" below, I mean "1/40th of a standard Bachelor's degree".)

    For students who just want to get a job as a programmer, I'd say that a first year course in discrete mathematics should be enough; it won't actually teach them anything by itself, but it will increase the odds of them understanding what the smart guy on their team is talking about when he says "this is a standard graph theory problem...".

    For students who want to be that guy who tells the rest of the team how to solve problems, I'd suggest two discrete math courses, two calculus courses, a linear algebra course, and either a number theory course or a statistics course.

    For students who want to actually do research in computer science: They're in the wrong department. The best preparation for graduate work in computer science is an undergraduate degree in mathematics. If they insist on getting their undergraduate degree in computer science, I'd recommend as an absolute minimum three calculus courses, two general discrete math courses, one linear algebra course, one course in number theory, two courses in statistics, one course in real analysis, one course in complex analysis, two courses in numerical analysis, one course in linear programming, one course in formal languages and automata, one course in graph theory, and one course in combinatorics. Depending upon the student's interests, I'd also recommend courses in group theory, galois theory, and coding theory.

    1. Re:How far are they going in CS? by Anonymous+Brave+Guy · · Score: 2, Insightful

      The best preparation for graduate work in computer science is an undergraduate degree in mathematics. If they insist on getting their undergraduate degree in computer science, I'd recommend as an absolute minimum three calculus courses, two general discrete math courses, one linear algebra course, one course in number theory, two courses in statistics, one course in real analysis, one course in complex analysis, two courses in numerical analysis, one course in linear programming, one course in formal languages and automata, one course in graph theory, and one course in combinatorics. Depending upon the student's interests, I'd also recommend courses in group theory, galois theory, and coding theory.

      Wow. I do have an undergraduate degree in mathematics, and I'm not sure it covered everything you described there. You'd certainly be lucky to get things like Galois theory taught routinely at undergrad level these days, at least here in the UK.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:How far are they going in CS? by kfg · · Score: 2, Insightful

      For students who just want to get a job as a programmer. . .

      I'd recommend a different major.

      As with all the hard and applied sciences the undergraduate course is really just foundation building and the course of study should reflect that. CS is a life study, programming is a trade.

      Even with that it's going to take you about 10 years to become a decent programmer; and 15 to become a decent CS; there's really no way around that. Why is everyone so fixated on becoming mediocre in a hurry? Learn the shit you need to learn, in a well ordered manner, instead of trying to cram half of everything into the arbitrary four years.

      KFG

  6. CompSci maths... by filthWisard · · Score: 3, Insightful

    being able to use asymtotic notation for bounds on algorithm running times, and a good basis in proofs in order to prove them once you've come up with something. Also solving recurences, and proving them is invaluable. There are some other things that are very usesfull on a day to day basis, like linear algebra (spesifically coding theroy), geometry, graph theroy, counting and probability (but thats more of an ai thing)

  7. Depends on what you want to do with it by antifoidulus · · Score: 2, Insightful

    I was a math minor at Penn State, and I decided to concentrate on Stat because that is what interested me, but everyone is different. I would say that if you are interested mostly in "pure"(not pure!=better) CS, then courses like graph theory and combinatorics are probably best. If you are interested in applying your CS degree to problems in engineering and science, then differential equations and numerical analysis is your best bet. If you want to go into the business/actuarial side of things, statistics is obviously best. The most important thing is that you take a lot of math, and hopefully math that actually interests you.

  8. Hard to decide by Raliaga · · Score: 2, Insightful

    As a current student majoring in both (CS-Math), I've found useful all of my Math courses to CS. I'd say that Analysis, and Measure Theory have helped too.
    However, we should not forget that it's suposed to be a CS major, so I'd recommend as "priority" ones: Calculus (one-many variables), Linear Algebra, Probability, Statistics, Linear Optimization, Non-linear Optimization, Combinatorial Optimization, Numerical Analysis, Computational Complexity, Graph Theory and Information Theory. As subjects of further study I'd choose some Logic, Abstract Algebra, Functional Analysis, Set Theory and Category Theory.
    It is important that a CS student could get as much Math as he/she can, because it helps to provide a useful mental framework for thinking, and because helps to get chances of right use of some mathematical tools.
    As I see it, many engineering majors are as teaching a student to battle with some weapon, teach some mathematical tecniques related to the subject, and some practical things about the tecnique ("the weapon"). But learning as much as Math as you can, is like to learn how to use a swiss knife: if you know how to use it properly, sky is the limit (you can be a "science McGyver" :-) )

  9. Why do CS? by Tango42 · · Score: 3, Insightful

    I think the first question you need to answer is why you're doing a CS degree in the first place. Personally, I don't see any point in them. It's not the best way to learn to program (how can you really learn Java in a lecture theatre? It just doesn't work. Just get a good reference book, find some good code to copy the syntax from, and work it out as you go along.), if you want to know the maths side of it, do a maths degree (picking courses that are useful for the job you have in mind - you might have to pick a uni accordingly), you'll understand it far better (doing a few courses in maths is much harder than doing lots, because so many parts of maths interlink). If you want to be a Systems Administrator, or something, then I can't see why you would need a degree at all, it's experience that counts in those kinds of jobs.

    Can anyone name a job for which a CS degree is the best qualification?

    1. Re:Why do CS? by Der+PC · · Score: 2, Insightful

      This must be one of the dumbest answers I have seen so f... oh.. this is SlashDot... I forget. :P I don't have a B.Sc./M.Sc. in CS. Yet. I have under the hood as you so skilfully describe, a self-education in programming and system administration. And, I have been working as a systems administrator, dba and network technician for the past decade at universities and major corporations/banks. I do have experience, of that there's no doubt. A year ago I decided that a CS degree would be of benefit. All too often I had discussions with my teammates and had little or no understanding when it came to mathematical reasoning used in our work. Now, I'm finishing the first half of my second year in CS. I have so far learnt more in these 12 months ( 3 terms a year ) then I have in the past 10 years, and today I can say that I have a grasp on a helluva lot of issues that I didn't while I was actively working on them ( monkey see, monkey do - me being the monkey at that time ). A CS degree must be the one thing that truly should have some meaning for computer enthusiasts. If not to get a better salary, then for your greater mental good. And to be on topic, I've taken so far: Discrete Mathematics I. Next term I'm taking Discrete Mathematics II and Linear Algebra. Term after that comes Calculus and Algorithm Design. Of course, the mathematics CS students take should echo the usability of the mathematics within the sector.

      --
      This signature is DRM protected. By the DMCA, you are not allowed to counteract or oppose to it.
    2. Re:Why do CS? by Opportunist · · Score: 4, Informative

      Actually, I didn't learn how to code in my CS classes. That was expected knowledge. Yes, CS doesn't teach coding here, instead they expect you to know how to write code and why x=x+5 isn't completely insane.

      What I did get taught was how to write good code. How to make use of binary trees and how to optimize algorithms. How to plan software projects and what problems to expect. How to plan, lay down and manage a network.

      As a low level SysAdmin, you certainly won't need a degree to figure out a subnet mask for a single router lan. But networks don't simply scale, they tend to get very tricky and complicated as soon as you have a few layers of routing between them. Not to mention that you won't be able to even plan such a network sensibly if you don't know the theory behind it, how to streamline it and what happens "inside". And yes, that's where the math comes in.

      A good university education will give you a heavy dose of theory. And while you won't be able to apply this directly, you will know WHY something works, not just how. And, more important, when it stops working you'll have a clue why it did. And you'll have a plan how to fix it, or at the very least, you'll know where to look.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    3. Re:Why do CS? by microTodd · · Score: 2, Interesting

      Operating System developer.

      Compiler developer.

      Artificial Intelligence researcher.

      Search engine algorithm developer.

      I have a Master's in CS. Yes, I agree that at the higher end CS is basically a specialized math degree. But there is that touch of applied math thrown in that separates it from a mathematician or statistician.

      Even better, if you pair up a CS degree with something applied (physics, mech engineering, chemistry) you suddenly become someone very valuable to any organization trying to build advanced software. Yes, a biologist could hack out some code to study protein folding, but if you're also a CS guru then you can make a very efficient protein folding algorithm and save zillions of computing hours.

      --
      "You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
    4. Re:Why do CS? by J-Doggqx · · Score: 3, Insightful

      A lecture hall won't necessarily teach you how to code in Java, but having a large programming project assigned with a deadline can be a very good motivator.

      I have done a good deal of studying and coding on my own time, but when one of my CS classes (currently going for my masters) has a project that is when I find the classes really pay off. It gives me something that I can focus on that I can't give up midstream to start a new project.

      Then there are also the CS courses that don't require any programming projects: Theory of Computation, Programming Language Structures, Algorithms, and Software Engineering. These courses require almost no programming, but provide tons of good information on developing future code.

      --
      END OF LINE
    5. Re:Why do CS? by poot_rootbeer · · Score: 2, Insightful

      how can you really learn Java in a lecture theatre? It just doesn't work. Just get a good reference book, find some good code to copy the syntax from, and work it out as you go along.

      Why go to school at all? Just find some textbooks to read, and work it out as you go along. Oh, you'll have to work out "how to read a book" as you go along as well.

      Education's greatest strength is to prevent the student from making stupid mistakes made by others in the past. No, a lecture hall is not the best place to learn Java syntax, but it could be a very good place to learn about common object-oriented design patterns.

    6. Re:Why do CS? by Chandon+Seldon · · Score: 2, Insightful

      Have you ever considered that a University degree isn't always about job training?

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    7. Re:Why do CS? by bzipitidoo · · Score: 2, Insightful

      > by doing just maths I'd actually end up being a better programmer

      CS continually struggles with this sort of perception problem. That statement makes it sound like CS is only math applied to computers. If that's all CS was, there'd be no need for a separate discipline. The recognition that the concept of an algorithm, and all the theory behind algorithms, does not fit anywhere in classic mathematics prompted the emergence of CS as a separate discipline. That advisor gave you misleading and biased advice. I hope you didn't unquestionably believe it, though it sounds as if you're convinced it's true. You will not be a better programmer if you took all the math but skipped the study of algorithms.

      Math does not properly teach algorithms. For example, if you take the right math course, you will learn all about Fourier and Laplace transforms, or so it seems. But you won't learn the Fast Fourier Transform (FFT) algorithm, or that the grade school multiplication algorithm is O(n^2) and that multiplication can be done in O(nlogn) and FFT is the way to do it. Want to stump Math grad students? Toss them a dynamic programming problem. They likely won't have ever heard of dynamic programming. A classic that should suck them right in because a mathematical problem provides the data, is Matrix Chain Multiplication. Even more dangerous are the Math grads who think they understand algorithms because they had a course that spent some time on big O formulations and similar material, but all from a mathematical point of view. Ever studied Turing machines? The halting problem? Automata Theory? Did you ever learn about universality in the context of programming languages? What about Complexity Theory?

      Some EE have a similar low opinion of CS-- think CS is not a "real" discipline. I had a combo EE/CS class that was a mix of digital logic and the electrical properties of transistors. The professor was a EE who conveniently "proved" his assertion that CS students and CS were 2nd rate next to EE students and EE by cutting the EEs a lot of slack on CS problems because they were "trivial" while burning the CS students on the "important" EE problems such as graphing the response curves of the inputs/outputs of transistors at all voltages. Was no surprise that of the passing grades, the EE students got mostly As and Bs, while the CS students got Bs and Cs.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  10. Maybe I just misunderstand CS by A+beautiful+mind · · Score: 2, Interesting

    ...but generally I received much more maths than I've seen mentioned in other posts in my five years of university while studying CS (not in the US).

    The biggest chunk of it all was 6 semesters of Analysis and 4 of numerical analysis.

    I was also told that only two other professions get slightly more maths: "applied mathematicians" and physicists.

    Am I wrong to assume that CS education is much more maths based in the EU than in the USA?

    --
    It takes a man to suffer ignorance and smile
    Be yourself no matter what they say
  11. Formal grammar, predicate calculus, statistics by Twylite · · Score: 2, Interesting

    Start by making sure you understand the distinction between Computer Science and its related disciplines, and that this is a CS course. Read the overview report from the ACM Curricula Recommendations..

    It is apparent from the ACM's recommendations (amongst others) that a lot of mathematics traditionally covered at universities(such as calculus) is not strongly related to Computer Science. That said, there are many applications of computing that require strong skills in these areas (scientific computing and cryptography for example) so they are not a bad option.

    Important numerical and logical fundamentals that support the learning and use of undergraduate Computer Science include:

    • Basic computing theory (formal grammars and finite automata). Understanding the qualities and use of state machines and formal grammars is essential in many fields of computer science including algorithm and protocol design, modeling robust systems, and creating parsers (e.g. for domain specific languages). It is also necessary to understand the halting problem and turing theory. Most of the theory requires the use of proof by induction or construction, which (in my experience) are the most common proof techniques in CS.
    • First-order logic (predicate calculus). Also exceptionally valuable in the development of data structures and algorithms, and for communicating between domains.
    • Graph theory. Understanding complexity, efficiency and optimisation in many aspects of CS (including compilers, algorithms, networks, data structures, etc) requires an understand of graph theory.
    • Statistics. You will use it in most forms of analysis, at least to verify that a real-world realisation matches the predictions of a theory. Also valuable for performance analysis and optimisation to determine performance distribution and bounds.
    --
    i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  12. Statistics and Experimental Design by DoofusOfDeath · · Score: 2, Insightful

    "Statistics" (2 semesters at least) and "experimental design". "Modeling and simulation" is closely related, but is somewhat covered if you take the stats and experimental design courses.

    Here's why...

    When starting on my PhD research, I pretty naively thought I'd just write a network simulator to try out my idea and to compare its performance to other network protocols. That would be fairly acceptable in today's CS climate, but STUPID.

    People using simulators face a number of questions that they often don't ask, and therefore make their conclusions nearly meaningless. Are there specific hypotheses they're trying to test? How do they know they've performed enough simulation runs to draw conclusions at an acceptable confidence level? Exactly what is the distribution over which the inputs are randomized, and why was distribution chosen? To what extent is the model even validated (ok, this is more of a Modeling and Simulation issue than a stats issue)?

    Psych and biology majors have been forced to rigorously answer these questions for a long time. We, the supposedly "mathematically superior" CS majors, have often ignored these details as though they're irrelevant. But if left un-tackled, we can produce crap research whose conclusions have little clear connection to reality. These is even true for when we can afford to do real-world tests and thus are less at the mercy of simulation model inaccuracies. How many real-world tests do we perform before we draw our conclusions? How do we randomize the inputs?

    Much of today's network-related research sucks. Not because the ideas being generated are bad, but because the analysis of the new ideas and their comparison to the performance of pre-existing ideas is crap. Without taking stats and experimental design courses, even the reviewers of these papers don't realize that those weaknesses exist.

    If you want your network research to be meaningful, test your ideas with meaningful experiments and analysis.

  13. Lots by ggKimmieGal · · Score: 2, Informative

    The CS students who make it through a lot of math often end up being better programmers. I'm not sure if that's a true statement, but it certainly seems to be true where I go to school. Calculus Calculus Calculus! So important! At least one semester of calc is necessary, but I would say if you can squeeze in multi variable calculus, you're good. Multi variable + Linear Algebra (matrix math) is really good. I would say the matrix math is much more important though. And discrete! Now, we actually have a class in our CS department that is our own little private discrete class, but I'm totally planning on taking the math department's discrete. Plus, my math department has this computer programming class for math majors. It's all logic problems. I'm taking that too. Statistics. Now, this one isn't as important because if you get the basic concept then you can just look stuff up, but consider it an easy A (hopefully). I am so glad I took AP Stat in high school. I have used information from that class in almost every class I have had here in college. In short, if you can fit in a math minor (or major), go for it. My CS department has you take 3 math courses, and then you only need 4 more for a minor.

  14. Some Math greater than Other Math by Dareth · · Score: 4, Insightful

    For CS students, the fundamentals of discrete math and set theory are probably some of the most important. More focus on these in a CS context would be helpful to people such as myself who find math more interesting when it has a purpose. I did not mind the physics and statistical math courses. I could see the point behind them clearly. But doing math just for the sake of doing math never seem to have a purpose.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
    1. Re:Some Math greater than Other Math by TapeCutter · · Score: 3, Insightful

      Yep, operations research, cryptography, matrix algebra, stats, logic and some physical stuff like trig and calculus were all in my CS degree (89-91). I don't remeber much about the formulas but it has served me well to know what can and can't be done and why.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    2. Re:Some Math greater than Other Math by SQLGuru · · Score: 4, Informative

      I would say that it depends on the focus of the student.

      Graphics programming - Linear Algebra (matrix math) would be invaluable
      Business application programming - plain old Algebra and maybe some statistics
      Engineering apps - physics / calculus, stats
      Compression programming - linear algebra, "new math"
      etc.

      When I was in college (90 to 94) at an engineering school, my CS degree required Calculus through the third one (because it was in the Engineering department) and statistics (because otherwise, noone in their right mind would ever take statistics) and an elective "math" the your advisor would point you towards based on what type of work you were interested in doing. I think this approach has worked out well for me.

      Layne

    3. Re:Some Math greater than Other Math by tritonman · · Score: 5, Interesting

      I think they need to separate CS into two branches, one that's "computer software engineering" and another that's "computer science". The first focuses more on software engineering and different languages. The second focuses on one language (probably c++) and has more intense math and physics as this is more related to science. The reasoning would be that there tend to be two types of programmers. Those who work with scientists and really need an understanding of calculus and of physics forulas and those who work on DB front-end type stuff, these require a knowledge of some things like set theory and discrete math, but they don't need to have a deep understanding of calculus or have an understanding of physics.

    4. Re:Some Math greater than Other Math by CastrTroy · · Score: 2, Informative

      I took software engineering at my school. There was a lot of math courses. Calculus 1 and 2, Discrete and Logic 1 and 2, Algebra 1, and Statistics. I also took Algebra 2 as an elective. This doesn't even include math heavy courses like Vector Mechanics, Chemistry, Physics, Elec. Eng., Economics, and others. I think all this math helped out a lot. Not only in math heavy computer related courses like Graphics and robotics, but also in my day-to-day programming needs. Logic and Algebra are probably the most useful, but that's just me, I'm sure others would find calculus invaluable, even though I don't think I've ever used it.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    5. Re:Some Math greater than Other Math by JBHarris · · Score: 2, Interesting

      I go to a smaller college in Columbus, GA....Columbus State University...in fact early registration for Spring Semester was today. Here at CSU, they have split the CS degrees into two separate camps....The CS-Systems Track & the CS-Applied Track. They are nearly exactly what you have outlined. I am more of a systems (theory) guy, and I hope to lead a team of Applied guys (coders). This isn't about salary or power, it is about what you do best. I cannot sit behind a desk and write code for 8 hours a day, plus I am a visual thinker. I can layout advanced problems and envision solutions, but my expertise falls apart when I start coding them...I get lost in the forest. However, some people cannot see the big picture but they have incredible focus on the smaller, more intricate problems. To each his own path.

      This after nearly 6 years designing/programming full-time. I just recently decided to go back & get my degree to increase my potential value, plus after being promoted to Product Design Lead, I realized I needed to get on the ball with my degree or someone hot-shot kid straight out of college would take my job.

    6. Re:Some Math greater than Other Math by Aaron+Denney · · Score: 4, Funny

      > discreet mathematics.

      Yes, much nicer than the showy, obvious, and unrestrained mathematics.

      (The word you want is discrete)

  15. Math courses by ShorePiper82 · · Score: 2, Informative

    I recently graduated from NJIT with a BS in Computer Science and a minor in Applied Mathematics. The fundamental courses were 3 semesters of Calc(I/II/II). Probability & Statistics, Discrete Analysis, Differential Equations as per the engineering requirements and enforce formal thought (except maybe discrete, that is considerably more out of the box). One of the most important courses I took was Linear Algebra. Dealing with matrices is fundamental... but more to the point: anyone even considering graphic theory needs linear algebra. OpenGL models / graphing simulations rely heavily on constructing matrices and working with them to represent 3D images in a 2D world. Another class that provides some very deep insight is Numerical Methods. This study of mathematics requires some programming knowledge to automate error analysis (particularly the big question is always: You all have an answer to a set of problems, but just how accurate is your answer and within what bounds? 10^-6 ... 8?). The class also provides insight and formulas for detecting propogation of errors. Any computer scienctist is going to deal with computational math and at some point you will goto another research or a project lead and they will ask "are your results correct?"; You will comfortable with your results, given some background to know that they are correct.

  16. Weak CS Undergrad by Dareth · · Score: 2, Informative

    I have a CS undergrad too. I had the same concerns about areas of weakness in the education I received.

    I highly recommend the MIT Open Courseware and the Webcasts at Berkley.

    Each provides a quite different approach to CS education. Just remember that you did not learn everything you will ever need to know in college. Hopefully your undergrad taught you how to learn new information quickly.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  17. Re:I liked oenology, personally by LizardKing · · Score: 2, Funny

    No, but there's a strong connection between onanism and the study of Computer Science.

  18. According to Ron Graham and Donald Knuth by robkill · · Score: 2, Interesting

    Ron Graham was head of Math Research at AT&T Bell Labs back in the '80's. Knuth should need no introduction.

    Concrete Mathematics

    --
    DMCA - Chilling free speech since 1998.
    1. Re:According to Ron Graham and Donald Knuth by Bright+Apollo · · Score: 2, Funny

      This is the Godwin's Law equivalent for this discussion topic. We're done here.

      -BA

  19. 3 words... by RingDev · · Score: 3, Insightful

    Proofs. Proofs. Proofs.

    Algebra, geometry, calc, who cares. It's the Proofs that make math apply to Comp Sci. Having obscure formulas memorized means squat. But being able to look at a problem and break it down into the most simple of building blocks, that is a critical skill.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  20. The DCT would be a really good idea. by emil · · Score: 4, Informative

    The Discrete Cosine Transform would be a fantastic goal. DCT is used in MP3, JPEG, and MPEG compression (amongst others). The practical applications for lossy encoding are hardly difficult to see.

    Such a discussion should probably replace vector calculus. I only used Groves/Stokes/Divergence/Gradients in a single course (EM Theory), and I've never had a practical application in my career. My Digital Image Processing class spent too much time on the Discrete Fourier Transform and dismissed the DCT with some hand-waving (and this after two years of pointless control and communication theory - when was the last time you used Vestigal Sideband Modulation?).

    The math that should be taught in computer science should reflect the math used in computer science. DCT certainly qualifies, and a lot of the current curriculum(s) do not.

    Maybe talking to the guy who maintains the PAQ compressor might also be good. That is interesting software.

  21. Yes, yes, yes, Linear Algebra. by Malkin · · Score: 2, Interesting

    SQLGuru is absolutely right. If you want to do graphics, or want to be a game programmer in general, you should absolutely study linear algebra.

    I would also like to emphasize that as much as university programs tend to be focused on theory, it would be beneficial for the students to have some inkling of what the applications of these various branches of math are. I studied linear algebra in college, but I was forced to do an aggressive review of it, later in my career, because I had retained very little of it. Had I understood how important linear algebra was to 3D graphics, back when I was studying it, I'd have been much more excited about the topic, and would have retained the information better. Unfortunately, our program provided no context, whatsoever, for what we were learning, so we never really knew why we were studying it in the first place.

    1. Re:Yes, yes, yes, Linear Algebra. by elwinc · · Score: 2, Interesting
      I second the suggestion of linear algebra. Here's how I would do it:

      1 semester of graphics. While teaching graphics, make sure to emphasize the matrices. Students will get concrete visual examples of what matrix multiplication can do: rotation, scaling, general affine transforms. Graphics is useful in itself, and becomes a stepping stone to linear algebra.

      Then 1 semester of linear algebra, with lots of practical examples. Linear algebra is the stepping stone to data mining. it also leads other important statistical techniques used in pattern recognition and machine learning.

      Delving into those statistical techniques is graduate level work, but by knowing linear algebra, a CS student has the tools to learn the basics from a book.

      Lemme put it like this: If your student wants to work for Google or similar cutting edge companies, she should be familiar with linear algebra. If she wants to spend her career translating sales records from one database format to another, she can probably skip the linear algebra.

      --
      --- Often in error; never in doubt!