tags:

views:

272

answers:

5

Possible Duplicate:
How to improve my math skills to become a better programmer
Basic Math Book for a Programmer

I've had quite a weird career till now. First I graduated from a medical school. Then I went into marketing (pharmaceuticals). And then umm, after some time, I decided to go for my (till then) hobby and became a "professional" programmer. I've been quite successful at this ever since. I have quite some languages "under my belt". I earn not bad and I have been involved in the opensource community quite heavily.

The thing is that I suck at math :). Well, not totally of course, as I get my work done. But I don't know how much I suck. And I don't know how to find out.

Math has never really been of any priority during my middle/high school years. I only picked as little as I could afford, because I was always getting ready to go for Medicine. Of course I know the basics of algebra. Things like "normal" and square equations. Also the basics of geometry. But well, there are things that I have missed. And lately I am being fascinated by things like probability theory, infinity, chaos/order etc. But every time I try to learn something about these topics, I hit a wall of terminology, special symbols, and some special kind of thinking, that is quite like mine (a programmer), but also a lot different (and appears weird to me).

So, what kinds of books would you recommend me? It's very hard to find something suitable. All that I find are either too easy (and boring) or totally impenetrable.

+2  A: 

The basics:

  • Basic understanding of real and complex numbers, functions, sets etc.
  • (Real) analysis in one variable
  • (Real) linear algebra
  • (Real) analysis in several variables
  • Discrete mathematics
  • Vector calculus
  • Complex analysis
  • Complex linear algebra
  • Statistics and probability theory

More advanced stuff:

  • Abstract algebra
  • Fourier analysis (much more important than one may think) (Basic video course from Stanford)
  • Transform theory (other than Fourier analysis)
  • Differential geometry
  • Functional analysis
  • Partial differential equations
  • Non-linear phenomena and chaos
Andreas Rejbrand
+1 - a very good list.
duffymo
i only know ("know") maybe one or two of these. but i haven't yet come across something in the real world i haven't been able to program because i didn't know some of these.
Jason
@Jason: how do you know?
Beta
The thing I use most frequently in practice is linear algebra, but that's mainly because I often deal with motion and spatial relationships, which are often naturally represented with matrices and vectors. Discrete mathematics and logic are also interesting, as there are parallels to the way that programmers approach problems, though they are of less direct practical use. Basic calculus is worth learning, if you never had a chance to delve into it, as it includes a number of mind-expanding concepts (true strokes of genius when originally discovered that are now passed on in lessons.)
Dan Bryant
Good list, but how does it answer the question? The asker's having a hard time finding ways to learn that aren't too trivial, but won't overwhelm him with terminology/concepts he doesn't know. A dense list like this is about as good as a bunch of wikipedia links.
Precision
OK. I am sorry I was unclear. I mean "get a basic understanding of real and complex numbers, functions, sets etc. Then learn (real) analysis in one variable, and then learn ..."
Andreas Rejbrand
@beta because i know what assignments i'm given at work, and so far, i'm at 100% completion.
Jason
@Jason: people bring difficult problems to me at work because of my reputation. I haven't always found good solutions, but I've found solutions that required vector algebra, matrix algebra, rotation matrices, probability and statistics, complex analysis, Fourier analysis, hidden Markov models, topology, group theory and once a trick I borrowed from quantum electrodynamics. You don't know how useful a tool is until you have it.
Beta
@beta then you, my friend, are in a different field than i am. i've never required any of those to do anything, and my UIs are still awesome :)
Jason
+2  A: 

Of course I know the basics of algebra. Things like "normal" and square equations. Also the basics of geometry. But well, there are things that I have missed. And lately I am being fascinated by things like probability theory, infinity, chaos/order etc.

I find that mathematics is a one-way door: if you don't get through early, it's hard to go back. It's not impossible to pick up, but it is more difficult without discipline.

The key is doing problems. You don't just read math books - you do problems to work the mechanics into your brain. If you're just reading, I'd say it's impossible to learn it.

Best to go back to what you know and work up. If you feel okay about basic algebra and geometry, start thinking about intro calculus or statistics. Start with the basic stuff: one variable differential and/or integral calculus or statistics. Do a lot of problems and get comfortable.

If you're a computer scientist, you'll find discrete math, graphs, numerical methods, and linear algebra helpful.

Don't expect to do it quickly, especially if you're casual about it.

I'd recommend two wonderful resources:

  1. Verzani - Using R for Introductory Statistics
  2. Gil Strang MIT Linear Algebra

Both are free; both are excellent.

duffymo
This is something I know (or at least suspect). But I don't mind. I don't try to become a maths professor. I just happen do like maths lately. Something like my new hobby :).As far as the problems are concerned, yeah, I like them (at least when they are not totally impenetrable :))
loxs
Of course. You don't get anything out of impenetrable problems, but that's always relative to your ability. It says as much about you as it does the problems.
duffymo
+1  A: 

You might check out some of the free course material available online from MIT.

Dan Bryant
+2  A: 

Assuming you have your basic algebra down, I'd start with single variable calculus. I've used several calc books, and found Larson's to be the best. Hope you can find it at a library.

Move on to linear algebra shortly after. This book is free and very good.

Don't worry about mastering everything, you'll probably want to come back to linear algebra.

Then find a book that emphasizes proofs, sets, relations, functions, and axioms. I liked Analysis with an introduction to proof by Lay. Learn proof by induction especially well.

From here, you should be able to break that impenetrable wall you've found yourself against. You will be armed with the terminology to read just about any undergraduate mathematics textbook.

I recommend graph theory, combinatorics, and linear algebra, for their applications in computer science.

Good luck!

Precision
Thanks! This was the kind of answer I was hoping to get. All the others are either telling me that I suck (which I know), or giving me a list of "links" (as you said above).
loxs
Indeed, this follows a typical university course. I have a bachelors in mathematics and am also a programmer. Calculus is what blew my mind and drew me into mathematics, so it's definitely a good subject to get you excited. Linear algebra shows up everywhere, calculus, statistics, discrete math, etc. so it's a great tool to have under your belt. Then there is graph theory and discrete math, which are pure pleasure.
Stephen Swensen
Also, if you're self motivated enough you should be able to tackle at least calculus on your own, but when you get into proofs and higher level math, it helps to have a professor to ping - if possible, it might be a good idea to enroll some courses at your local community college, maybe your company will even reimburse you.
Stephen Swensen
@Stephen, @loxs: Yes, I'm currently an undergraduate studying both mathematics and computer science, and I culled this out of both our coursework and how I would optimize it for someone who just needed the math for computer science and was tired of hitting "that wall". I forgot that MIT has a very good set of lecture videos for calculus and linear algebra, so you should use those, too.Also, take what you can from a community college. I took Calculus I/II at one and had a very good professor. (also cheap)
Precision
@loxs: Don't listen to anyone that says that the "impenetrable problems" are a sign of your ability. That's nonsense. You can get there with a little work, guaranteed.
Precision
A: 

Investigate available math classes at a local junior college. Typically, they offer them during the day for enrolled students but they sometimes have night classes as well. Talk to the professor to see if your math skills are sufficient for the class before enrolling, however, or you'll be struggling right out of the gate.

sizzzzlerz