# Some good books to re-learn math?December 10, 2011 6:49 PM   Subscribe

I'm teaching myself to code (Python, mainly), and it's going well, except I keep on running into one big problem: I haven't done any math since high school (6 years ago). I used to be top of my class, and now I can't do simple word problems anymore. This gets tough because they inevitably pop up in the books I'm using, and then I stop dead in my tracks. Could anyone recommend a couple of books or web resources to help me get back up to speed? I never took Calculus, so a good Calculus book would help, too.

I searched the archives, but the focus is mainly for test-taking or learning math via programming.

Khan Academy is fine and all, but I tend to do better with books.
posted by flibbertigibbet to Education (21 answers total) 38 users marked this as a favorite

Can you give us an example problem? I can't think of anything beyond simple algebra that you'd need for programming practice problems, but of course I could be wrong.
posted by miyabo at 6:53 PM on December 10, 2011

Response by poster: Most of them are essentially algebra word-problems, yup, but my mind just completely shuts down when confronted with them.

There was one exercise (for "Think Python") that required you to think in radians in order to create a function that would draw an arc (in Turtle Graphics). I had no chance. Here's the problem in question.
posted by flibbertigibbet at 6:57 PM on December 10, 2011

Lang "Basic Mathematics" (algebra, etc.)
Gelfand and Saul, "Trigonometry" (classic trig text for bright high-schoolers)
Spivak, "Calculus" (harder than the others, but great)
Lang, "A First Course in Calculus" (standard treatment, easier than Spivak)

None of these are word-problem books, but they'll knock the rust off your brain and get you back in math-mode.
posted by facetious at 7:13 PM on December 10, 2011 [1 favorite]

Best answer: You'll also find that Discrete Mathematics is one of the fields of math that'll come in handy when coding. Much more practical than learning calculus.
posted by miasma at 7:17 PM on December 10, 2011

Honestly, I strongly doubt that you will find what you need by reading a book. You say your brain "just shuts down," but really the only way to get back to being able to solve these problems is to practice solving them. It will be hard and unpleasant. I recommend sitting down with a blank pad of paper and pen or pencil and working at one of the easiest ones until you get it. Then, go back and identify the parts of the process that were on track and cross out anything you did that wasn't necessary. Find more problems, do them. Keep doing them.

If this truly sounds too daunting, contact your local college or university's math department and explain that you're an adult who needs to practice math problem solving and you'd like to hire a tutor for a few sessions. They'll hook you up -- just make sure you get someone who forces you to do the work yourself... you'll never learn otherwise.
posted by telegraph at 7:33 PM on December 10, 2011 [1 favorite]

Best answer: I'm somewhat in the same boat, although what really trips me up is syntax. Just last night I *thought* I comprehended \$rm in my linux box, and wound up accidentally deleting an entire directory instead just just all the .nfo files in its recursed folders. WOOPS.

I've been telling everyone I know about the Khan Academy because it's been receiving lots of accolades. There's a HUGE variety of lessons there, very well explained, with good practice problems.
posted by TomMelee at 7:37 PM on December 10, 2011

Response by poster: Telegraph: Maybe I should be more precise? I want the kind of book that comes with a huge set of practice problems so that all I can do for a couple of days if solve math problems, but that also has the principles there so I can refer to them if I get stuck.
posted by flibbertigibbet at 7:56 PM on December 10, 2011

Best answer: I can strongly recommend Quick Calculus: A Self-Teaching Guide by Kleppner. It isn't a textbook, it is a programmed text that explains concepts, gives examples, and then asks questions to let you test your understanding. If you get the questions wrong you get more explanation, otherwise skip ahead to the next topic.
posted by LastOfHisKind at 9:30 PM on December 10, 2011 [4 favorites]

If you want to relearn math, then more power to you. However, you don't need much math to learn programming and the skills you need to do word problems will be unlikely to be applicable to programming problems.

For example, look at the example you gave. Think Python tells you a little about turtle graphics and then tells you to draw some shapes. There's a long history of turtle graphics being used to teach children about programming and math. If you're given a problem with a turtle graphics module and then you're told to draw some shapes and you then conclude that you have to relearn calculus, then you're missing the point. Play with the module for a while.
posted by rdr at 9:37 PM on December 10, 2011

Agree with @rdr. Math problems are easy, since they're clearly defined, small (self contained), semi-universal (except for your apparently :) ) and lend themselves well to fake program situations.

In the real (programming) world, you solve real problems. How do you construct a bar chart? What percentages should the CSS columns be if defined by user-generated content? You need math, but more of the common-sense kind. You wont need radians, calculus, etc for most day-to-day programming jobs.

You should probably still learn it. I probably should too. But I am a professional programmer, have been for years & years, and I really don't like (and don't use) most math skills beyond geometry, simple algebra, etc.

