Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Recommendation for (re)learning Math Skills
53 points by evo_9 on June 21, 2010 | hide | past | favorite | 20 comments
I'm kind of an pariah in the CS world as I was unlucky enough to have multiple terrible math teachers as a kid and don't have what I would consider a strong math background. I've never really enjoyed math as much as I think I should, even though I've always loved programming and even 'math puzzles' from time to time.

I've noticed in recent years that my math skills are much higher than they should be considering my lack of major education in that area (College Algebra is about it). This has come up working with colleagues or just taking some fun online IQ tests where I scored highest in math even though I've always been led to believe I suck at it.

I'm wondering what HN readers would recommend to someone like me as a good avenue to relearn some basics and then move into areas I've only scratch the service of such as geometry and trig?

Math is one of the best skill sets to have and especially powerful for cs. I recently took differential equations, but I hadn't had math in around 2 years. To brush up on my trig identities needed for the calculus and also for a review of some of the basic formulas needed in calculus, I used http://sosmath.com/. I went through and made notes on what I learned, did a few practice problems, and within around a week I was good to go. It covers everything from algebra to diff eq. Hope it helps you as much as it helped me.

Steve Yegge has a blog post titled "Math For Programmers" which discusses this topic. Here is an excerpt from the post:

"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... ummm, please don't tell anyone I said this; I'll never get invited to another party as long as I live. But math, well... I'd better whisper this, so listen up: (it's actually kinda fun.)"

Here is a link to the full blog post:


Check out the book series Art of Problem Solving.

Edit: There is also a book called Art and Craft of Problem Solving which is unrelated to this series but which is worth checking out too, despite the fact that it is not exactly what you are looking for.

Is this the series you're referring to?


Yep, that's it.

Highly recommend this - it not only teaches you the math but does it in a fun fashion. The online forums are a great place too. Definitely gave me more math than my high school offered back in the days.

Take a look at the MIT Open Courseware math classes. These are particularly good when you're on the train. You can find them online on Youtube, iTunes U, or at their site:


Understanding calculus helps you to understand the relationship between functions, which is very useful with doing FP-like things in your code.


I'd recommend this one: The Haskell Road to Logic, Maths and Programming -- would fit best if you'd also have an interest in Haskell/FP, but it's also a good introduction to formal proofs -- might be a bit too basic if you're interested in higher maths, tho, but a good starting point for math education.


Can't recommend this highly enough. Am using it to teach my 9 year old daughter trig over the summer; I dip into it every other week or so (last week to re-remember polar coordinates, for instance).

I applaud you for teaching your daughter trig. Nobody has ever "taught" me trig and I have to constantly (re)look up identities and such.

You can derive trig identities yourself using Euler's formula. This is a fun hack, easily worth the couple of hours you'll spend getting to understand it.

I've been using this to re-learn Trig, as well as learn Calculus and Linear Algebra. Very easy to follow, and the videos are usually only about ten minutes long.

I'd pick something you want to do or understand that clearly requires some sort of math, and figure out what you'd have to learn to do that. Math is enough of a grab-bag of fairly different things, especially at the intro level, that I find it easier to wander through with some sort of direction--- so I have some reason to want to learn this particular bit of math, as opposed to randomly choosing subjects (i.e. should I learn some combinatorics, or some differential equations?).

Firstly, what's the purpose of you (re)learning math? Do you care to make use of the math? Or do you want math to become a hobby of yours?

Most math in math books is pretty useless in terms of practicality and enjoyment. I would bet that you've always had an appreciation for math but the math curriculum you went through destroyed any chance of you enjoying it.

I'd say you should think of (or find) problems you think would be fun/useful to solve, and then learn the math required to solve them. In the process you'll probably find you don't understand certain concepts, but you can always go back and learn those until everything begins to make sense.

Be in control of what you learn.

Practice. Practice, practice, practice. The most important thing to realize is that math isn't just a body of knowledge, but also the skill of applying that knowledge. Example: Memorizing a bunch of trig identities will not let you integrate crazy trigonometric functions. You need to be able to figure out which identities you ought to apply to push your crazy function into an integrable form. The identities you can look up from a book when you need them. The important skill is applying the identities you have.

This ability, to see the direction you need to go from the pieces that you have and the goal you want to achieve, is the most transferable skill that mathematics will give you. And you can only get it from practice. Get actual textbooks, with practice problems. Preferably, get the teacher's edition, or one with the answer to odd-numbered problems in the back so you can check your work. And when you make a mistake, don't just correct it, go back and figure out why you were wrong and why the answer is correct, because that's often one of the most instructive activities you can do.

You probably already know that any given level of math builds on knowledge and concepts from previous levels. Depending on the speed of progression, it's often necessary not just to know the preceding knowledge, but to master it. The lower-level stuff has to be downright trivial if you want to focus on higher-level stuff. It's simply not possible to do, e.g., line integrals in the complex plane if you have to stumble through basic algebraic manipulations like canceling variables while you're doing it[1]. The converse of this, is that you often master important math concepts by using them as the foundation for something more abstract, because only then do you see why they were so important.

Anyways, enough generalities, time for specific subjects. Geometry isn't very important, but trigonometry becomes important, especially because it's related to exponents which are super-critical. Learn trig. Then, learn linear algebra (matrix maths). Then, find a course or book on discrete mathematics, which usually means intro-level number theory, graph theory, and combinatorics. Calculus is worth picking up at some point. It's not as important to a programmer as to a physicist or engineer, but it is foundational to several other areas, and shows up in the damndest places. Simple single-variable calculus is probably sufficient, and focus on what an integral represents rather than how to compute one. After that, the two interesting paths are analysis (and topology), and algebra.

[1] It's a lot like learning a new language in a different alphabet, which is something I'm doing right now. It's really hard to deal with important concepts like characterization and tone when you can barely fit three letters in your head at the same time, much less a whole word (that you have to look up), much less an entire idea.

Math takes a lot more persistence than other stuff. It feels like slow going, but the key is to just stick with it. It's OK if it takes you a long time to solve a problem. Even though you'll feel like you're doing badly you'll quickly make progress (in retrospect).

Anyway, that's been my experience.

I've had a similar interest lately, to freshen up on some higher maths that I've studied in school and mostly forgotten due to lack of use. Calculus, linear algebra, statistics; I feel like it would be good to review some cliff notes, but not sure of a good source.

For geometry and trig perhaps high school math books are the best resource.

What do you mean by college algebra? Do you mean abstract algebra, like group theory? In any case geometry and trigonometry is a prerequisite for college level math.

I had d- grades in hs algebra but I was lucky enough to find a very cool Polish Math Professor in college that got me into kicking ass in math..A+ all math courses in college often at 8 and 12 credit hours during summer 8 and 12 week sessions..

The key is working wide range of problems and feedback. You get both of those than you will pick up fast. Part of that feedback is self invented..graph everything..

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact