
Ask HN: Recommendation for (re)learning Math Skills - evo_9
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.<p>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.<p>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?
======
pwhisen
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.

------
tkosan
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:

[http://steve-yegge.blogspot.com/2006/03/math-for-
programmers...](http://steve-yegge.blogspot.com/2006/03/math-for-
programmers.html)

------
anemecek
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.

~~~
wmat
Is this the series you're referring to?

<http://www.artofproblemsolving.com/>

~~~
jgg
Yep, that's it.

------
joev
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:

<http://ocw.mit.edu/courses/mathematics/>

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

------
s2r2
<http://homepages.cwi.nl/~jve/HR/>

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.

------
wturner
www.khanacademy.org

~~~
tptacek
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).

~~~
ctbarna
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.

~~~
projectileboy
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.

------
_delirium
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?).

------
aik
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.

------
lmkg
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.

------
jey
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.

------
csarva
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.

------
jules
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.

------
shareme
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..

