The Role of Math in Computer Science

A place to discuss the science of computers and programs, from algorithms to computability.

Formal proofs preferred.

Moderators: phlip, Prelates, Moderators General

The Role of Math in Computer Science

Postby Magitek » Thu Aug 30, 2007 4:16 am UTC

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?
Magitek
 
Posts: 28
Joined: Fri Aug 24, 2007 5:54 am UTC

Postby davean » Thu Aug 30, 2007 5:37 am UTC

I wouldn't consider that nearly enough math. They should also require 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.

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.
User avatar
davean
Site Ninja
 
Posts: 2436
Joined: Sat Apr 08, 2006 7:50 am UTC

Postby colfax » Thu Aug 30, 2007 5:44 am UTC

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--
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.
User avatar
colfax
 
Posts: 15
Joined: Wed Aug 29, 2007 6:00 am UTC

Postby Magitek » Thu Aug 30, 2007 5:48 am UTC

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.

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
 
Posts: 28
Joined: Fri Aug 24, 2007 5:54 am UTC

Postby davean » Thu Aug 30, 2007 6:23 am UTC

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.
User avatar
davean
Site Ninja
 
Posts: 2436
Joined: Sat Apr 08, 2006 7:50 am UTC

Postby demon » Thu Aug 30, 2007 9:45 am UTC

I'm going to start university this October and I'm taking a double course, CS and Math. It just follows from the opinion that I share with davean - that CS is Math. I know a lot of people who decided against the university I chose precisely because there's very little "computer knowledge" in the course (at least initially). The argument they sometimes use is that you need those classes to be up-to-date. To which I invariably call bull, as I believe the opposite - that amassing a ton of practical skills with no understanding is what is going to make your knowledge age quickly. So I whole-heartedly agree that the more Math you learn, the better.
demon
 
Posts: 170
Joined: Tue Feb 06, 2007 8:13 pm UTC

Postby djn » Thu Aug 30, 2007 11:58 am UTC

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


Is biology particle physics?
User avatar
djn
 
Posts: 604
Joined: Mon May 07, 2007 1:33 pm UTC
Location: Horten, Norway

Postby evilbeanfiend » Thu Aug 30, 2007 12:40 pm UTC

my view is that maths is essential for CS. however CS is not essential for a career in programming, 90% of the programming jobs out there seem to require little or no maths or proper CS.
in ur beanz makin u eveel
User avatar
evilbeanfiend
 
Posts: 2650
Joined: Tue Mar 13, 2007 7:05 am UTC
Location: the old world

Postby skeptical scientist » Thu Aug 30, 2007 1:50 pm UTC

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
User avatar
skeptical scientist
closed-minded spiritualist
 
Posts: 6149
Joined: Tue Nov 28, 2006 6:09 am UTC
Location: San Francisco

Postby evilbeanfiend » Thu Aug 30, 2007 1:58 pm UTC

indeed computer science and computer engineering
in ur beanz makin u eveel
User avatar
evilbeanfiend
 
Posts: 2650
Joined: Tue Mar 13, 2007 7:05 am UTC
Location: the old world

Postby skeptical scientist » Thu Aug 30, 2007 2:04 pm UTC

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
User avatar
skeptical scientist
closed-minded spiritualist
 
Posts: 6149
Joined: Tue Nov 28, 2006 6:09 am UTC
Location: San Francisco

Postby zenten » Thu Aug 30, 2007 2:10 pm UTC

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
 
Posts: 3797
Joined: Fri Jun 22, 2007 7:42 am UTC
Location: Ottawa, Canada

Postby EvanED » Thu Aug 30, 2007 3:01 pm UTC

Software engineering is what struck me too. There's a good bit of difference though between software engineering and programming, so even that isn't a perfect match...
EvanED
 
Posts: 4101
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI

Postby colfax » Thu Aug 30, 2007 3:25 pm UTC

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
User avatar
colfax
 
Posts: 15
Joined: Wed Aug 29, 2007 6:00 am UTC

From a mathematics point of view..

Postby Lemur » Fri Aug 31, 2007 7:16 am UTC

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.
Lemur
 
Posts: 8
Joined: Tue Dec 12, 2006 3:50 am UTC

Postby antonfire » Fri Aug 31, 2007 7:57 am UTC

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?
User avatar
antonfire
 
Posts: 1771
Joined: Thu Apr 05, 2007 7:31 pm UTC

Postby Magitek » Sat Sep 01, 2007 6:03 am UTC

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?
Magitek
 
Posts: 28
Joined: Fri Aug 24, 2007 5:54 am UTC

Postby xyzzy » Sat Sep 01, 2007 8:14 pm UTC

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.
"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
User avatar
xyzzy
Meta-Titled
 
Posts: 263
Joined: Sun Mar 18, 2007 10:02 pm UTC
Location: Colossal Cave

Postby colfax » Sat Sep 01, 2007 8:16 pm UTC

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
User avatar
colfax
 
Posts: 15
Joined: Wed Aug 29, 2007 6:00 am UTC


Return to Computer Science

Who is online

Users browsing this forum: No registered users and 3 guests