3 ms·
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
by silentbicycle 16y ago
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 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/ 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 16y ago900 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 16y agoThe 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/ 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.