Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The main thing to remember is that nobody learns mathematics to any significant depth by reading. The only way to learn it is by doing it. Doing it carefully, and in full detail, not falling into the trap of "and I understand it from there".

So the biggest barriers to doing it on your own aren't source material (there is lots of that) it's a good source of correction. There is also the usual problem of self study, in that you don't have a roadmap and can waste time easily.

That said though, one advantage if you are diligent is that you probably by necessity learn techniques of checking your work (formally and informally) earlier than typical students, which is a good thing.



This is probably the reason why there are so many more autodidact programmers than mathematicians. When programming, you know if you made an error as soon as you try to run your code. The program, by definition, must be "correct" in order to execute. The "source of correction" is the error detection built into any programming language runtime or compiler.

No such "source of correction" exists for mathematics, and that makes it an inherently more difficult subject to teach yourself, because any errors you make will "fail silently" unless you are capable of detecting them yourself, which by definition you cannot do without experience. This is why a mentor/professor makes learning mathematics so much easier; he/she plays the role of mathematical compiler.


Good point and great analogy, though I think EWD might be turning over in his grave. While the error detection built into compilers and the testing process are, in general, indispensable tools for developing stable software, a program that executes without any evidence of error is a great distance from a program that has been shown to be correct.


It's still easier to build up an understanding of computers under that environment. You may not be proving your programs correct, but you are probably proving them useful.


> "The program, by definition, must be "correct" in order to execute"

This definition of 'correct' is why software may have a poor user interface and many security holes.

Your observation also assumes that the language is completely specified. In C, for example, certain constructs lead to undefined behavior. As a modification of the old warning, running your program may unexpectedly cause demons to fly out of your nose tomorrow. Execution therefore does not imply correctness.

Proof verification, btw, offer a "source of correction" for mathematics -https://en.wikipedia.org/wiki/Automated_theorem_proving#Rela... .


I find that after doing some proofs work you start to get a sort of sixth sense feeling for when something isn't rigorously correct. In the words of one of my professors, "something smells wrong".


If anyone knows a good way to check proofs by yourself, let me know. I love it, but you pretty much have to have other mathematicians tell you when you're doing something horribly wrong.

By the way, did anyone else have to take engineering maths instead and feel they were somewhat lacking?


Just check everything carefully. If you've written your proof properly every step should follow logically from previous steps, and you should be able to check if yourself without issues. The problems happen when you're not critical enough of yourself, when the proof is very large and complex, or when you don't know your base axioms and the assumptions of your theorems well enough.


Proving the security of cryptographic protocols is a counterexample to this. Sometimes basic assumptions are very difficult to catch.


>That said though, one advantage if you are diligent is that you probably by necessity learn techniques of checking your work (formally and informally) earlier than typical students, which is a good thing.

Or you can post them on math stackexchange and get feedback for free from bored? mathematicians :)

http://math.stackexchange.com/


>There is also the usual problem of self study, in that you don't have a roadmap and can waste time easily.

Can you expand on what you mean by "roadmap"?

To me, a roadmap is very easy to get and can be arrived at from different angles.

method 1) Pick up an "Advanced Mathematics" book and start at page 1. The sequential chapters of that book would start a roadmap. If page 1 looks incomprehensible, look at the preface/introduction to see what the author lists as prerequisites. Seek out the book(s) on the prerequisites and start on page 1 of that book. If that prerequisite looks like gibberish, then look at that book's prequisite. And so on.

method 2) Google "advanced mathematics study roadmap" and look at various answers from math.stackexchange.com, reddit.com, blogs, etc.

method 3) Look at the undergrad curriculum of math courses for degree requirements (e.g. Bachelor of Mathematics, Bsc Electrical Engineering, etc) published by universities. (e.g. go to http://mit.edu).

It seems like a "roadmap" for self-study is readily accessible for anyone curious.


The usual problem in self study (of any subject) is that you go towards what is easily accessible from where you are right now, which means you might miss out on useful avenues visible to someone who already has a good view of that "lay of the land", so to speak. You may also lack the discipline to push through something that is difficult for you when you can't see they payoff - an outside influence could convince you it will be worthwhile. Depending on the type of student you are, you can also spend too much time inefficiently on things that are comfortable.

You can try and do something like recapitulate the core curriculum of a math degree, say, but there are constraints there you aren't aware of and it won't be the right path for everyone.

method 2 expanded to "actually ask questions at some of these locations" is actually a good way to inject some outside direction. So it's a mitigation for this problem.


> So the biggest barriers to doing it on your own aren't source material (there is lots of that) it's a good source of correction.

Does anyone have any recommendations for where I can find a "good source of correction" (private tutor) online or locally for discrete math/algorithms/college-level mathematics? I looked at WyzAnt which gave me no results for my area -- most of the tutors seem to be for SAT/high school prep.


The only way to learn it is by doing it. Doing it carefully, and in full detail, not falling into the trap of "and I understand it from there".

This. So much this. A lot of people think there is some big difference between mastery from a physical versus intellectual level. No one who is serious about learning to play a musical instrument will only play a song up to a point and then stop, saying "... no need to go further, I already know how to play the rest." I think the way the brain consolidates high level learning into long term memory is essentially the same as for "muscle memory". This is like when you learn to drive. At first, you have to think consciously about every little detail but with practice, your unconscious mind takes those over and your conscious mind is left to operate on higher and higher level concepts. Mathematics is hard and the sooner you can offload the details to your unconscious mind the better. And the only way to do that is by practice.

I consider myself to be a smart but sometimes intellectually lazy person and had to struggle to develop the habit of working problems out rigorously and completely when learning new material. The belief that you can learn material by just reading is seductive because it feels like you're saving time and getting to the interesting topics faster. But in all likelihood, this belief is false and will be proven as false the moment your understanding is put to the test, either in a real test, or when subsequent material requires a solid understanding of older material. Sure, you may indeed be understanding it at the moment you're reading and in the flow of the material. But what makes your knowledge solid and reliable even under adverse circumstances (e.g., when you're distracted or learning a difficult new subject that builds on that knowledge) is practice and repetition. This applies not just to mathematics but to learning a new framework or programming language.


The same could be said of programming, or anything really.


To a degree. It's particularly true of mathematics.

The CS parts (which you can view as a branch of mathematics) of programming certainly have this feature.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: