## The Role of Math in Computer Science

**Moderators:** phlip, Moderators General, Prelates

### The Role of Math in Computer Science

I know this might be a pretty touchy subject, but I'd like to hear your opinions,

What role should Math play in a Computer Science major at a university? At my school, the CS major contains essentially all of the core classes that Math majors take (Calculus 1-3, Discrete Math, Linear Algebra, etc) but should so much math be required?

Specifically, I'm not convinced that taking the entire calculus sequence is essential to someone in the CS field. Obviously if you're doing a program to do calculus equations then you need that knowlege, but requiring it for all majors would be similar to requiring a pre-med degree in case you ever have to do a medical program.

I can see where portions of Discrete Math and Linear Algebra are useful, I just don't know if it should be required.

Furthermore, I'm curious, are there any CS majors out there that aren't necessarily fond of math? What was your experience with it?

What role should Math play in a Computer Science major at a university? At my school, the CS major contains essentially all of the core classes that Math majors take (Calculus 1-3, Discrete Math, Linear Algebra, etc) but should so much math be required?

Specifically, I'm not convinced that taking the entire calculus sequence is essential to someone in the CS field. Obviously if you're doing a program to do calculus equations then you need that knowlege, but requiring it for all majors would be similar to requiring a pre-med degree in case you ever have to do a medical program.

I can see where portions of Discrete Math and Linear Algebra are useful, I just don't know if it should be required.

Furthermore, I'm curious, are there any CS majors out there that aren't necessarily fond of math? What was your experience with it?

Can you program without these? Sure, but you are unlikely to get much new done. You can't really do algorithm analysis without probability and I don't see that on your list. Most computation on computers is probably Liner Algebra by FLOPS. Graph theory forms the basis of quite a few algs, including but not limited to scheduling, routing, and model checking. Computer science is basically a branch of math.

Your course requires far too little math; nice troll.

To preface my response, I'll say that I've only recently graduated from school into the real world.

With that out of the way, I really see math as an integral part of the computer curriculum. Just to understand algorithm analysis alone requires material from all three calculus courses. Then if you ever want to get into neural network simulation or any advanced AI courses, a solid understanding of statistics is required. Any graphics programming requires advanced geometry, not to mention a solid knowledge of vectors.

Basically I'm trying to say that if you want to be an engineer (someone that understands software on a fundamental level, and can devise and implement new algorithms, not necessarily someone with an engineering degree) then you need all the math you can handle. If you just want to be a code monkey (reimplementing the same algorithms over and over again, never really producing anything new) then you can probably get by without it.

Just for some anecdotal evidence, I've never regretted taking a math class; there are a few I've regretted not taking.

--EDIT--

Good call on those, I always forget about graph theory and the like; I've had them beaten into me to the point of being second nature.

With that out of the way, I really see math as an integral part of the computer curriculum. Just to understand algorithm analysis alone requires material from all three calculus courses. Then if you ever want to get into neural network simulation or any advanced AI courses, a solid understanding of statistics is required. Any graphics programming requires advanced geometry, not to mention a solid knowledge of vectors.

Basically I'm trying to say that if you want to be an engineer (someone that understands software on a fundamental level, and can devise and implement new algorithms, not necessarily someone with an engineering degree) then you need all the math you can handle. If you just want to be a code monkey (reimplementing the same algorithms over and over again, never really producing anything new) then you can probably get by without it.

Just for some anecdotal evidence, I've never regretted taking a math class; there are a few I've regretted not taking.

--EDIT--

combinatorics, graph theory, probability, modern algebra classes and quite possibly numerical methods. Hopefully you'll pick up set theory along the way along with a bit of topology, category theory and statistics.

Good call on those, I always forget about graph theory and the like; I've had them beaten into me to the point of being second nature.

Last edited by colfax on Thu Aug 30, 2007 5:50 am UTC, edited 1 time in total.

