This is a list of good books on computer science.
Most are accessible to anyone with programming experience equivalent to an introduction to computer science course. Of course, everyone in the field has his or her own favorite books. There isn't a universally accepted list of "best", but I think all would agree that these are at least pretty good in both writing quality and technical content, and that you would not go wrong by reading them.
If you read one book from each category within CORE, SYSTEMS, and THEORY, then, congratulations: you've just completed the equivalent of an undergraduate major in computer science! Pick up a few from APPLICATIONS and you're at the Masters level. In my ideal CS department, this would be the main thread of the majors curriculum, to be augmented with mathematics and more computing application electives.
I made this list in the process of researching acquisitions for the Williams College library. I reviewed the curriculum (for topics) and syllabi (for book recommendations) of many of the top CS programs and liberal arts colleges, including: MIT, Cal Tech, University of Washington, Princeton, Stanford, Berkeley, Brown, Rice, Williams, Amherst, Swarthmore, Harvey Mudd, and Wellesley. I gave special emphasis for each topic to the schools and professors that specialize in it, e.g., Rice for compilers and programming languages. I also looked at various recommendation lists on the web and the Amazon best-sellers in each category. I was familiar with many of the books already. For the others, I reviewed the table of contents, read sections, looked at reviews, and particularly examined code samples. I then selected the book in each topic that I would want to use if teaching the course. For some topics, there were a few choices that had very high quality but very different approaches, so I listed all of those. If teaching that course, I would try one a year to see which worked best with the students. I generally didn't choose the best graduate textbooks or reference books, but instead the ones that would be appropriate for first encountering a topic, e.g., in an undergraduate course.
I'm also often asked for recommendations for professional programmers without CS degrees or undergraduates who want to learn more CS without necessarily taking courses or majoring. This is a nice list for those groups as well. Because of the way that CS books are categorized, it is hard to browse them in a library. Some are filed under "engineering," others under "math," "programming," "computer science," or the application area, such as artificial intelligence books appearing in psychology, cognitive science, and biology. So, think of this as the book shelf that I wish you could find in a library, with all of the short-lived "Learning Ruby in 21 Days" and "Visual Fortran 2012 for Dummies"-type books that normally clutter such a section removed.
For convenience, I've linked the books to Amazon for everyone and the Williams College library for my students (some are not yet at Williams, but are coming soon.) If you're reading through these book-club style, just choose one book from each category--whichever your library has or appeals to you will be fine. To keep the list approachable, I didn't include all of the well-respected books in each category but tried to choose one or two. Rather than making this a catch-all, I'll let others maintain their own lists of best computer science books---but I do appreciate recommendations, especially for application areas farther from my specialization in computational graphics.
Programming & Specific Languages
In the long run, it doesn't matter what language you begin with, and any book in this group is sufficient to get started. Skip on to the CORE section after reading one.

0 comments:
Post a Comment