August 1, 2008 5:19 AM Subscribe

Applied Math Filter: Help me use math!
I'd like to learn more about mathematics and it's practical applications - particularly in Computer Science

I'm a Computer Networking graduate (under 25) who never really done much math at university. My course was somewhere between computer science and communications engineering so maths sort of slipped through the cracks.

Now, I'm looking to re-learn math. I know that a lot of mathematics is abstract but I'm having difficulties seeing practical applications.

Where I'm at:

I took calculus at high school but just scraped through (I spent more time fighting with the teacher than learning). I don't remember a bit of it. I'm pretty much at "square one" so will be learning from the start. I consider myself a quick learner in most areas but had a horrible foundation in math so never picked it back up. I've bought a couple of math books which should teach me the theory I need. I've always thought graphing calculators were pretty interesting but lack the mathematical knowledge to necessitate their use (or purchase). I'm currently in the process of ditching my "college job" to go for a "real job".

What I want:

I want to learn math with a view to using it practically (preferably in computer science).

How you can help:

I'd like suggestions on how I should go about learning mathematics and its practical applications. Which areas should I look at if I want to use mathematics in computing? I think my problem is that I can't see a practical application for math that I'd like to explore but I have a strong urge to develop my mathematics skills.

Any help would be greatly appreciated! Thanks!
posted by dcbarker to Education (13 answers total) 15 users marked this as a favorite

I'm a Computer Networking graduate (under 25) who never really done much math at university. My course was somewhere between computer science and communications engineering so maths sort of slipped through the cracks.

Now, I'm looking to re-learn math. I know that a lot of mathematics is abstract but I'm having difficulties seeing practical applications.

Where I'm at:

I took calculus at high school but just scraped through (I spent more time fighting with the teacher than learning). I don't remember a bit of it. I'm pretty much at "square one" so will be learning from the start. I consider myself a quick learner in most areas but had a horrible foundation in math so never picked it back up. I've bought a couple of math books which should teach me the theory I need. I've always thought graphing calculators were pretty interesting but lack the mathematical knowledge to necessitate their use (or purchase). I'm currently in the process of ditching my "college job" to go for a "real job".

What I want:

I want to learn math with a view to using it practically (preferably in computer science).

How you can help:

I'd like suggestions on how I should go about learning mathematics and its practical applications. Which areas should I look at if I want to use mathematics in computing? I think my problem is that I can't see a practical application for math that I'd like to explore but I have a strong urge to develop my mathematics skills.

Any help would be greatly appreciated! Thanks!

I've worked in the computer science field for about 25 years, and the only time I've ever had to use math more complex than algebra was in writing games on the side. Math is good for teaching you how to think logically, but symbolic logic is even better.

posted by felix at 6:18 AM on August 1, 2008

posted by felix at 6:18 AM on August 1, 2008

When I used to be a programmer my knowledge of math helped me quite a bit, linear algebra and calculus are both essential IMO. What I would suggest is taking some night classes at a local college, it's an easy way to learn the basics.

posted by Vindaloo at 6:20 AM on August 1, 2008

posted by Vindaloo at 6:20 AM on August 1, 2008

A lot of scientific computing uses Numerical Methods (Linear Algebra on crack). Congujate gradients, linear/nonlinear solvers, all that stuff is used in heavy duty physics simulations (ie fluid dynamics, materials modelling etc) and other calculations. Even networking needs statistics for stuff like queuing theory (Poisson distributions, Gamma, etc).

It depends what you are trying to do, but guaranteed there is some math in there.

posted by sandking at 6:42 AM on August 1, 2008

It depends what you are trying to do, but guaranteed there is some math in there.

posted by sandking at 6:42 AM on August 1, 2008

I feel like if you want to understand mathematics as it relates to CompSci, you'll want to understand infinite series, particularly Taylor and MacLaurin series. These are the things the use to program those fancy calculators that will give you e^(-16) to 15 digits accurately.

Of course, in order to do this, you'll need a good calculus background.

posted by King Bee at 7:31 AM on August 1, 2008

Of course, in order to do this, you'll need a good calculus background.

posted by King Bee at 7:31 AM on August 1, 2008

The umbrella term for most of what you need (sans calculus) is Discrete Mathematics. There's a bunch of good books on the topic.

posted by signal at 8:09 AM on August 1, 2008

posted by signal at 8:09 AM on August 1, 2008

I've been a professional programmer for 8 years or so.

