I'm a self taught programmer, and although I know many people feel math isn't necessary, I find that in many examples of algorithms I come across talk about (what sounds to be) some pretty complex mathematics. I would love to eventually have a solid understanding of the math that a good, university educated computer scientist should know. I don't really remember any math past algebra 2. With that being where I left off, what should my starting point be? What math topics should I research, and in what order?

I'm looking to build a curriculum for myself that will be pretty easy to take on from where I left off and continually learn until I have a similar understanding to that of what a university would provide.

closed as not constructive by Bill the Lizard, Walter, maple_shaft Mar 7 '12 at 14:15

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

migrated from stackoverflow.com Mar 7 '12 at 13:12

This question came from our site for professional and enthusiast programmers.

  • Discreet mathematics, linear algebra, set theory, logic (boolean in particular), finite automata and regular languages are the things off the top of my head (and I am as self taught as you are). – Oded Mar 7 '12 at 13:16
  • Don't forget about modular arithmetic – user49272 Mar 7 '12 at 13:22
  • 1
  • Hi ThinkingInBits, This question is overly broad and too difficult to answer. There are a number of similar questions however that you can search for and that others have posted as a comment. If you have a more specific question then it will be welcome. – maple_shaft Mar 7 '12 at 14:17
  • I'd suggest looking beyond math itself and into the philosophy of logic, particularly mathematical logic. That will take you further than rote memorization of algorithms and help you find solutions to problems better. – jfrankcarr Mar 7 '12 at 14:19

It's not easy to comprehensively answer your question. It very much depends on what you would like to do with your programming skills.

However, as a starting point I would suggest reading the first book of Donald E. Knuth's excellect handbook The Art of Computer Programming. It contains a comprehensive chapter on the mathematical prerequisites for understanding algorithms, and computer science in general.

In addition, I feel that a thorough understanding of Boolean algebra and mathematical logic is essential for any programmer.


Look into these types of math:

  • Trigonometry
  • Combinatorics & Counting
  • Graph Theory
  • Discrete Structures

And these algorithms / subject matter:

  • Logic
  • Time Complexity (Big-Oh notation)
  • Proof by induction
  • Loop Invariants
  • NP-Completeness
  • Turing Machines
  • Discrete Finite Automata

I'll keep adding more as I think of them.

There's a really good book called "The New Turing Omnibus" which provides a comprehensive overview and the "cliff notes" on many of these. I highly recommend you find that book.

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