[ale] an aside - mathematics for programming

Vernard Martin vernard at cc.gatech.edu
Tue Nov 21 10:09:47 EST 2000


> 1. In my two years of programming, I've not run across a problem that really 
> required any high-level mathematical concepts to solve.  What then, is the
> reason for the intensive math classes (i.e., algebra, calculus, geometry, 
> etc.)? When will classes like these come into play.

Well, to be honest, they may not ever come into play. I'm working on a phd (and
have been do for over 7 years) and in general, you won't need these skills to
be a programmer. Being a _computer scientist_ is a completely diffferent matter.
Its the difference between a deer hunter and being a soldier. They share skills
but they far from being the same thing.

The reason CNN and other folks are saying math is core to hacking ability is
that it appears that the ability to understand certain categories of
mathematics is indicative of potential in being good at solving problems as
well as many of the other skills used in computer science. Also, it is strongly
indicative of being a good programmer. One thing we have noticed here in the
graduate program at Ga Tech is that students with a strong background in
mathematics and theory do MUCH better than students that don't. I'm not talking
something like a difference between a 3.0 GPA and a 3.5 GPA.

> 2. If you agree that math is indeed necessary, what classes are ABSOLUTELY 
> essential to be a successful and effective programmer at all levels?  What 
> would you recommend that I take?

If you want to be a programmer then I can honestly say that you probably have
all the required math skills you need. Exposure to more math is always a good
thing though. What i have discovered for myself is that you often abstract out
a lot of the theory from the math and are able to apply it elsewhere. For
instance, you can know how to code AVL trees (height-balanced trees) all day
long but if you don't understand the mathematics and theory behind why they are
useful then you can't apply that knowledge in another situation. Its like being
a carpenter that uses screwdrivers *only* for screwing in screws and not for
anything else. It sounds great at first and then you realize that you use it to
extend your reach, you use it scour marks on metal, etc. If you don't learn the
why (which almost always lies in mathematics or math related theory) then you
limit yourself in some ways. This is just my personal opinion and is strongly
colored by the fact that I am an academic by nature and damned near a 
professional student. But I'm also a programmer.

Here is the strange part though. Having a strong math background can make you a
better programmer but it won't always make you a better programmer. Obviously,
it is dependent on the person. So is it necessary that you take a bunch of
math courses? No, definitely not. Would some classes be beneficial? Definitely
yes. Which ones would you need? That depends on what level you are currently
trying to obtain. Statistics was very useful in understanding the scheduling
issues of operating systems and especially real-time systems. I found my 
extensive line of calculus courses invaluable when I was working on a NASA 
project that was doing weather modeling on parallel and distributed platforms.

> 3. Does anyone know of a general book that cover most
> of the math a typical programmer would need?

Nope. To my knowledge, its never been collected in that kind of context. I 
often recommend that folks go to a library and peruse a copy of "The Art of
Computer Programming" by Donald Knuth. He introduces the mathematics involved
with certain common algorithms (such as searching, sorting, etc) when he
introduces the concept. Eve though everything that is present 
 
> I appreciate your time and hope you don't mind lack of
> Linux subject matter.  

Don't mind at all. As long as it contributes to the group in some way and
doesn't degenerate too far from the main focus of Linux, the list should ge
fine.

hope this helps

Vernard
--
To unsubscribe: mail majordomo at ale.org with "unsubscribe ale" in message body.





More information about the Ale mailing list