Algebra is of course crucial. Logic is the essence of programming, sometimes (as in logic coverage testing) requiring some formal knowledge. Trig comes up occasionally, but I have to look it up anyway. (What's sin 90 again?) Calculus almost never. I'd say signal is right on about discrete math. You need to have a relatively intuitive understanding of complexity theory, graph theory, and algorithms, particularly big-O notation.

If you're interesting in math as it relates to computer science, I'd suggest finding a problem you want to solve and learning the math as you go, rather than trying to learn all the math you think you'll need up front.

posted by callmejay at 8:48 AM on August 1, 2008

Algebra is of course crucial. Logic is the essence of programming, sometimes (as in logic coverage testing) requiring some formal knowledge. Trig comes up occasionally, but I have to look it up anyway. (What's sin 90 again?) Calculus almost never. I'd say signal is right on about discrete math. You need to have a relatively intuitive understanding of complexity theory, graph theory, and algorithms, particularly big-O notation.

If you're interesting in math as it relates to computer science, I'd suggest finding a problem you want to solve and learning the math as you go, rather than trying to learn all the math you think you'll need up front.

posted by callmejay at 8:48 AM on August 1, 2008

Math for Programmers and Math Every Day talk about what's useful and why without giving specifics about how to learn it.

MIT's Open Courseware has a course called Math for Computer Science. Sounds like a good place to start.

posted by Zed_Lopez at 9:15 AM on August 1, 2008

MIT's Open Courseware has a course called Math for Computer Science. Sounds like a good place to start.

posted by Zed_Lopez at 9:15 AM on August 1, 2008

Read the Bible :

Introduction to Algorithms

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Then read the New Testament :

Purely Functional Data Structures (Paperback)

by Chris Okasaki

Read the proofs and understand how they're done. They do some of the exercises and find a generous soul to correct them for you.

Once you are done, you will have a broad knowledge of many algorithms that are useful in practice -- across all domains. You have be capable of inventing a new algorithm, and you will have mathematical techniques at your disposal to convince yourself that it actually works and that it hit the right big-O.

You will also begin to think of the correctness of you code more rigorously. Your math intuition will tell when your code is likely to be wrong, it will highlight the corner cases and the fuzzy invariants. You will develop a new set of "code smells" driven by the maths.

In short, you will begin to code like a computer scientist. It will rock your world.

posted by gmarceau at 11:30 AM on August 1, 2008 [1 favorite]

Introduction to Algorithms

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Then read the New Testament :

Purely Functional Data Structures (Paperback)

by Chris Okasaki

Read the proofs and understand how they're done. They do some of the exercises and find a generous soul to correct them for you.

Once you are done, you will have a broad knowledge of many algorithms that are useful in practice -- across all domains. You have be capable of inventing a new algorithm, and you will have mathematical techniques at your disposal to convince yourself that it actually works and that it hit the right big-O.

You will also begin to think of the correctness of you code more rigorously. Your math intuition will tell when your code is likely to be wrong, it will highlight the corner cases and the fuzzy invariants. You will develop a new set of "code smells" driven by the maths.

In short, you will begin to code like a computer scientist. It will rock your world.

posted by gmarceau at 11:30 AM on August 1, 2008 [1 favorite]

Agreed that "CS math" is not so much calculus (although calculus is useful to know if you're modeling real-world systems) as it is logic and discrete math. The analysis of algorithms that you'll learn from a book like the Cormen, Leiserson, Rivest book cited above is one of the things that (IMHO) separates excellent programmers from the rest - knowing not only how to solve a problem, but why one solution is better than another in a given context.

I'll also suggest learning something about probability and statistics. If you're interested in doing any sort of data mining, pattern analysis, machine learning, network flow, language recognition, etc sort of stuff, it'll be very useful.

posted by chbrooks at 1:15 PM on August 1, 2008

I'll also suggest learning something about probability and statistics. If you're interested in doing any sort of data mining, pattern analysis, machine learning, network flow, language recognition, etc sort of stuff, it'll be very useful.

posted by chbrooks at 1:15 PM on August 1, 2008

Seconding "the bible".

Also, a college level discrete math course should be able to help you see the applications and methods for using math in comp sci/networking.

Also, if you want to talk a step back from the applied, there is a ton of work in theoretical network and database stuff that would (in the abstract) apply to computer networking.

Also, if you just want to take a next step in math, go for a algebra class that covers (some of) group theory, field theory and ring theory. Mastering these topics will give you the skills you need to approach pretty much any other non-graduate-level mathematics.

GL!

posted by singerdj at 4:20 PM on August 1, 2008

Also, a college level discrete math course should be able to help you see the applications and methods for using math in comp sci/networking.

Also, if you want to talk a step back from the applied, there is a ton of work in theoretical network and database stuff that would (in the abstract) apply to computer networking.

Also, if you just want to take a next step in math, go for a algebra class that covers (some of) group theory, field theory and ring theory. Mastering these topics will give you the skills you need to approach pretty much any other non-graduate-level mathematics.

GL!

posted by singerdj at 4:20 PM on August 1, 2008

WOW! Thank you all very much! Everyone seems to have brought something very helpful to the table. I've got a hundred new starting points and I'm starting to see the relevance of a lot of the math theoretical subjects I've touched on.

I've already noticed a couple of things I would love to follow up and learn some more about.

Another great victory for AskMeFi! Thanks! (And feel free to add more answers if any come to mind :) The more I've got to go on the more chance I have of hitting on something I find really exciting).

posted by dcbarker at 5:16 PM on August 1, 2008

I've already noticed a couple of things I would love to follow up and learn some more about.

Another great victory for AskMeFi! Thanks! (And feel free to add more answers if any come to mind :) The more I've got to go on the more chance I have of hitting on something I find really exciting).

posted by dcbarker at 5:16 PM on August 1, 2008

This thread is closed to new comments.

I work writing computer graphics software. On a daily basis, quite frankly, most of my work involves little more than basic arithmetic, but it's nice to be able to pull out matrix transforms when I need them. But then again with only simple arithmetic, you can build a DDA which is the basic for line and circle drawing (and the ties between DDAs and differential calculus are glaring to me).

Interested in security and encryption? Number theory, my friend, number theory. I took it when I was in college and my brain exploded.

Simulation of motion? Calculus, all the way.

Here's the odd one in the set - I took a CS theory course my senior year which was a tighter melding of math and CS (actually Discrete Structures was the closest to math in that it tried to turn programs into mathematical elements that were subject to standard proof techniques. It's one thing to have for loops - it's another to prove that they're correct). When we were studying deterministic finite state automata, I had one of those "holy shit" moments wherein I saw no distinction between hardware, firmware, software and math. It was all the same (cue the angelic firmament signing praise to Alan Turing).

Quite honestly, a lot of what you need is a broad study with a slight MacGyverish eye towards how you can use/misuse something in a real world application.

posted by plinth at 5:52 AM on August 1, 2008 [2 favorites]