Ask HN: going back to school, what books before CS?

9 points by davidwparker ↗ HN
Hello all, I'm going back to grad school to get my MS in CS starting next fall (in the US) and I'm wondering what books you would recommend reading before then? When I start, I'll have been out of school for 9 years, and I've been doing work with Java/Struts/Spring, Ruby/Rails, Python/Django since I graduated. It's been awhile since I did the academic stuff, and so I haven't worked a ton with Data Structures, Algorithms, etc. What would you recommend? Thanks.

10 comments

[ 4.3 ms ] story [ 36.0 ms ] thread
If I had to recommend just one book overall, it'd be Peter Van Roy and Seif Haridi's _Concepts, Techniques, and Models of Computer Programming_ (http://www.info.ucl.ac.be/~pvr/book.html). It's an extremely lucid overview of the different underlying models on which most programming languages are built, and how they interact when combined. It covers relational/logic programming and constraint programming, two models that IMHO don't get enough coverage. The bibliography also gives you plenty of jumping off points for whichever aspects pique your interest.

As for algorithms and data structures, I found that learning OCaml greatly improved my understanding of both. Working through the exercises in chapters 2-4 of _Developing Applications in Objective Caml_ (online: http://caml.inria.fr/pub/docs/oreilly-book/) would be a good approach. OCaml has an especially good notation for them - using it (rather than Java or C) will make them easier to reason about. You could probably work through those chapters in a weekend or two. Whether you use OCaml in the future or not, the insights and notation will stick.

900 pages- is this more of a read through? Or use it when you need it? I definitely have the time to get through it before school begins, but it'll be tough, I'm suspecting. I do like the thought of really diving into areas that aren't covered as much (I hadn't really heard of constraint programming).

I also hadn't thought about looking into/testing out other programming languages in order to learn about programming! How absurd is that! I've bookmarked the OCaml O'Reilly book and will try looking into that this Spring, thanks.

The 900 pages of CTM would be a lot to get through before school, if you were reading it cover to cover. (I've only read about 3/4 of it, though I burned right through a big chunk of it in one weekend.) But, it's quite easy to follow, and for many fundamental CS topics, you can probably find a coherent summary in there when your other textbooks are a dead end. It's not going to cover Java API details, and it's weak on some specialized topics (parsing and compilers, for example), but it fits a lot of big ideas into a coherent whole.

Other people will recommend SICP (http://mitpress.mit.edu/sicp/), or would have, had this reached the front page. That's also quite good, but a bit more narrow in focus - depth rather than breadth.

Just wanted to say - you've got giant balls! Going back to school after 9 years - I believe is no small decision. I wish you good luck!

I've been toying with this idea for a while, but haven't able to take this step for various 'excuses'(not enough money ~atm).

Would you mind sharing what went through your mind to finalize this?

What factors influenced you(made-your-money? unemployment? ..??)

Have you already finalized your specialization? Has anyone influenced you in choosing your subjects?

finally, What are you doing for math-prep for CS classes?

fwiw- 'how to prove it' -velleman has helped me to some extent. (http://www.amazon.com/How-Prove-Structured-Daniel-Velleman/d...)

//Would you mind sharing what went through your mind to finalize this?

It was the right time. I'm married and my wife got a job at a great place and has been there over a year. I've been doing consulting, so I'm not tied down to a job.

//What factors influenced you(made-your-money? unemployment? ..??)

I really wanted to go back to school. I worked while my wife went to grad school (speech pathology). She agreed to work while I went back (she's awesome like that).

//Have you already finalized your specialization? Has anyone influenced you in choosing your subjects?

I've talked to my graduate advisor, but I don't have a specialization just yet. I'm leaning towards programming languages, as that's what I really enjoy. I'm also interested in AI and numerical computation. I'm really open to suggestions, but no one in particular has influenced me into picking something specific (yet).

//Finally, What are you doing for math-prep for CS classes?

I've reread through some Linear Algebra, Differential Equations, Calculus, and Number Theory books in the past three years, without too many problems. I'd still like to look over some Real Analysis, etc but I feel a bit more urgency to get into algorithms, etc at the moment.

Thanks for the suggestion, I've added Velleman to my wish list.