I don't mean to really troll, I'm just curious if whether or not Computer Science has or ever will evolve to a state where it becomes its separarted from its parent branch of mathematics.

I've heard of some people argue that it boils down to programming vs "real" computer science, but usually the only distinctions made in major offerings is Computer Science vs Information Systems which seems to hold more of a business side of computers and still doesnt focus as much programming as CS.

Magitek wrote:Well, to be fair, the Discrete Math class goes over some of what you mentioned about graph and set theory and a CS class about algorithms goes over more about that graph theory.

No, it mentions them. It teaches nothing in sufficient depth to actually be of use. Don't take it, take the component classes.

Magitek wrote:I don't mean to really troll, I'm just curious if whether or not Computer Science has or ever will evolve to a state where it becomes its separarted from its parent branch of mathematics.

How could it? It *is* math. You can't "evolve" away from yourself. Can calculus stop being math?

Magitek wrote:I've heard of some people argue that it boils down to programming vs "real" computer science, but usually the only distinctions made in major offerings is Computer Science vs Information Systems which seems to hold more of a business side of computers and still doesnt focus as much programming as CS.

Most places don't start computer science until grad. The ones that do only offer it as an option; not a requirement.

- evilbeanfiend
**Posts:**2650**Joined:**Tue Mar 13, 2007 7:05 am UTC**Location:**the old world

- skeptical scientist
- closed-minded spiritualist
**Posts:**6139**Joined:**Tue Nov 28, 2006 6:09 am UTC**Location:**San Francisco

One wonders whether computer science and programming should be separate majors. I'm studying what a lot of people could call computer science, and have only taken 3 CS courses in my life. The computer science that prepares someone to enter a PhD in computer science is very different from the computer science that prepares someone to design and write programs. Even if you are an engineer working at a high level designing overall program and data storage structures as opposed to someone merely implementing algorithms, the things you need to know are very different from the things you need to know in order to prove P=/=NP, which can include mathematics as esoteric as algebraic geometry, but don't require one to be able to code in anything other than pseudocode.

I'm looking forward to the day when the SNES emulator on my computer works by emulating the elementary particles in an actual, physical box with Nintendo stamped on the side.

"With math, all things are possible." —Rebecca Watson

"With math, all things are possible." —Rebecca Watson

- evilbeanfiend
**Posts:**2650**Joined:**Tue Mar 13, 2007 7:05 am UTC**Location:**the old world

- skeptical scientist
- closed-minded spiritualist
**Posts:**6139**Joined:**Tue Nov 28, 2006 6:09 am UTC**Location:**San Francisco

evilbeanfiend wrote:indeed computer science and computer engineering

The latter sounds like designing processors and graphics cards and so forth. But yeah, computer science and software engineering.

I'm looking forward to the day when the SNES emulator on my computer works by emulating the elementary particles in an actual, physical box with Nintendo stamped on the side.

"With math, all things are possible." —Rebecca Watson

"With math, all things are possible." —Rebecca Watson

skeptical scientist wrote:One wonders whether computer science and programming should be separate majors. I'm studying what a lot of people could call computer science, and have only taken 3 CS courses in my life. The computer science that prepares someone to enter a PhD in computer science is very different from the computer science that prepares someone to design and write programs. Even if you are an engineer working at a high level designing overall program and data storage structures as opposed to someone merely implementing algorithms, the things you need to know are very different from the things you need to know in order to prove P=/=NP, which can include mathematics as esoteric as algebraic geometry, but don't require one to be able to code in anything other than pseudocode.

I would wonder why you would need a BSc in programming. It seems more like a trade school type thing.

zenten wrote:I would wonder why you would need a BSc in programming. It seems more like a trade school type thing.

Exactly, it's like the difference between a Welder and a Mechanical Engineer.

~Colfax

"Computer Science is no more about computers than astronomy is about telescopes."

-Edsger W. Dijkstra

"Computer Science is no more about computers than astronomy is about telescopes."