I know for myself, it's *extremely* important to focus on what matters and not get sidetracked by other stuff. If you want to learn programming and math is holding you back, then cut out the math. If you spend X amount of time learning the math bits (which are only applicable in your programming textbooks for the most case), then you're Y% less likely to succeed in learning programming. If programming is important and math is not, then remove math from the equation.

That probably means finding a non-math based way to learn programming. Python is an amazingly friendly & good language, I highly recommend it. The best way I've found to learn: pick a *very* small & simple project that interests you. Then make it even smaller. You want to succeed, not impress people. Find a tutor (that's the hard part). Make that program in the most simple way possible, learning what you need in order to do it. If you get that done, you're on a very good start. I would guess that most people that try to learn programming would not get past this first project.

But you probably can't find a tutor, so find a different (non math based) programming book.
posted by jumpfroggy at 9:50 PM on December 10, 2011 [1 favorite]

For 2-d graphics, you don't usually need more than basic trigonometry. Try searching for "trigonometry problems"?
posted by w.fugawe at 9:52 PM on December 10, 2011

Best answer: I don't know how much review you need (and how basic), but after 6 years of no math I had to take the GRE, so I had to brush up. This website is great for all that junior high/basic high school math that's probably pretty fuzzy. Also second Khan Academy.
posted by petiteviolette at 10:09 PM on December 10, 2011 [2 favorites]

Response by poster: you then conclude that you have to relearn calculus, then you're missing the point.

The point is:
1) I do not know enough math to get beyond the a few chapters in in any Python textbook I've looked at. My ability to solve word problems right now is nil, I try working them out forever and get nowhere. I would like some help getting back up on high school math. I've had friends loan me books, I've bought books, and all start leaning on (simple) math early on.
2) Generally speaking, I do best at learning when I go over concepts I know, then add concepts I've never learned so that I flex out those muscles for problem-solving and learning (versus just reminding myself of things I forgot, and then quickly forgetting them anew, which is my perpetual problem). That's why I thought Calculus might be a nice step. I didn't ever think Calculus would be too helpful for programming--I have too many programmer friends (in all disciplines) and I hear too much about their day-to-day tasks to think that--but instead so I can get used to learning (instead of remembering) something math-y again. I just know that if I don't learn something new, in 6 months, I'll have forgotten everything you guys helped me with anyways, and all of this will begin again.

I do REALLY like the idea to swap out Calculus for Discrete Math, so thank you for that! It's much more applicable, but still totally new to me (other than the logic-stuff, which is old hat). It fits perfectly, thank you!
posted by flibbertigibbet at 10:25 PM on December 10, 2011

Response by poster: Also, I played with the module for 2 days. No amount of playing with the module enabled me to figure out how to make Monsieur Tortue draw an arc of a certain length by writing a function that includes the line "angle_length = r * math.radians(angle)." I forgot radians existed. Thus the problem.
posted by flibbertigibbet at 10:29 PM on December 10, 2011

Best answer: It looks to me like you're having a very, very specific issue with a part of math that's used in that chapter of that book.

The circumference of a circle is 2*pi*r, right? So the circumference of an arc is 2*pi*r*(% of the circle that's in the arc). A full circle in radians is 2*pi, just like a full circle in degrees is 360. So the author is just using math.radians(angle) to get to 2*pi*angle, and then multiplying by r. To know this you only need to know that a full circle in radians is 2*pi, and that the circumference of a circle is 2*pi*r. Admittedly these can be hard to remember but it's a lot of work to embark upon an entire course of math study just to learn them.
posted by miyabo at 10:46 PM on December 10, 2011

Response by poster: Miyaboo: thank you for your help, but I've had problems--everything some simple algebra to trig--with every Python book I've looked at. I really need some high school math refreshin'!
posted by flibbertigibbet at 11:02 PM on December 10, 2011

Best answer: High school math pdfs for BC and down the page you can get slightly more advanced ones pre-calc for high school math in Alberta.
posted by Listener at 12:10 AM on December 11, 2011

Best answer: The degree to which you'll need mathematics to write code will really depend on the type of coding you want to do. For instance, someone writing code for a social networking website or a recipe database app for an iPhone will probably not have to do anything more complicated than basic arithmetic. Maths plays a significant part in some (but not all) coding for games, however.

So depending on what you plan to do with your newfound coding skills, this may not be something you need to worry about. The last time I used a trig function or did simple calculus, for example, was when I was writing little Flash games for a living. I doubt I've used an integral in fifteen years.

But while I'm here, Ken Stroud's venerable Engineering Mathematics is my favourite learn-by-example mathematical text.
posted by le morte de bea arthur at 11:29 AM on December 11, 2011

Best answer: How to Count by Steven Frank is specifically on math for programming.
posted by backwards guitar at 7:26 PM on December 11, 2011