Take the 2-minute tour ×

I haven't taken any math classes above basic college calculus. However, in the course of my programming work, I've picked up a lot of math and comp sci from blogs and reading, and I genuinely believe I have a decent mathematical mind. I enjoy and have success doing Project Euler, for example.

I want to dive in and really start learning some cool math, particularly discrete mathematics, set theory, graph theory, number theory, combinatorics, category theory, lambda calculus, etc. My impression so far is that I'm well equipped to take these on at a conceptual level, but I'm having a really hard time with the mathematical language and symbols. I just don't "speak the language" and though I'm trying to learn it, I'm the going is extremely slow. It can take me hours to work through even one formula or terminology heavy paragraph. And yeah, I can look up terms and definitions, but it's a terribly onerous process that very much obscures the theoretical simplicity of what I'm trying to learn.

I'm really afraid I'm going to have to back up to where I left off, get a mid-level math textbook, and invest some serious time in exercises to train myself in that way of thought. This sounds amazingly boring, though, so I wondered if anyone else has any ideas or experience with this.

share|improve this question
Make sure you get a good textbook to work from. There are many bad ones out there. In particular, many of the most commonly used college texts are terribly written, but have easy-to-use problem sets. The instructor knows the students won't read the book, and makes up for the deficiency in lecture. –  Paul McMillan Oct 10 '09 at 19:22

11 Answers 11

If you don't want to attend a class, you still need to get what the class would have given you: time in the material and lots of practice.

So, grab that text book and start doing the practice problems. There really isn't any other way (unless you've figured out how osmosis can actually happen...).

share|improve this answer
>Euclid is said to have replied to King Ptolemy's request for an easier way of learning mathematics that "there is no Royal Road to geometry" –  xxxxxxx Mar 7 '10 at 9:56

Take a class at your local community college. If you're like me you'd need the structure. There's something to be said for the pressure of being graded. I mean there's so much to learn that going solo is really impractical if you want to have more than just a passing nod-your-head-mm-hmm sort of understanding.

share|improve this answer

There is no knowledge that can only be gained in a classroom.

Check out the MIT Courseware for Mathematics

Also their YouTube site

Project Euler is also a great way to think about math as it relates to programming

share|improve this answer
@downvoter Why the downvote? I'd appreciate a reason in the comments. –  Chris Ballance Oct 13 '09 at 14:28
Probably those links are too hard to follow. –  fastcodejava Mar 7 '10 at 9:38
the MIT courseware for mathematics are lecutre notes lacking detail, they lack answers to problems, they lack solved problems, they lack explanations. A book is much more appropriate –  xxxxxxx Mar 7 '10 at 9:51

Sounds like you're in the same position I am. What I'm finding out about math education is that most of it is taught incorrectly. Whether a cause or result of this, I also find most math texts are written incorrectly. Exceptions are rare, but notable. For instance, anything written by Donald Knuth is a step in the right direction.

Here are a couple of articles that state the problem quite clearly:

And here's an article on a simple study technique that aims at retaining knowledge:

share|improve this answer
+1 for recommending Knuth –  Paul McMillan Oct 10 '09 at 19:09
and now that I've read it, for that teaching article. Good read. –  Paul McMillan Oct 10 '09 at 19:20
-1 for "most of it is taught incorrectly" and "written incorrectly". It is an insult to every math teacher and book author on the planet. The math professors and books I encountered ranged from OK to excellent and I cannot abide by your besmirching their reputations. I owe them for my fine math education. –  Andrew Oct 10 '09 at 19:47
I would edit "most" -> "many", and "incorrectly" -> "badly". They're often written as if teaching to an audience that already knows the material but just needs a refresher. I see too many textbooks that spend time deriving a particular equation or proving a theorem (better to put into an appendix) instead of explaining the core concepts and why they are important. –  Jason S Oct 10 '09 at 23:47

Consider auditing classes in discrete mathematics and proofs at a local university. The discrete math class will teach you some really useful stuff (graph theory, combinatorics, etc.), and the proofs class will teach you more about the mathematical style of thinking and writing.

share|improve this answer
good advice, +1 –  xxxxxxx Mar 7 '10 at 9:54

I'd agree with @John Kugelman, classes are the way to go to get it done properly but I'd add that if you don't want to take classes, the internet has many resources to help you, including recorded lectures which I find can be more approachable than books and papers.

I'd recommend checking out MIT Open Courseware. There's a Maths for Computer Science module there, and I'm enjoying working through Gilbert Strang's Linear Algebra course of video lectures.

Youtube and videolectures.com are also good resources for video lectures.

Finally, there's a free Maths for CS book at bookboon.

share|improve this answer
free maths books are not necessarily the best. you need to check a few books before you find one that suits your needs. –  xxxxxxx Mar 7 '10 at 9:55

Two books. Diestel's Graph Theory, and Knuth's Concrete Mathematics. Once you get the hang of those try CAGES.

share|improve this answer
Concrete Mathematics is indeed a good choice. The authors use sufficient space to explain the notations they use extensively and precisely to get a good foundation. Then they manage to sneak quite a lot of mathematics into this book that is fun to read. –  abc Nov 19 '09 at 8:32
Concrete Mathematics is a book that's ok. But after you've read a hardcore abstract algebra course that explains things as they should you will not consider Concrete Mathematics that good. It explains things without too much theory ... which sometimes takes it maybe tens of pages, while the same things could be proven with high Algebra much faster. the book you mentioned CAGES , has all sorts of stuff from different branches of mathematics, again, that's a wrong approache. I'm sure you wouldn't understand the "Schreier-Sims" algorithm from it because it doesn't have enough context. –  xxxxxxx Mar 7 '10 at 9:48
so you need to have a book which treats its subjects in length so that the reader will understand them, CAGES looks like some review material, which may help remind you things which you've already read from somewhere else ... –  xxxxxxx Mar 7 '10 at 9:48
Haha. You sound like an Algebraist I know. He cringes every time I say Permutation Algorithms or remind him he is dealing with a subset of the Symmetric group. –  Chad Brewbaker Mar 9 '10 at 6:55

