I am a web-developer with a desire to expand my skill-set to mathematics relevant to programming.

As 2nd career, I am stuck in college doing some of the requirements while working.

I was hoping the my education will teach me the needed skills to apply math, however I am quickly finding it to be too much easily-testable breadth-based approach very inefficient for the time invested.

For example in my calculus 2 class, the only remotely useful mind expanding experience I had was volumes and areas under the curve. The rest was just monotonous glorified algebra, which while comes easy to me, could be done by software like wolfram alpha within seconds. This is not my idea of learning math.

So here I am a frustrated student looking for a way to improve my understanding of math in a way that focuses on application, understanding and maximally removed needless tedium.

However I cannot find a good long term study strategy with this approach in mind.

So for those of like mind, how would you go about learning the necessary math without worrying too much about stuff a computer can do much better?


Read Steve Yegge's post on Math for Programmers.

Among his insights:

  1. Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap.

  2. They teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, and it'll be much more valuable to you as a programmer.

  3. Knowing even a little of the right kinds of math can enable you do write some pretty interesting programs that would otherwise be too hard. In other words, math is something you can pick up a little at a time, whenever you have free time.

  4. Nobody knows all of math, not even the best mathematicians. The field is constantly expanding, as people invent new formalisms to solve their own problems. And with any given math problem, just like in programming, there's more than one way to do it. You can pick the one you like best.

  5. Math is... actually kinda fun, if you approach it the right way.


You're realizing the difference between mathematics and the mathematics they teach you in school.

This is excellently described in A Mathematician's Lament by Paul Lockhart. Similar sentiments are expressed by Conrad Wolfram in his TED Talk, Teaching Kids Real Math with Computers.

Most math you need in "life" was taught in elementary school (like how to calculate a tip in your head). The math you will use in your job might be taught by your university, if you're going into a field which will require calculus or other advanced mathematics - but most programmers don't use calculus everyday (as most programmers end up writing business applications, not some sort of engineering or scientific field).

Regardless, a lot of math you learn won't be applicable to you. And a lot of what you do while learning it is computation. Will it ever be fixed? That's up for you, and the rest of your generation (and all future generations) to decide.


I'm in a similar boat and so far I'm enjoying www.projecteuler.net:

Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics.

They are problems you solve with programming, but most of the problems aim to teach you (or you have to go learn) some specific math to solve it. Helps you learn titbits of math that you can apply with programming.

Another great resource is http://www.khanacademy.org/#calculus

KhanAcademy is much more than just brilliantly done videos, he also has a whole exercise system to test you out. See http://www.khanacademy.org/about


You don't mention what kind of programming you're doing or are interested in. If you're interested in computational sciences, you'll need that calculus background, all 3 semesters, linear algebra, differential equations, numeric analysis, to name a few. Plus you'll need all the requirements for the science, physics, biology, chemistry. There's another branch of applied mathematics in theory of communication systems. There you'll learn number theory, algebraic coding theory, cryptography, mathematical aspects of systems theory, applied fourier analysis, and there's probably others.

If you're interested in databases like I am, I'm studying Applied Math for Database Professionals. Once I'm done with that, I'll tackle whatever suites my fancy, probably something by C.J. Date, and set and group theory.

To answer your question on how to develop a study plan, research various universities and see what they offer in the areas of computer science or applied math. Universities publish the requirements for the degree. You can probably find all the courses online, usually with videos, problem sets, and can probably find the book through Amazon. MIT has Open Courseware, Harvard and Berkeley have online courses too. Also checkout OpenStudy, there might be a study group that's formed for the class you'd like to take.

When you need the knowledge and don't want to go into debt for a Master's, self-learning is a great way to go.


If you want to do algorithms in general, finite math and abstract algebra courses should help out (or, you could just take an algorithms course...). Finite math will also help with encoding, encryption, and a variety of other computational algorithm domains. You should try taking a look at Knuth's The Art of Computer Programming, if only as a pointer to the kind of math you might find useful.

If you want to do number crunching (the kind of thing that will use your calculus and linear algebra), look through the latest edition of Numerical Recipes. I also recommend Golub & van Loan's Matrix Computations as a more mathematically correct text on computational linear algebra.

In general, if there is an application domain you are interested in, you should visit the library and look through some books on the subject, to find the kind of math they require. There may not be a specific course on the subject available, but you should not let that stop you. The ability to track down and learn a body of knowledge on your own initiative is one of the most valuable skills you can acquire: if that were the only thing you learned in school, your time and money would still be well-spent.

Not the answer you're looking for? Browse other questions tagged or ask your own question.