Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

What Math Courses Should We Teach CS Students?

Cliff posted more than 7 years ago | from the too-much-or-not-enough dept.


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

cancel ×


Sorry! There are no comments related to the filter you selected.

It realy doesn't matter (3, Insightful)

Silver Sloth (770927) | more than 7 years ago | (#16850178)

Whichever branch of maths you follow it encourages logical thought.

Re:It realy doesn't matter (4, Funny)

ObsessiveMathsFreak (773371) | more than 7 years ago | (#16850450)

Whichever branch of maths you follow it encourages logical thought.

Except for mathematical logic. Those guys leave all semblance of logic at the door.

Some Math greater than Other Math (4, Insightful)

Dareth (47614) | more than 7 years ago | (#16850898)

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.

Re:Some Math greater than Other Math (3, Insightful)

TapeCutter (624760) | more than 7 years ago | (#16851176)

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.

Re:Some Math greater than Other Math (4, Informative)

SQLGuru (980662) | more than 7 years ago | (#16852260)

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"

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.


Re:It realy doesn't matter (4, Informative)

NibbleAbit (528568) | more than 7 years ago | (#16851516)

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.

Re:It realy doesn't matter (1)

Nutria (679911) | more than 7 years ago | (#16851790)

lower level languages (C++)

Is C++ really now considered "low level"

computational statistics (3, Insightful)

lubricated (49106) | more than 7 years ago | (#16850182)

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.

Re:computational statistics (3, Informative)

Anonymous MadCoe (613739) | more than 7 years ago | (#16850320)

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

Re:computational statistics (4, Funny)

jawtheshark (198669) | more than 7 years ago | (#16850426)

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

Re:computational statistics (5, Funny)

LizardKing (5245) | more than 7 years ago | (#16851134)

What about the other 23%?

Re:computational statistics (1)

chroot_james (833654) | more than 7 years ago | (#16852182)

43% of people make statistics up!

Re:computational statistics (4, Interesting)

Peter Mork (951443) | more than 7 years ago | (#16850342)

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.

Re:computational statistics (2, Interesting)

nelsonal (549144) | more than 7 years ago | (#16850728)

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.

Re:computational statistics (1)

Gr8Apes (679165) | more than 7 years ago | (#16851226)

I had both. I've used far more calculus than statistics over the past 20 years. But what I've used most is linear algebra.

I suppose it depends upon what you do as to what you'll need. Since what I do now is radically different than what I'd thought I'd be doing when I graduated, I'd say requiring a basic set of math skills (algebra, calculus, statistics) is appropriate.

Re:computational statistics (1)

dslauson (914147) | more than 7 years ago | (#16851244)

I agree that statistic are needed. In my undergraduate CS work, though, we couldn't escape without BOTH a year of calculus AND a semester of probability and statistics.

I've found them both very useful. Actually, in my work, there is a lot of calculation of rates of flow and such, so the calc has been more useful than the statistics. Stats, in general, though, are just as important, especially when it comes to computer learning applications.

I think that what math will come in handy is heavily dependent on where you end up in your career, but having the right tools will also help steer you in a good direction in that career. And, definitely, if you want to go further in school than a bachelor's, you'll need all the math you can get. The problem at most universities is that they can only really have so many required courses and still have students graduating on time, so they leave the rest up to electives.

While I'm on the subject, I'd recommend discrete math, linear algebra, and at least one course that teaches you the fundamentals of logic and proof writing. And, like I said, calculus and statistics.

Re:computational statistics (5, Interesting)

arivanov (12034) | more than 7 years ago | (#16850364)

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.

Re:computational statistics (1)

Metasquares (555685) | more than 7 years ago | (#16851216)

In my university, as I suspect in many, they were combined into one class. You could also take a second probability / statistics course (which I did, but most CS majors did not) as an elective.

Re:computational statistics (1)

Peter Mork (951443) | more than 7 years ago | (#16851554)

In my experience, statistics has always been combined with probability. I agree that statistics is useless without probability. I'll amend my assertion to state that instead of (a year of) calculus, undergrads should be required to have (a year of) probability and statistics.

ballpark (4, Informative)

superwiz (655733) | more than 7 years ago | (#16850212)

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.

Re:ballpark (1)

imbaczek (690596) | more than 7 years ago | (#16850266)

Add discrete mathematics (especially graph theory) to that list. I'm quite surprised you didn't mention it in the first place, and even more surprised that you mentioned calculus of 2 variables instead. That's a whole lot less useful than being able to think about problems in graph terms.

Re:ballpark (1)

superwiz (655733) | more than 7 years ago | (#16851334)

I mentioned calculus of two variables for a very specific reason. You cannot understand the gaussian curve without it. "Discreet math" was covered under combinatorics which I said should be covered in probability. Graph theory (from combinatorial rather than topological point of view) would be part of an extensive linear algebra course (or series of courses). I should have made it clear that I think that rather than having the usual Calc 1,2,3 there should be Calc 1,2 and Linear Algebra 1,2,3. What I am on the fence about is whether or not abstract algebra would be too far off field. Certainly it would help to understand linear algebra on a much deeper level... but it might be too deep for anyone who wants to concretly compute network-traversal times to care.

Re:ballpark (0)

Anonymous Coward | more than 7 years ago | (#16851272)

Object-oriented math:
Billy has four apples. He gives one to his friend Janet. How many apples does Billy have left?

(sorry, i couldn't resist)

Re:ballpark (1)

mikael (484) | more than 7 years ago | (#16851632)

Billy has 0x0000003 apples left

Re:ballpark (1)

Coryoth (254751) | more than 7 years ago | (#16851812)

Category theory (which is really just object-oriented math)

Either you don't know or understand category theory, or you don't know what object-oriented means. At best you could claim your statement is a ridculous simpification (on par with "Algebra (which is really just math with letters)"), at worst its a fundamental misunderstanding of categry theory due to, most likely, a lack of ever actully having dealt with it.

Re:ballpark (1)

superwiz (655733) | more than 7 years ago | (#16852246)

I live to learn. Do tell what differences they have. I am sure if you try to write them out coherently, you will find that the differences are in details. By as an abstraction (something the removes the details to look ideas pertenant to a subject matter discussed) they are similar in that they deal with study of relations (in plain english rather than math sense of the word) between objects. Therefore, to think about either cat theory or obj oriented programming one may adapt a very similar method of thinking. I was not comparing them feature-to-feature. I was saying that thinking about concrete categories may be a useful training for thinking about classes. Thinking about categories ("at large", so to speak) may be a useful training for thinking about abstract classes.

I liked oenology, personally (1, Insightful)

BadAnalogyGuy (945258) | more than 7 years ago | (#16850216)

Personally, I found a great deal of education in my oenology courses. Well, they weren't really courses. Or at school. Mostly at home with friends.

But to get back to your question, I don't find any of the math that I took applicable to any of the work I do. I don't write 3D software, music synthesizer software, or calculate missile trajectories, so all that math is lost on me. The most applicable mathy CS thing I learned was covered in an hour regarding big O notation. Along with a good course on data structures, that has been the most beneficial thing I can say I learned.

But that is besides the point. What you do in the real world doesn't necessarily have to be relevant when choosing curriculums (curriculi? curricula?)

Give them the works! Everything from Calc through Topo and everything in between. Not all of them are going to grow up to be rocket scientists, but so what? The more knowledge you give these kids the better. I'm not saying you need to wipe them out or flunk them out or even use the math as a weeding tool, just that what you want to do is give them the tools to look at other sciences and not be befuddled.

There's nothing worse than a CS graduate that doesn't have a full grasp of math.

Re:I liked oenology, personally (1)

cperciva (102828) | more than 7 years ago | (#16850290)

Personally, I found a great deal of education in my oenology courses. [...] The most applicable mathy CS thing I learned was covered in an hour regarding big O notation.

Is there a connection between oenology and O(n)-ology?

Re:I liked oenology, personally (2, Funny)

LizardKing (5245) | more than 7 years ago | (#16851198)

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

Lambda Calculus (0)

Anonymous Coward | more than 7 years ago | (#16850222)

Enough Said.

All of them! (1)

BrakesForElves (806095) | more than 7 years ago | (#16850230)

Seriously, what useful work ever gets done without mathematics? Maybe pushing bulk data around into and out of databases, but who other than a C-grade CS student in a third world outsource farm is interested in doing that?

Re:All of them! (1)

miyako (632510) | more than 7 years ago | (#16851034)

The problem is that there seems to be a lot more work pushing data in and out of databases than doing anything interesting.

Re:All of them! (1)

Aadain2001 (684036) | more than 7 years ago | (#16851410)

That's because there are so few CS graduates that actually can do much more than just push the data around. In my old University, the CS students took different classes than the engineering students, with focus on discrete math, statistics, and matrix math (such as methods for solving complex problems using matrices). Basically, they learned how to perform the real math that computers and programs use. Could there be more? Probably, but most higher match classes require a very good background in calculus.

Core Math for Comp Sci. (3, Informative)

Anonymous Coward | more than 7 years ago | (#16850232)

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.

Re:Core Math for Comp Sci. (2, Interesting)

Enselic (933809) | more than 7 years ago | (#16850878)

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

How far are they going in CS? (5, Informative)

cperciva (102828) | more than 7 years ago | (#16850268)

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

Re:How far are they going in CS? (2, Insightful)

Anonymous Brave Guy (457657) | more than 7 years ago | (#16850428)

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.

Re:How far are they going in CS? (1)

Sage Gaspar (688563) | more than 7 years ago | (#16850732)

I have an undergraduate degree in math and I know for sure it didn't cover everything described there. However, with independent studies, summer research programs, and semesters abroad at schools with a stronger math program, I was able to shore up those weaknesses. If I had been at a school that had a decent graduate program in mathematics I could've moved onto that during my senior year.

More advanced topics in algebra are certainly not out of reach though, my school only had one semester of algebra, but I had a lot of friends at schools with two semesters, and in two semesters there's no reason you can't get to Galois theory.

Re:How far are they going in CS? (1)

mdarksbane (587589) | more than 7 years ago | (#16850798)

Huh, I always felt that my CS undergrad degree was relatively weak, and we covered almost all of that list, with a few of them being optional.

Weak CS Undergrad (2, Informative)

Dareth (47614) | more than 7 years ago | (#16851010)

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.

Re:How far are they going in CS? (0)

Anonymous Coward | more than 7 years ago | (#16851664)

I would agree. For those who say "what undergraduate courses teach all that?", I studied Math(s) at Cambridge University. They teach all these subjects at undergraduate level with the possible exception of formal languages (which I taught myself whilst at Cambridge anyway - you can't beat those libraries!)

These are my experiences of doing Math rather than CS, looking back 15 years later:

0. Math was hard. CS looked way easier.
1. Most of what I learned in my Math degree has come in use at one time or another (not that I would have known at the time) - Galois Theory being the exception, although I did have cause to review my Galois Theory notes just last month because I thought it might be relevant to something I was working on (it wasn't)
2. I've picked up everything I need to know about CS since by self-teaching; I didn't know the web would take off when I studied Math but it did and now most of CS can be learned online (the rest from books)
3. Learning graduate-level CS with a Math degree looks a lot easier than learning graduate-level Math with a CS degree

The question for me therefore is not "how much Math should a CS student do" but "how much CS should a CS student do"? CS and Math are two sides of the same coin, but the knowledge transfer only goes one way.

I didn't go into CS research, though. I find all this Math useful just for being a games programmer.

CompSci maths... (3, Insightful)

filthWisard (1015523) | more than 7 years ago | (#16850272)

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)

Re:CompSci maths... (1)

tomhudson (43916) | more than 7 years ago | (#16850676)

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,

... I guess spelling isn't one of those things you find "very usesfull on a day to day basis" ...

Re:CompSci maths... (1)

filthWisard (1015523) | more than 7 years ago | (#16851162)

never. thats why I do CompSci, not english

I hope.... (1)

WgT2 (591074) | more than 7 years ago | (#16850274)

I hope someone besides me tries to answer this question.

Which courses you take absolutely matter and who cares what learning besides math has helped you; that wasn't what the dear reader is asking us.

That which has helped me the most is Discrete Structures, which wasn't even offered as a math class, but as a CSE class.

Course style - lazy students... (0)

Anonymous Coward | more than 7 years ago | (#16850310)

This is more on the course style rather than content.

I took EE/CS courses at Southampton Uni (UK). The staff were always trying to make the Maths courses more accessible and were very open to feedback.

However they could never win; the years they offered structured courses, the student feedback demanded self-paced courses (i.e. less lectures.)

Of course, those years they offered self-paced courses, many students struggled (i.e. were lazy - like me) and requested - more structure!

Statistics & Basic Economics (1)

eraserewind (446891) | more than 7 years ago | (#16850318)

Statistics is the only maths course that I wish had been treated with more care in my CS degree, and in my Software Engineering related job(s) it's the one that I have had the most use and need of. Whether it's relevant for "pure" CS I have no idea, but would suppose that proper understanding and use of statistics is relevant for all science and engineering disciplines.

Adding to that, though it's not exactly maths or CS as such, a better understanding of economics and the practical economic or accounting mechanisms and tools used in business and life would come in handy.

Re:Statistics & Basic Economics (1)

Anonymous Brave Guy (457657) | more than 7 years ago | (#16850460)

Do you actually mean statistics, or do you mean probability, optimisation, or other related fields?

Depends on what you want to do with it (2, Insightful)

antifoidulus (807088) | more than 7 years ago | (#16850322)

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.

Re:Depends on what you want to do with it (1)

jasmak (1007287) | more than 7 years ago | (#16851370)

I am currently a CS major with a minor in business at Penn State. I feel that we are basically required to take a well rounded number of math related classes. Many of them are under the guise of CSE classes or CSE/MATH classes but were are required to take 2 Stat classes, 3 Calc classes, 2 Logic classes, 1 Algorithms class and a few others that aren't very relevant. Unless you know before you graduate a specific field of study that you want to go into great depth about, I think that the key is to be well rounded so that you have at least a general understanding of the biggest amount of things. Lets say I come to a problem about very complex statistics. Since I didnt specialize in statistics, I may not know how to work it out exactly, but when I search and find items to read up on to understand the complex statistics, they will most likely use many statistical references that I do understand. You can never really know exactly what kind of work you will be doing and what experience you will need to accomplish it until you get to that point so it is important to be well rounded and prepared for anything.

Hard to decide (2, Insightful)

Raliaga (1027504) | more than 7 years ago | (#16850374)

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

Re:Hard to decide (0)

Anonymous Coward | more than 7 years ago | (#16852012)

As a current student majoring in both (CS-Math), I've found useful all of my Math courses to CS.

As a geezer in his late 30s returning to school majoring in math with a minor in CS I'd have to agree.

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.

Exactly. And unlike current languages, paradigms, etc math doesn't go obsolete in five years. It's all about exercising the noggin and then getting enough CS coursework in to actually do something with it.

When I worked for the Department of Defense, all of the contract coders who were shit hot software people were almost all math or physics people. There were a few CS folks, EEs, and one "Systems Engineering" major who were skilled as well, but math and physics folks seemed to dominate.

Why do CS? (3, Insightful)

Tango42 (662363) | more than 7 years ago | (#16850376)

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?

Re:Why do CS? (1, Insightful)

Anonymous Coward | more than 7 years ago | (#16850548)

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

CS Professor of course.

Re:Why do CS? (2, Insightful)

Der PC (1026194) | more than 7 years ago | (#16850618)

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.

Re:Why do CS? (1)

DoofusOfDeath (636671) | more than 7 years ago | (#16850764)

... do a maths degree ...
Just out of curiosity, why do you guys say "maths" when Americans typically say "math"? Are we just using different abbreviations for the word "mathematics"?

Re:Why do CS? (1)

Manchot (847225) | more than 7 years ago | (#16850908)

"Maths" is the British version of the abbreviation of "mathematics." The logic is that "mathematics" is in the plural, so "maths" should be as well.

Re:Why do CS? (1)

DarthChris (960471) | more than 7 years ago | (#16850846)

In terms of being a programmer, I agree 100%, although I can't speak for SysAdmins.

Before I came to Uni, I was considering doing a joint honours Maths & CS degree. I was advised against it by my A-Level (UK qualification; normally taking ages 16-18) computing teacher, who said that by doing just maths I'd actually end up being a better programmer. If I compare stuff I've written recently, with stuff I did for A-level projects, I'd say this is true - and there was a good year and a half gap where I wasn't programming anything, so the improvement is not just experience.
I think this is the case because, as is so often pointed out, the logic behind mathematics and programming is the same. Maths forces you to learn the logic, whereas CS tends to teach you factual details on how it works etc.

So, what maths modules should be part of a CS degree? It depends on what you want to do with your degree. I would imagine Linear Algebra, Discrete and Logic (at least Propositional, possibly Predicate) to be good in general.

Re:Why do CS? (4, Informative)

Opportunist (166417) | more than 7 years ago | (#16850916)

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.

Re:Why do CS? (2, Interesting)

microTodd (240390) | more than 7 years ago | (#16851008)

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.

Activate PUN! (1)

Lord Bitman (95493) | more than 7 years ago | (#16850398)

Intelligent Design!

PUN Complete!

Re:Activate PUN! (1)

Opportunist (166417) | more than 7 years ago | (#16850954)

Oh! Now I know why we're always getting asked and begged as soon as some kind of electronic appliance stops working, from toasters to VCRs.

In their eyes, we're God!

Basic math skills ... (-1, Troll)

tomhudson (43916) | more than 7 years ago | (#16850424)

Basic math skills. I mean, come on, if you can't see that a result is obviously off by several orders of magnitude ("gee ... what's magnitude?") by having a rough idea of the desired result in your head ...

And learning the difference between kilometers and miles wouldn't hurt ... Earth to Mars ... oops, missed the damn planet!

And joke theory - for example, "If it takes 3 minutes to cook 1 3-minute egg, how many minutes does it take to cook 3 3-minute eggs?" If you can't see the direct relationship between this question and scheduling several activities that involve waiting on a device or service in parallel, you're in the wrong field.

Some basic reading and writing skills wouldn't hurt, either ("OMG I don't want to write any documentation ... the code is the documentation!" ... 6 day/weeks/months later ... "I haven't got a clue how this works. Who wrote this piece of shit? Me? Oops ...")

Re:Basic math skills ... (1)

l33td00d42 (873726) | more than 7 years ago | (#16850748)

And learning the difference between kilometers and miles wouldn't hurt ... Earth to Mars ... oops, missed the damn planet!
Get your facts straight [] . Aside from what the article mentions, the error would not have caused mission failure if either (a) they had not decided to go from 2 solar panels to 1 (which resulted in more AMDs because of unbalanced radiation pressure) or (b) they had been tracking the trajectory of the spacecraft with ground instruments rather than dedicating them to other science. (I learned about these while interning at JPL.)

Re:Basic math skills ... (1)

tomhudson (43916) | more than 7 years ago | (#16850818)

The article you quote bears me out ... it was an error in failing to do a conversion between standard and metric units.

The conversion factor from pound-seconds to newton-seconds was buried in the original equation and not immediately identifiable, and so it was not included in the updated equation.

Teach them not to use the good old "hogsheads to the furlong" measuring system. The excuses don't wash. Neither the "1 solar panel" nor the "not using ground tracking" were "unforseen events". They screwed up. Specifically:

Thus, the ground software reported calculated "impulse bits" which were a factor of 4.45 too large (1 pound force = 4.45 newtons). Subsequent processing of the calculated impulse bit values from the AMD file by the navigation software underestimated the effect of the thruster firings on the spacecraft trajectory by this factor.

This mixup was exacerbated by two factors:

  1. The lack of end-to-end testing of the AMD data flow before launch
  2. The lack of an independent navigation algorithm to cross-check the AMD-based algorithm in flight

Note my original post, where I said that one of the problems is people not being able to recognize errors that are one or more magnitudes in size from the correct answer ...

Re:Basic math skills ... (0)

Anonymous Coward | more than 7 years ago | (#16852124)

Teach them not to use the good old "hogsheads to the furlong" measuring system. The excuses don't wash. Neither the "1 solar panel" nor the "not using ground tracking" were "unforseen events". They screwed up. Specifically:

So tell me Tom, how's the Canadian space program? Oops, that's right, you've got to ride shotgun with the US since you don't really have one eh?

Right about now is when you should trot out the argument about how the US stole the Avro Arrow engineers who helped put the US on the moon. Too bad fools like you never seem to mention that they were almost all of UK extraction and immigrants to Canada after WWII and not indigenously developed. Then you can follow up with the work on the shuttle arm for an encore.

Re:Basic math skills ... (1)

orasio (188021) | more than 7 years ago | (#16850868)

And joke theory - for example, "If it takes 3 minutes to cook 1 3-minute egg, how many minutes does it take to cook 3 3-minute eggs?" If you can't see the direct relationship between this question and scheduling several activities that involve waiting on a device or service in parallel, you're in the wrong field.

I have heard that this joke works when you are studing for obstetrician, too.
And for eugenetics, too.

Maybe I just misunderstand CS (2, Interesting)

A beautiful mind (821714) | more than 7 years ago | (#16850436)

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

Re:Maybe I just misunderstand CS (1)

drawfour (791912) | more than 7 years ago | (#16850518)

At my school (in the US), my required math courses for my CS major were enough to be a minor, but of course didn't get credit for the minor. I think I was 3 math courses shy of a double major in CS and Math, but I had enough of math by that point that it was not going to happen. I thought most of the math was useless, though I'm sure some of it rubbed off into various problem solving skills. I can't tell you how other schools are in the US, but at mine, I definitely was given a big emphasis on math.

Re:Maybe I just misunderstand CS (0)

Anonymous Coward | more than 7 years ago | (#16850576)

I think it's rare for CS majors in the US to get much analysis at all, although a little formal real analysis may be lumped into their last calculus course. More common is calculus, linear algebra, discrete math (combinatorics, graph theory), maybe some numerical analysis, etc.

Re:Maybe I just misunderstand CS (1)

Sage Gaspar (688563) | more than 7 years ago | (#16850788)

I don't know if our universities synch up exactly with yours in terms of meaning, but in the U.S. at the bachelor's level, it'd be very rare for anyone to have six semesters of analysis. Maybe if you count the calculus sequence and basic ODEs, but there's very little serious analysis generally occuring in those classes.

Re:Maybe I just misunderstand CS (1)

A beautiful mind (821714) | more than 7 years ago | (#16850812)

The "old" system I was studying in is equivalent of a Masters, it was one five year block. Then lately they changed to the Bolognese system of 3 years batchelor and 2 years masters. As far as I know they still have 6 semesters of analysis in the first 3 years of a batchelor degree.

Re:Maybe I just misunderstand CS (1)

Opportunist (166417) | more than 7 years ago | (#16850994)

Hmm... if I (European) remember correctly, first year was 8 hours/week math, second was about the same (plus 4h MathLogic), after that it tapers off sharply if you (unlike me) don't go for the statistics branch.

Re:Maybe I just misunderstand CS (1)

Teancum (67324) | more than 7 years ago | (#16851572)

One reason why mathmatics is so heavily emphasized is because the CS departments were often appendages to the mathmatics departments, or were started in the mathmatics departments. About 30 years ago (showing my age here) when you couldn't even get a CS degree, most computer programmers had a BS degree in mathmatics. Almost all of the older CS professors usually had a PhD in Mathmatics, although one of my best CS profs had his PhD in Biology (and turned out to be the graphics algorithms teacher at my university... go figure).

I believe that largly due to this early emphasis on mathmatics, it has skewed the emphasis by some of those professors to more pure mathmatics concepts. While not bad by itself, I did find it boring after a fashion when one of these professors would get caught up with making a mathmatical proof of some CS theory.... particularly when you were in a class like compilers or data algorithms that had little to do with very abstract mathmatical proofs. Those younger professors who had a PhD in CS and spent time working "in the industry" tended to be much more grounded on coding fundimentals and teaching finite number theory instead.

For myself, while I think advanced mathmatics may have usefulness for hardcore computer science, that is the study of computer algorithms and computational theory, it doesn't have much of a practical application.

Of course I view myself as a software engineer seeking practical development of computer algorithms as opposed to a computer scientist that explores theoretical directions of computational concepts. In this regard, I consider software engineers to be very different from computer scientist.

Or more to the point, I think there ought to be a ratio of about 1 computer scientist to about 50 software engineers. Unfortunately, it is presumed that you would get a CS degree if you want to become a computer programmer. But if your school doesn't offer a software engineering degree (very, very rare) you are trained as a computer scientist first and a software engineer maybe as a supplimentary (sometimes optional) course.

Personally, (1)

cpux (970708) | more than 7 years ago | (#16850526)

In relation to computer science, I got a huge boost from linear algebra, probability & statistics, and a very discrete level of calculus material like riemann sums, taylor/maclaren series, root-finding algorithms (newton's method), etc. I also found that taking a logic course was very beneficial. It was from a philosophy standpoint, but was mathematical in nature, and boolean algebra was developed out of it after all. My uni also has a discrete math course which covered things like the fundamental theorem of arithmetic, set theory, counting laws, graph theory, and some other things useful in comp sci.

Formal grammar, predicate calculus, statistics (2, Interesting)

Twylite (234238) | more than 7 years ago | (#16850540)

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.

Re:Formal grammar, predicate calculus, statistics (1)

Morphine007 (207082) | more than 7 years ago | (#16850976)

I'd have to agree with the beginning of your post: Calculus isn't all that useful to a CS major. Don't get me wrong, calculus is useful in and of itself, but since computers can't do integrals or derivatives, it's kinda useless. Calculus combined with something like numerical methods, which teach you how to use various methods of approximation and interpolation to get a computer to understand calculus...well... that's a different story. Even then though, I don't tend to use calc or numerical methods for much. Algebra and Galois Fields tend to be the maths I use the most. GFs are especially nice for crypto since GF(2^8) and the operations that are closed over it represent everything you can do to a byte...

Mind you, I'm mostly interested in ai and crypto. Crypto is mostly a hobby, but for ai having a rock solid understanding of lin alg helps in performing things like computer vision (lin alg for the pixel manipulations, trig ftw for the angular calculations), path planning (okay, some calc, but mostly lin alg as we're, again, approximating a continuous curve over a discrete space, so it's summations instead of integrals) motion prediction (same as last) ... etc...

So again, I'd have to say, Algebra is the math that a CS major should be the strongest in. The formal languages, automata, graph theory, etc... is all fairly standard CS stuff. None of it is as much a cornerstone of good coding as lin alg IMHO, but they're all really really nice to have sometimes.

As for the rest of your post, it's pretty obvious that your experience has been with parsers and compilers (or something similar), in which case, the rest of your post is 100% true. However, for my corner of the CS world (ai and robotics) lin alg and trig are t3h sh!t... followed by probs/stats (for stochastic modelling/simulations)....

I guess a "YMMV" belongs at the end of each post in this topic as everyone needs different math tools based on what they're working with.

This should provide a bit of an answer to both the OP and the people asking "what do you need maths for if you're going to be a sysadmin?" (You're either trolling or confused as to what CS guys actually do, so I'll give the benefit of the doubt to you and shed some more insight into what some of us do...)

Re:Formal grammar, predicate calculus, statistics (1)

Twylite (234238) | more than 7 years ago | (#16852230)

I have worked with parsers and compilers in the past, but most of my time now is working with crypto ;) That said, I'm an SE by practice although a CS by qualification.

In my line of work SE and CS come together when I get to protocols and algorithms. Formal grammars are essential in describing protocols (think BNF) and modeling for robustness. As an example, getting FIPS certification for crypto hardware requires submitting a finite state model of the firmware.

I have a poor grounding in graph theory and linear algebra (I just apply the crypto algorithms) but have found it useful in optimisation of algorithms.

Statistics, IMHO, is the bridge between theory and reality when it comes to performance. A constant time algorithm can really suck if the constant is large enough ;) Sometimes it is better to use a slow-but-simple algorithm (easy to develop, debug & maintain) and optimise special but common cases, rather than using a complex but higher performance algorithm. Statistics can help you to understand the performance bounds of the application, how it will scale in the real world, etc. It also helps you to understand how numbers can lie, and the difference between good sampling and bad sampling (this microbenchmarks).

None of it is as much a cornerstone of good coding as lin alg IMHO, but they're all really really nice to have sometimes.

...but then CS isn't about good coding, it's about taking over the world (y'know, "science"). IMHO there is nothing better for good coding than to slow down, do a tiny thing at a time, and wonder what path execution will follow when your assumptions are wrong.

DSP (maybe I'm a bit biased) (1)

Matt_Bennett (79107) | more than 7 years ago | (#16850660)

I'm not a Computer Scientist- I'm an EE- and I may be biased towards the engineering type courses, but I think some digital signal processing type courses would be incredibly useful (beyond just engineers). Of course, there are a whole bunch of prerequisites, including calculus, differential equations, signals, and probability/stochastic processes. Not every CS major is going to be working on making new OSes- there has to be some application processing going on, and if you are working on data derived from meatspace, DSP and all the prerequisites are vital.

There are lots of electrical engineers forced into programming because the Computer Science guys just don't have the math background- and what we often end up with is pretty poorly done code because the coursework behind the engineering degree is lots of math and relatively little code. What I'd really like to see is a combination of better code and better systems to run that code.

Re:DSP (maybe I'm a bit biased) (1)

TeknoHog (164938) | more than 7 years ago | (#16851250)

I second the idea that you need calculus for many CS applications, for example probability and DSP, but there are also less obvious reasons to take calculus. For example, understanding the Fourier transform framework (with convolution theorem etc.) is a great eye-opener in many ways, and it comes up in surprising places. For example, Shor's factorizing algorithm depends on FT.

What do you want to do with your degree? (1)

Sage Gaspar (688563) | more than 7 years ago | (#16850696)

Depends totally on what direction you're planning on taking.

If you want to go onto grad school, double major in math and take everything you can. Electives and even core requirements probably have heavy overlap. It tends to be one of the easiest combinations in terms of course load. Also consider testing out a fall semester grad class or two in your senior year. These will probably look a lot like math classes. If you can't hack an undergrad math degree, odds are very good that the graduate CS program will kill you.

I have to confess that I have limited experience in computer science myself, but I've seen a couple uses for various areas of mathematics.

I was doing an optimization problem where I was trying to find the maximal distance apart of two points on a given surface along the surface itself. To begin with, in these kinds of optimization problems you want to know when you've found the answer and what kind of accuracy you have. To answer those questions you're going to need estimates and approximations, things that you learn in analysis. If your calculation is of critical importance, you don't want to just eyeball something, you want to know that you've got an answer with the appropriate accuracy.

The surface was basically defined in two different pieces glued together along their boundaries. I needed to calculate lengths along these boundaries where they were joined together. To calculate these lengths explicitly was literally impossible given the types of curves, and I ended up with an integral equation I couldn't resolve. So I used a combination of approximations for the values of the integrals and something like Newton's method from calculus to get a quickly converging answer to a problem that ground Maple to a halt when I tried the naive solution of just plugging it in.

If you're sampling data and using it to estimate the behavior of something, say a flow (like the movement of the wind or a river), you're going to want to know how accurate your data needs to be for your model to produce good results. This is a question in dynamical systems. Granted, this analysis may not be performed by the CS guy, but being able to do this sort of thing combined with having a good knowledge of computers opens a lot of exciting possibilities in science.

Similarly, in robotics, the configuration space of things like different joints on robot arms is a multi-dimensional surface, an object that is studied in differential geometry and topology. Using methods from calculus you can find the critical points in the configuration space, which it is generally a Good Idea to avoid (like a robot with its arm extended straight out) because of the fragility of the tolerance there (again, back to dynamics).

If you have a recursion, there are some fairly standard tricks you can try to apply to obtain a generating function, which can often lead to an easier computation or even a closed-form solution. There is a free text available on the internet, generatingfunctionology, which could be used as the basis for an independent study.

Things like encryption algorithms have found good uses for number theory. Graph theory can model relations between data or routes over a network. Statistics and probability are very useful for all sorts of things. Straight-up algebra and logic courses are great tools to get your mind working, though admittedly a lot of topics in your standard undergrad algebra course might be of limited use unless you're planning on pursuing a graduate degree. DEs and their solutions are great for most scientific applications. Discrete Math is usually the name they give to the mathematics course that is tailored towards computer science applications, so that's almost a no-brainer.

Statistics and Experimental Design (2, Insightful)

DoofusOfDeath (636671) | more than 7 years ago | (#16850716)

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

Lots (2, Informative)

ggKimmieGal (982958) | more than 7 years ago | (#16850856)

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.

Basic math skills (0)

Anonymous Coward | more than 7 years ago | (#16850906)

CS Student = Dork
Dork + No Shower = Typical Programmer
Typical Programmer + Fat + Slob = Slashdot Reader

How about (0)

Anonymous Coward | more than 7 years ago | (#16850912)

Discrete Maths []

All Major Mathematics Courses Should Be Taught (1)

avapex (1003914) | more than 7 years ago | (#16850924)

I think all major mathematics courses should be taught within a computer science curriculum. There is real-world purpose for all forms of mathematics. A software developer with a strong foundation in mathematics can develop programs to efficiently analyze or simulate real-world phenomena.

I think the most important are the following:

Discrete mathematics, otherwise finite mathematics should be taught because it is the best way to represent a finite machine. A computer is a finite machine with many countable sets.

Calculus is great for computer science. Students who take calculus develop strong problem solving skills. Multivariable calculus should be optionally taught to those who want to design 3D games.

Statistics and probability theory should be taught. Statistics is used to analyze, interpret and present data. Computers are used to perform calculations on data. The combination of statistics and computers facilitate decisions in all areas of science, business and government.

Math courses (2, Informative)

ShorePiper82 (1027534) | more than 7 years ago | (#16850942)

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.

Life, not CS (1)

cucucu (953756) | more than 7 years ago | (#16851094)

Not related to CS or Engineering, but I think that the most amazing piece of math is Cantor's diagonal argument [] . So simple, so beautiful, so insightfull. And such a strong conclusion: infinite comes in many sizes. It's 10 years since I been first exposed to the proof and I am still filled with joy when I contemplate the simplicity and power of its truth.

Graphics Guy (1)

WilyCoder (736280) | more than 7 years ago | (#16851186)

I've got a CS degree. When I began taking graduate courses for 3D graphics, I was quite upset that numerical analysis wasn't pushed onto me in undergrad. It would have been nice to not have to learn monte-carlo integration alongisde ray tracing. That way I could have given enough time to both to fully understand. Instead I felt rushed through both topics :\

To contribute to the topic, here is what I took:

Calculus 1-3 (3 was most important for me since it was about 3D analytical geometry)
Differential Equations
Discrete I (combinatorics), Discrete II (Finite Automata & Language Theory)

What I wish I had taken:
Linear algebra (matrix stuff)

All of them. (1)

Metasquares (555685) | more than 7 years ago | (#16851260)

Every math course I've taken has in some way been useful to me as a computer scientist (this is partially because the area I'm interested in researching is applying mathematical concepts to CS topics, however). I would recommend at least minoring in math if you're going to do a CS degree.

According to Ron Graham and Donald Knuth (2, Interesting)

robkill (259732) | more than 7 years ago | (#16851342)

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

Concrete Mathematics []

3 words... (3, Insightful)

RingDev (879105) | more than 7 years ago | (#16851438)

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.


The useful maths I took back in the day... (1)

Dammital (220641) | more than 7 years ago | (#16851610)

... were Boolean algebra, numerical analysis, matrices, queueing theory, and a semester of descriptive stat. I didn't find linear algebra of any use to me, nor the year of formal stat. Calculus is kinda like long division -- I don't use it much (if at all), but it's good to know it's there.

Oh, and some of my pals recommended formal logic. I skipped that, 'cause I wasn't terribly interested in spending a semester playing word games. I don't think I've ever missed it, but someone else who actually took the class might straighten me out here.

Bar none, the best math class I ever took was a freshman seminar with no textbook, no lecture, no assignments and no exams. You were graded 100% on class participation, and the topic was... math. The prof stood off to the side and would start the conversation: "How many integers are there?" might be a typical query. He'd sit back while we discussed the matter in Socratic fashion, sometimes nudging us in a particular direction. That semester we "invented" limits, cardinalities, discontinuous functions and other groovy things. I doubt that this particular class had much direct application in my professional life, but it was the first fun math I'd ever done in my short life.

At my university... (1)

mmortal03 (607958) | more than 7 years ago | (#16851618)

At my university, for the Computer Science students, the core math classes taught are Calculus I, Calculus II, Discrete Mathematics, Linear Algebra, and Probability and Statistics. Then, depending on the track you choose, you will either take Differential Equations and Numerical Analysis, or Theory of Numbers or Discrete Mathematics II.

From what I have been told, multiple semesters of Numerical Analysis used to be required. I don't know why it was changed. Maybe they thought it was overkill for an undergraduate?

I have heard good arguments for placing Linear Algebra above Calculus in importance in today's digital world, however, it looks like Calculus is still what is being required for a full year.

I personally would like to be able to fit in some sort of Computer Statistical Analysis/Computational Statistics course before I graduate (I am a Software Engineering student, not a Computer Science major, and interested in sports statistics) but I doubt I'll be able to. There is just too much material to cover these days in an undergraduate Engineering curriculum, especially if you, like me, switched your major at some point. I hear that probability theory is a good one to take if you are interested in getting a job in some sort of prediction-based industry.

It seems like there are never too many possibly useful math classes one can take. I'd like to know myself which ones are the most practical, by their industrial application, however.

Prob and Stat (1)

Mycroft_514 (701676) | more than 7 years ago | (#16851628)

Which was required for my degree. As a DBA today, you have to use this, as even single machines are going into parallel processors. So one has to use Prob and Stat to calculate what the machine is going to do. And while I was working on Teradatas, with as many as 150 parallel processors, I lived in that world.

Even the micros today are going to parallel processors. Calculas? Haven't touched it in 25+ years in the business world of CS.

The other course that was useful was data structures. Tought me to think in linked lists. In one case it taught me to look at the problem from the link point of view. So the process I was on was codeable in 4n lookups, instead of n! + 3n lookups!

Oh, and to all the doubters there. When calculating the processing power of multiple processors, don't forget to subtract off the OS on each processors. Most venders won't tell you about that little probelm when calculating the machine size.

My most useful classes (1)

greg1104 (461138) | more than 7 years ago | (#16851650)

I received both a BS and an MS in computer science at Stevens Institute of Technology back in 1993. Most of the classes people are suggesting here were all required to earn the undergrad degree there; in addition to 3 semesters of Calculus, you also had to pass discrete mathematics, statistics (two semesters of that), and linear algebra as part of the standard program.

Out of the required math classes, two stood out as being particularly helpful for my career in software development. The introductions to logic, graph theory, proof, and other topics in the discrete math course were absolutely vital to understanding more complicated computer science constructs. I recall trying to understand how compilers were built before that time and being completely confused, but everything made perfect sense after completing that class.

The other class was in operations research, a subject I didn't notice anyone bringing up here yet. OR really made an impression on me as it provided a bridge for how to apply several types of mathematical approaches that had seemed completely theoretical to solving the kinds of real-world problems computers are good at helping with. As the most obvious example, I feel that having a solid practical understanding of how to model a complicated queue or flow across a series of queues is wildly more useful for building software than anything related to big-O analysis will ever be, unless you're one of the rare people writing basic algorithm libraries. My experience is that you'll see dozens of messaging queue issues in business software design for every problem that requires an understanding of complexity analysis. And learning how formally construct decision trees turns into a great tool when you get far enough along that you're managing projects instead of just working on them. I considered it unfortunate that I didn't discover this class of mathematics until very late into my time at school, as I would have gladly taken more of it and benefitted from--something I can't say about statistics or linear algebra, where I felt the basic introduction gave sufficient understanding for normal programming tasks.

Crypto (1)

Halo- (175936) | more than 7 years ago | (#16851840)

When I was in college, I struggled with Calculus. It got to the point where I really thought I was "not good at math" because I wasn't good at calc. Then I discovered I didn't need to take Calc II/III or Differential Equations. I could substitute more "advanced" classes like Graph Theory, Number Theory, and Cryptology.

Suddenly I was good at math. Not only that, but I got a whole lot better at computer science. The more advanced classes focus more on how to think logically, and how to operate in procedures. Cryptology is especially important because it is one of those items which most computer scientists will use, but only in passing, and using it badly is often worse than not using it at all. An understanding of cryptology brings with it a lots of logic, set theory, and optimization skills.

I would hope (1)

EFGearman (245715) | more than 7 years ago | (#16851984)

That boolean algebra/logic be taught as well. You would think that would be a 'no-brainer', but that's the phrase I used to describe some code recently. And I can't tell you how many times I've had to fix someone else's program because they had a series of conditions totally messed up.

At least one, I rewrote the whole thing, because not only did the other coder have the wrong logic in place to try and solve what he wanted to solve, it was also ordered very poorly.

At least one class on probability and statistics would be good, vector math/algebra, a topology course (ok I took that and oddly it helps), trigonometry if going into graphics processing/modeling, and a number of other courses I took but can't remember. The only thing I haven't used in the last year, the rest of the above I have, is some of the higher level calculus.

Double! (0)

Anonymous Coward | more than 7 years ago | (#16852066)

You've already acknowledged the constraints: there are only so many math courses that one can "squeeze in". I assume you mean, "squeeze into a four year CS degree". So stop doing that: take the Math/CS double major, and take an extra year if you need it. For students coming into the university with AP, IB or dual-enrollment hours, they may even get back onto a four year schedule.

I can't speak for the entirety of the technical industry, but I feel pretty comfortable with the following statement: anyone who considers herself a professional Computer Scientist would most likely have benefited from a double major in an appropriate field: stats, math, physics, chemistry, engineering (probably won't have time for one of these), biology, meteorology, oceanography or philosophy. I listed here the subjects with strong analytical or computational components.

A CS degree is always better in a double major.

Numerical Analysis (1)

JohnWiney (656829) | more than 7 years ago | (#16852156)

At least an introductory course in numerical analysis should be included. I know, I know - no one does arithmetic with computers. But somehow, in my career, it has arisen time and tine again.
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>