13

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.

levand
  • 8,440
  • 3
  • 41
  • 54
  • 2
    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

12 Answers12

9

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

John Fisher
  • 22,355
  • 2
  • 39
  • 64
  • 1
    >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 07 '10 at 09:56
8

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

Jarred Allen
  • 320
  • 3
  • 24
Chris Ballance
  • 33,810
  • 26
  • 104
  • 151
6

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.

John Kugelman
  • 349,597
  • 67
  • 533
  • 578
6

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:

Chris R. Timmons
  • 2,187
  • 1
  • 13
  • 11
  • 1
    and now that I've read it, for that teaching article. Good read. – Paul McMillan Oct 10 '09 at 19:20
  • 1
    -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
  • 1
    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
3

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.

bcat
  • 8,833
  • 3
  • 35
  • 41
3

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.

brabster
  • 42,504
  • 27
  • 146
  • 186
  • 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 07 '10 at 09:55
3

To this list I would now add The Haskel Road to Logic, Maths, and Programming, and Conceptual Mathematics: A First Introduction to Categories.

--- Nov 16 '09 answer for posterity--

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

Chad Brewbaker
  • 2,523
  • 2
  • 19
  • 26
  • 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 08:32
  • 1
    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 07 '10 at 09: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 07 '10 at 09: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 09 '10 at 06:55
  • The couches say that CM is a waste of time, http://rs.io/hard-books-overrated. After 3 chapters I managed to wade through, I cannot agree more with that. Also, my feeling is that it has nothing to do with `set theory, graph theory, number theory, combinatorics, category theory, lambda calculus` requested. The preface of the book says certainly that it was designed as a counter to all that (abstract) shit. – Val Jun 30 '15 at 07:46
  • ConcreteMath is a book I still go back to. One of the few books you iteratively go deeper into it each time. As a practicing software engineer, lambda terms and basic category theory are not "abstract shit", it's how you keep yourself grounded in the face of the "Object Oriented" lipstick they put on shared mutable state pig the past 30 years. – Chad Brewbaker Jul 13 '15 at 13:20
1

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

Kiffin
  • 1,048
  • 1
  • 15
  • 21
1

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.

comingstorm
  • 25,557
  • 3
  • 43
  • 67
  • 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 07 '10 at 09:50
0

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

Community
  • 1
  • 1
mjv
  • 73,152
  • 14
  • 113
  • 156
0

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

xxxxxxx
  • 5,037
  • 6
  • 28
  • 26
0

For beginning to learn category theory I recommend David Spivak's Category Theory for the Sciences (AKA Category Theory for Scientists) because its relatively comprehensible due to many examples that enable understanding by analogy and which quickly builds a foundation for understanding more abstract concepts.

It requires the ability to reason logically and an intuitive notion of what is a set. It proceeds from sets and functions through basic category theory to adjoint functors, categories of functors, sheaves, monads and an introduction to operads. Two main threads throughout are modeling databases in terms of categories and describing categories with annotated diagrams called ologs. The bibliography provides references to more advanced and specialized topics including recent papers by Dr. Spivak.

An expected outcome from reading this book is the capability of understanding category theory texts and papers written for mathematicians such as Mac Lane's Category Theory for the Working Mathematician.

In PDF format it is available from http://math.mit.edu/~dspivak/teaching/sp13/ (the dynamic version is recommended since its the most recent). The open access HTML version is available from https://mitpress.mit.edu/books/category-theory-sciences (which is recommended since it includes additional content including answers to some exercises).