-Edsger W. Dijkstra

### From a mathematics point of view..

I just graduated with a math degree, focusing on enumerative geometry/topology, and now I'm working in programming/CS - building a collaborative filter (aka Pandora, Amazon's recommender) in Python, or maybe Haskell/Lisp.

My boss specifically wanted a mathematician for the job, and I completely agree with him. The normal algorithms for this kind of thing are along the lines of Singular Value Decomposition and Probabilistic Latent Semantic Analysis. If you look at those articles, it's pretty clear that I need a damn-good background in stats & linear algebra.

To actually improve on the current methods, I'm most likely going to have to pull some weird math out of my hat (for anyone who cares, it's looking more and more like Lie Groups/Automorphic Forms have useful information).

So anecdotally, yes, math is critical for good CS.

My boss specifically wanted a mathematician for the job, and I completely agree with him. The normal algorithms for this kind of thing are along the lines of Singular Value Decomposition and Probabilistic Latent Semantic Analysis. If you look at those articles, it's pretty clear that I need a damn-good background in stats & linear algebra.

To actually improve on the current methods, I'm most likely going to have to pull some weird math out of my hat (for anyone who cares, it's looking more and more like Lie Groups/Automorphic Forms have useful information).

So anecdotally, yes, math is critical for good CS.

The CS department at my school offers their own mathematics course, which covers the bits that people need to get to the more interesting courses without requiring a bunch of math classes. I don't know how well this actually works.

Jerry Bona wrote:The Axiom of Choice is obviously true; the Well Ordering Principle is obviously false; and who can tell about Zorn's Lemma?

The one thing that frustrated me the most about a lot of my math classes is when the teachers say "oh, for those of you who are in Chemistry, you'll use this" or "all the bio majors, here's why you're in the class"

But they never talk about how it would be used in CS. Anyone else have any similar experiences?

Probably because the line between Applied Mathematics and Computer Science is so blurred. Similarly the line between Pure Mathematics and Computer Science.

When you take this into account, most of the math courses will probably be applicable. Number theory would be basically required for cryptography, group and category theory are useful (especially if you want to work with Haskell), Linear Algebra, Calculus, Propositional Calculus (probably not taught, but I found it a good introduction to the idea of formal mathematical systems, which is effectively what a programming language is). Anything you can find the Math department teaching a course for will probably the usable in Computer Science.

On the other hand, you probably won't need the full material in many areas, but a passing familiarity with the ideas and concepts is always good.

When you take this into account, most of the math courses will probably be applicable. Number theory would be basically required for cryptography, group and category theory are useful (especially if you want to work with Haskell), Linear Algebra, Calculus, Propositional Calculus (probably not taught, but I found it a good introduction to the idea of formal mathematical systems, which is effectively what a programming language is). Anything you can find the Math department teaching a course for will probably the usable in Computer Science.

On the other hand, you probably won't need the full material in many areas, but a passing familiarity with the ideas and concepts is always good.

"Wile E. Coyote was a theoretical mathematician." - Leliel

"Modern life can be so boring without elements of the bizarre or the fantastical. Hence, we have steampunk." - Me

"Modern life can be so boring without elements of the bizarre or the fantastical. Hence, we have steampunk." - Me

Magitek wrote:Wow, that sounds really cool, a math class for CS.

The one thing that frustrated me the most about a lot of my math classes is when the teachers say "oh, for those of you who are in Chemistry, you'll use this" or "all the bio majors, here's why you're in the class"

But they never talk about how it would be used in CS. Anyone else have any similar experiences?

When your sitting in class, just insert that statement after everything you learn, it's pretty close to the truth.

~Colfax

"Computer Science is no more about computers than astronomy is about telescopes."

-Edsger W. Dijkstra

"Computer Science is no more about computers than astronomy is about telescopes."

-Edsger W. Dijkstra

### Who is online

Users browsing this forum: Google [Bot] and 3 guests