area
sect 1
Texts
Notes on Texts
Books for computer science can generally be divided up into several categories : introductory texts, exploitation texts, research monographs, professional/upper level undergrad/graduate level education and reference.
Theodore Sturgeon (a science fiction writer) once said about science fiction : "Ninety percent of science fiction is shit. But then, ninety percent of everything is shit."
This is as true in computing as in any field (including english literature). The problem is that the ninety percent is tossed at instructors free by publishers that want to sell more books and wading through this to find the good stuff takes a lot of effort. However, there are some very good books in the field and one of these days this will point to a web page listing some of them.
Introductory Texts
For some fields Sturgeon was overly optimistic. Introductory texts are such a field. For first year CS books the number is probably above 99 percent. Most of these are written primarily to keep students content and uncomplaining, and are aimed at students both in the target field and at students who think that that field (whatever it may be) is a complete waste of time and whose goal is to take the course, learn as little as they can manage and get on to something else quickly.
Think about how long you'll generally keep such a text - for the most part it will be the term you take the course and after that you'll throw it out or sell it back to the bookstore.
Note that getting a book from the bookstore, using it for a term and selling it back usually amounts to renting the book for 10 weeks. Figure out how much that works out to per week and decide if its worth it to you.
If it looks like it belongs in high school or elementary school, its probably a good bet that it does.
exploitation books
Exploitation books are the ones that tend to fill the shelves at big bookstores. "3D Graphics for Visual Basic", "Programming for Emptyheads" and the like. Avoid these. In general, avoid most books that use the word "for" as part of the title. There are exceptions, but looking at my shelves, I don't see anything with a "for" in the title that is worth keeping. "In" and "Using" are also words you should consider with suspicion, but I do have a couple of good books that have titles including "Using".
Nobody really likes reading code. Books full of code are thus full of pages you won't read. Why then pay for them?
Exploitation books are often filled with code that buyers see and think "O Boy!!! I can use all this code." But will anyone really type it in from the book? Any book that includes more than a page full of code probably also should be avoided. Code that is available on a web site, or on a disk may be useful, but printed code is pretty much worthless.
Smiley faces or stick pictures of people in the text are signs that you should run away quickly.
Other clues that a book might be junk include two color pages. Lots of simple drawings are also good indicators. If it looks like its aimed at someone in high school, its probably not worth buying or keeping.
Other Educational Books
Knuth's "The Art of Computer Programming" does have exercises and problems. Some of these have probably been used for PhD dissertation topics. This series belongs on every CS professional's bookshelves.
This includes the upper level undergraduate texts, graduate level texts and books aimed at the professional in the field interested in learning a new area or skill. While these are texts in the sense that they're aimed at someone trying to learn the topic, frequently they do not have exercises or problems (or when they do they don't have that many), nor the other detritus that goes along with textbooks as such.
These are far more condensed, less likely to talk down to you and more likely to contain real information.
Reference Books
Reference books are just that. They are references to a language or system. Manuals. Specification documents.
References are tough reading usually. However, if you are going to write real programs in a language or system you cannot do without them. If you're going to be a computer professional, you should learn to read them now - and you should buy and keep reference books in any language or system that you use a lot.
Research Monographs
Research monographs are usually the result of a couple of years of hard work by an expert in the field. They are only rarely (in CS at least) really "research" topics as such - instead being advanced technical introductions to projects and ideas that are a bit more on the fringe. You can learn quite a bit from one of these and in advanced courses they're good to use as texts.
Books to Buy
In general, I try to pick texts from the last few groups. They treat the reader as an adult and as someone who knows the field.
I will try to select decent introductory texts for freshman level courses. After that though, I assume you've decided CS is your major or at least an important interest and I'd prefer to treat you as an adult and a professional. I rarely (if ever) assign problems directly out of the books so you are free to purchase them or not as you wish, and to purchase them from whatever source seems the best.
Most of the books I get free from the publishers are worth just about what I pay for them. The good ones sell themselves so the publishers don't have to send them out.
I also try to pick the kinds of books that I would buy and keep on my bookshelves as part of a technical library. Its not always easy to identify these or to sift them out of the mounds of junk that publishers try to sell, but its worth the effort.
You should consider that in a technical field you will want to build a personal library of useful books. Think of the books you buy for courses in that way and try to keep them when they look worthwhile.
Notes
References
Oh foo