Ask HN: Recommended path for self-study math and CS?
I've been programming since I was 12 or 13, all self-taught, but I went to college for Business. I've been a full-time freelance developer for a little over a year now, and I've been inspired by a lot of the deep technical stuff I've read here on HN. I've always really enjoyed math and programming, and delving into more rigorous CS and/or Math really interests me.
I'm just wondering if people would recommend seeking a grad degree at this point, or going more of a self-study route. And if the self-study route, are there any particular books or online courses you would recommend to start?
39 comments
[ 3.3 ms ] story [ 82.2 ms ] threadIf you want to go into research or teaching, then a higher degree is probably a very good idea. If not, it might not be the best. That is not to say that you can rule it out with certainty.
If you're doing it purely to satisfy your curiosity and desire to learn new things, I would (and did, and am) just pick up some recommended books on the topic and try to absorb what you can. I find if you force yourself down a path on what you currently find interesting, it can begin to feel like a chore.
Find some like-minded people, join a community, start a project and never stop learning.
In terms of recommending books, you'd have to be more specific what interests you. If you don't know, which is fine too, you can read about general things you find interesting on Wikipedia and crawl links starting there. You're almost guaranteed to stumble on something interesting.
If you've got the time, money, and diligence to do it, it can be a lot of fun. By fun I mean lots of hard work and suffering, but yeah, "fun." :-)
"People who like this sort of thing will find this the sort of thing they like."
I've always assumed that was because of the Feynman effect [1]: The freshmen (of all engineering majors) who were the ostensible audience of SICP were getting more and more frustrated by Scheme, a language that feels impractical to the average know-it-all first-year mechanical engineer.
In my experience, if you name-drop SICP in front of the average MIT student, there's a good chance that they will cringe and mutter some rude word about Scheme. Not everyone is born to love computer science.
But if you want to self-study math and CS then you should seek out SICP in Scheme, just as (given the choice and the ability) you should reed Dostoyevsky in Russian instead of in English translation. Use the language the authors really want to use.
[1] Which I name, of course, after the Feynman Lectures on Physics, a series of legendary lectures that is beloved by physics grad students but is rumored to have been a failure as an actual first-year physics text. Though accounts differ, the legend is that the lectures were just a bad fit for the average Caltech freshman -- for one thing, Feynman puts relatively little emphasis on solving math problems, which he did as easily as breathing but which the average freshman needs lots of practice in -- and the course was only taught once. Does anybody know of another first-year course that tried to use these as texts? I've never encountered one. But they have certainly been used for self-study by many people, including bright high-school students.
As far as I'm concerned, though, you can basically ask someone how they liked 6.001, and if they have any positive words, you can pretty much hire them on the spot for any programming job you've got.
That being said, the purpose of 6.001 (SCIP) was not to learn Scheme, but to use Scheme to introduce students to some of the fundamental concepts of computer science.
As for Feynman, the reason he only taught the class once (over three semesters, I believe), is that there was only one Feynman, and he had a pretty full plate of other things to work on. The "Feynman Lectures" were never meant to be textbooks. They were what they were: lectures, to be read by students seeking additional insights in physics.
Yeah, the Feynman lecture analogy should not be taken too far. Like SICP, the Lectures were aimed at the very interested majors, possibly at the expense of others -- but perhaps that's as far as the analogy goes. The Lectures were indeed a special event, whereas SICP was designed as a proper textbook: It was used for many years and by many teachers besides its authors.
Regardless of your end-goals, the steps you take to achieve them depend largely on your personality. Are you a natural born entrepreneur? Do you enjoy networking moreso than coding? Are you prone to take risks? Would you rather improve an existing project or jumpstart a new one?
The only advice I can give you is not to grow too comfortable with the educational arena. If you're interested in pursuing a career in education, it's a different story. But I've met quite a few bright individuals who've grown too accustomed to life at the university to do anything else.
As to recommendations, I second the recommendation for SICP, but I'd also suggest the video lectures: http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...
Then, I'd move on to various online courses (with video)-- besides the MIT OCW resources, there are some good CS courses from UC Berkeley. Specifically, for someone getting started, I'd recommend MIT 6.046J (Introduction to Algorithms), and the Berkeley CS 61A/B/C and CS162, but your interest may vary.
Naturally, there are a lot of good video course for mathematics as well-- I enjoyed Gilbert Strang's Linear Algebra from course from MIT as a nice brush-up in Linear Algebra, for example (and as a companion to his textbook).
But the guiding thread has got to be your own interest.
ocw.mit.edu
Having said that, I know many cs grad students who know little and couldn't bootstrap a startup like self taught autodictacts.
I'm still working my way through it. I'm not trying to say it isn't challenging - just that it's approachable. It's extremely challenging.
if you are in california, you have a way of measuring your interest in cs before you commit. i would suggest you take a course or two at a community college in your area. i know that there are many in the bay area that act as feeder institutions to berkeley etc. community college is usually less demanding than a university, so it is an excellent way to find out if you can handle the demands that will be placed upon you if you decide to do cs (undergrad/grad).
best of luck!
What I appreciate most is the consistent structure for teaching each logic. Each logic is taught by introducing the syntax with the BNF and parse trees. The semantics are then introduced. Then there is a mix of relevant algorithms and toy examples of how to specify systems. This is book you could teach yourself formal methods from.
Then, 1. Get a mac 2. Look around MIT open courseware stuff. 3. Keep hacking.
Step 2: in progress
Step 3: never ending :-)
What happened to me was that I got tired of hacking little things. I never kind of had the time or motivation to learn any advanced cs or math(since I suck even in basic math).
I didn't choose CS school since I got quite a variety of intrests(like business, economy, arts, cs...) and I'm not sure that I have such a burning desire to be a hacker, or work as one, but I still want to learn more.
Here is the direct link to all the Discrete Math lectures, for example: http://aduni.org/courses/discrete/index.php?view=cw
Much more is up there, including SICP, Algorithms, some AI etc.
That's what I would have done if I'd known better. I regret getting into the B.Sc.
It took me three years to finally make the decision to go back to school. I am now pursuing a second and third BS (mathematics and physics), however, I am applying to grad school for 2009. I am hoping that the work I have done since returning to school will be enough to get me into a program for which I don't have an undergraduate degree.
My recommendation is this: If you are really interested in mathematics and computer science, pick up a copy of How to Prove It by Daniel Velleman. Work through every single problem. If you don't enjoy doing the proofs, scratch mathematics off of your list. I can't speak about the computer science side of things, but maybe someone could add a respone to mine for a suitable computer science book.
In reality, we need the pressure of school to push us into spending the unpleasent effort to get the hard stuff into our heads. Otherwise you skim books and dick around and have nothing to show for it other than an ability flip out buzzwords on internet forums.
After all, why do you think there are colleges that teach this stuff? If you could just pick up books and learn it just as well as you can at college, why do people who are at college have to cram and study so much? After all, they are reading the material just like you, and they have the advantage of TA's, other students, and professors to guide and tutor them along. The fact is that you have basically no chance if you go it alone. Good luck.
SICP is as foundational as Spivak, however Comp Sci still doesn't have the equivalent of UTM, you have to target what you're interested in and go from there....