

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

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.
======
silentbicycle
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.

~~~
davidwparker
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.

~~~
silentbicycle
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.

------
justlearning
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...](http://www.amazon.com/How-Prove-Structured-Daniel-
Velleman/dp/0521446635))

~~~
davidwparker
//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.

------
vital101
Introduction to the Design and Analysis of Algorithms
([http://www.amazon.com/Introduction-Design-Analysis-
Algorithm...](http://www.amazon.com/Introduction-Design-Analysis-
Algorithms-2nd/dp/0321358287/ref=sr_1_6?ie=UTF8&qid=1288278097&sr=8-6)) is a
good refresher.

~~~
davidwparker
Wow, I forgot how expensive some textbooks can be! I've added this to my
Amazon wish list and hopefully will get it this Christmas. Thanks for the
recommendation.

------
ashleyreddy
Graphics Gems. <http://www.graphicsgems.org>

~~~
davidwparker
I haven't played too much with graphics code, and I'm sure they'll utilize a
lot more math and algorithm. Bookmarked for later, thanks.

------
motxilo
"How to design programs"[1] might be a good fit for you. There is a detailed
justification for it in [2].

[1] <http://www.htdp.org/> [2]
<http://www.ccis.neu.edu/scheme/pubs/jfp2004-fffk.pdf>