Find a good mentor who is an expert in the field who is willing to spend time with you on a regular basis.

share|improve this answer

There is a sort of trick to learning dense material, like math and mathematical CS. Learning unfamiliar abstract stuff is hard, and the most effective way to do it is to familiarize yourself with it in stages. First, you need to skim it: don't worry if you don't understand everything in the first pass. Then take a break; after you have rested, go through it again in more depth. Lather, rinse, repeat; meditate, and eventually you may become enlightened.

I'm not sure exactly where I'd start, to become familiar with the language of mathematics; I just ended up reading through lots of papers until I got better at it. You might look for introductory textbooks on formal mathematical logic, since a lot of math (especially in language theory) is based off of that; if you learn to hack the formal stuff a bit, the everyday notation might look a bit easier.

You should probably look through books on topics you're personally interested in; the inherent interest should help get you over the hump. Also, make sure you find texts that are actually introductory; I have become wary of slim, undecorated hardbacks labeled Elementary Foobar Theory, which tend to be elementary only to postdocs with a PhD in Foobar.

A word of warning: do not start out with category theory -- it is the most boring math I have ever encountered! Due to its relevance to language design and type theory, I would like to know more about it, but so far I have not been able to deal...

For a nice, scattershot intro to bits of many kinds of CS-ish math, I recommend Godel, Escher, Bach by Hofstadter (if you haven't read it already, of course). It's not a formal math book, though, so it won't help you with the familiarity problem, but it is quite inspirational.

share|improve this answer
Godel, Escher, Bach is not mathematics, it's Popular Science. That's what you give teenagers to read to get interested in the subject, not someone who really wants to learn Mathematics... –  xxxxxxx Mar 7 '10 at 9:50

Mathematical notation is is akin to several computer languages:

  • concise
  • exacting
  • based on many idioms
  • a fair amount of local variations and conventions

As with a computer language, you don't need to "wash the whole elephant at once": take it one part a at time.

A tentative plan for you could be

  • identify areas of mathematics that are interesting or important to you. (seems you already have a bit of a sense for that, CS has helped you develop quite a culture for it.)
  • take (or merely audit) a few formal classes in this area. I agree with several answers in this post, an in-person course, at local college is preferable, but, maybe at first, or to be sure to get the most of a particular class, first self-teaching yourself in this area with MIT OCW, similar online resources and associated books is ok/fine.
  • if an area of math introduces too high of a pre-requisite in terms of fluency with notation or with some underlying concept or (most often mechanical computation and transformation techniques). No problem! Just backtrack a bit, learn these foundations (and just these foundations!) and move forward again.
  • Find a "guru", someone that has a broad mathematical culture and exposure, not necessarily a mathematician, physics folks are good too, indeed they can often articulate math in a more practical fashion. Use this guru to guide you, as he/she can show you how the big pieces fit together.

Note: There is little gain to be had of learning mathematical notation for its own sake. Rather it should be learned in context, just like say a C# idiom is better memorized when used and when associated with a specific task, rather than learned in vacuo. A related SO posting however provides several resources to decipher and learn mathematical notation

share|improve this answer

Project Euler takes problems out of context and drops them in for people to solve them. Project Euler cannot teach you anything effectively. I think you should forget about it, if it is popular it does not mean anything. You cannot study Mathematics through Project Euler as it contains only bits and pieces(and some pretty high level pieces) that you're supposed to know in order to solve the problems. Learning mathematics means to consider a subject and a read a book about it and solving exercices or reading solutions, that's how you learn math. If it so happens that through your reading you find something that is close to some project euler thing, your luck , but otherwise Project euler is a complete waste of time. I think the time is much better invested choosing a particular branch of mathematics and studying that. Let me explain why: I solved 3 pretty advanced Projec Euler problems and they were all making appeal to knowledge from Number theory which I happened to have because i studies some part of it. I do not think Iearned anything from Project Euler, it just happened that I already knew some number theory and solved the problems.

For example, if you find out you like number theory, take H. Davenport -> Hardy & Wright -> Kenneth & Rosen's , study those. If you like Graph Theory take Reinhard Diestel's book which is freely available and study that(or check books.google.com and find whichever is more appropriate to your taste) but don't spread your attention in 999999 directions just because Project Euler has problems ranging from dynamic programming to advanced geometry or to advanced number theory, that is clearly the wrong way to go and it will not bring you closer to your goal.

This sounds amazingly boring

Well ... Mathematics is not boring when you find some problem that you are attached to, which you like and you'd like to find the solution to, and when you have the sufficient time to reflect on it while not behind a computer screen. Mathematics is done with pen and paper mostly(yes you can use computers .. but that's not really the point).

So, if you find a real-world problem, or some programming problem that would benefit from you knowing some advanced maths, and you know what maths you have to study , it can be motivating to learn in that way.

If you feel you are not motivated it is hard to study properly.

There is also the question of what you actually mean when you say learn. Does the learning process stop after you solved the problems at the end of the chapter of a book ? Well you decide. You can consider you have finished learning that subject, or you can consider you have not finished and read more about it. There are entire books on just one equation and variations of it.

The amount of programming-related math that you can learn without formal training is limited, but it's more than enough. But maybe you can self-teach yourself.

It all boils down to your resources and motivation.

To know mathematics you have to do mathematics not programming(project euler).

share|improve this answer

Your Answer


