View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearchHelp Guide

The Math Really Required in Computer Science

The answer is, of course, "it depends". So let's look at some sub-areas 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.

Human-Computer 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 not-too-distant 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 3-4 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 math-heavy. 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 SE-specific 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.