What Math Courses Should We Teach CS Students? 392
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?"
Re:computational statistics (Score:5, Interesting)
Re:computational statistics (Score:5, Interesting)
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.
Maybe I just misunderstand CS (Score:3, Interesting)
The biggest chunk of it all was 6 semesters of Analysis [wikipedia.org] and 4 of numerical analysis [wikipedia.org].
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?
Formal grammar, predicate calculus, statistics (Score:3, 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. [acm.org].
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:
Re:computational statistics (Score:3, Interesting)
Re:Core Math for Comp Sci. (Score:2, Interesting)
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).
Re:Why do CS? (Score:3, Interesting)
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.
According to Ron Graham and Donald Knuth (Score:3, Interesting)
Concrete Mathematics [amazon.com]
Re:Some Math greater than Other Math (Score:5, Interesting)
Re:Some Math greater than Other Math (Score:2, Interesting)
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.
Yes, yes, yes, Linear Algebra. (Score:2, Interesting)
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.
Re:Yes, yes, yes, Linear Algebra. (Score:3, Interesting)
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.