
The Math Really Required in Computer Science
The answer is, of course, "it depends". So let's look at some subareas of computer science and software engineering, and see what math is required in each.
Feel free to edit this like mad; this is just a sketch so far....
Programming Languages
Suppose you are studying and/or designing computer languages.
Discrete functions play a central role. Notions like transitivity and commutativity. Induction is a critical reasoning method, and it is also used in definitions of programming languages. Things like basic set theory are also important; the sets tend to be countable.
HumanComputer Interaction
A knowledge of statistics is important, in order to set up good experiments and to interpret results correctly.
Software Testing
It depends.... Most software testing probably doesn't require any math at all. Particular methods of testing might require very sophisticated maths.
Formal Methods
Programming using formal methods ensures that the resultant program is more likely to be correct. Formal methods may well be the standard way to program in the nottoodistant future. Or maybe not.
Users of such systems need to be able to manipulate complex statements in formal logic, and to be able to help put together formal proofs. The proofs required are usually based on induction and other basic math techniques like proof by contradiction.
Numeric Analysis
Some people really do just crunch the heck out of numbers for a living. Key issues for such people are finding algorithms that converge and finding algorithms that are fast. Proving that an algorithm converges often requires calculus. An aspiring numerical analyst might get a BS in CS and take 34 semesters of calculus and a semester on numerical analysis; as far as I understand this still wouldn't be enough. Numeric analysists probably shouldn't be taking a standard CS or SE degree program. (Well, I've heard this kind of sentiment a lot, even though most CS people think they are just fine at number crunching. References would be useful....)
Cryptography
Cryptographic programs are either based on libraries made by professionals, or they have security holes in them that the serious guys can find pretty quickly. Cryptographic theory requires a lot of math theory, including number theory and
Graphics
Graphics is mathheavy. Linear algebra and high school geometry is required to get anywhere at all; calculus is required when the models are continuous, or in general when one wants to understand how the equations behind the scenes work.
Networking
Requires calculus and probability? Help, networking people?
Summary So Far
HCI is different. Moving on.
Most SEspecific areas don't require any particular math. Any math known is for the person's edification, or because they are looking for an excuse to use their math knowledge.
Most areas in CS require discrete maths: set theory, functions, relations, inductive reasoning.
Graphics and Networking are different–they seem to require continuous math like calculus and linear algebra.
