This document contains a list of books I have purchased and read over (mainly) the past year and a half. The sections first list the title, then the author, price, link to Amazon, and my notes. The links to Amazon do not make me any money. This list of books is one of the reasons I am broke.
Compilers: Principles, Techniques, and Tools (2nd Edition) (Hardcover) by Alfred V. Aho (Author), Monica S. Lam (Author), Ravi Sethi (Author), Jeffrey D. Ullman (Author) $95.29 [Amazon] This book is called the dragon book because it has a dragon on its cover. It describes the phases of program compilation, from the very first steps of reading in the source file to the advanced mathematical techniques used for allocating registers and analyzing data dependencies. This will take many months of study to understand, but offers an understanding of the lower levels of software, which is dubiously practical for most people but very fascinating and eludicating.
(See Dragon Book [Compilers].)
Hacker's Delight (Hardcover) by Henry S. Warren (Author) $35.47 [Amazon] This book describes interesting programming techniques for manipulating lower-level aspects of systems. For example, it describes in good detail how to do complex bitwise manipulations. The section that examines Gray codes, which are a different way of encoding integers, is particularly interesting. For people coding in managed languages, this is not very practical, but gives a different perspective on the task of programming a computer.
Inside Reporting: A Practical Guide to the Craft of Journalism (Paperback) by Tim Harrower (Author) $59.90 [Amazon] This is a really interesting textbook that uses a newspaper-style layout to teach about how to write engaging stories in the news. Understanding journalism is essential to writing high-traffic stories on the Internet, and this book is an engaging view of how to do this. I really recommend this book for people dabbling in journalism or blogging.
Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science) (Hardcover) by Harold Abelson (Author), Gerald Jay Sussman (Author) $68.80 [Amazon] This is an extraordinary book that uses a textbook tutorial style. It teaches you how to conceive of programs a collection of abstractions; in fact, the book seems to use the word "abstraction" on almost every page. This book describes the theory of computer science and you will never look at programming the same after reading it. Instead of teaching about how to assign variables, it describes how variable assignment introduces the complexity of time into the conceptual models of programs. Uses Scheme, a Lisp dialect, for the programming examples.
Programming Pearls (2nd Edition) (ACM Press) (Paperback) by Jon Bentley (Author) $39.99 [Amazon] This is a classic book in the software engineering field, and it still has useful "pearls" about programming problems and solutions today. However, much of the focus is on squeezing acceptable performance out of really ancient computers. The descriptions of discovering how to sort one million integers in one megabyte of memory are fascinating, but the focus here is not current with today's software engineering professionals. The methodologies of how to program are still relevant and the book is entertaining.
C Programming Language (2nd Edition) (Prentice Hall Software) (Paperback) by Brian W. Kernighan (Author), Dennis M. Ritchie (Author) $53.67 [Amazon] This is a classic but short book about the C programming language; the C language predates C# and C++, but understanding how C works (and doesn't work) is useful for understanding the later versions of this language. The C language introduced "bracist tyranny" to the world, which is a funny way of saying the language uses curly braces in its syntax.
Essential .NET, Volume I: The Common Language Runtime (Microsoft .NET Development Series) (Paperback) by Don Box (Author), Chris Sells (Author) $54.99 [Amazon] This is a fairly short book but provides excellent details on the internal implementation of the .NET Framework. For example, it shows the layout of arrays and also how polymorphic method calls are implemented (function pointers). The book is not written at the level of the best computer science books, but it has useful details and it is not a waste to purchase and read this.
.NET Framework Standard Library Annotated Reference, Volume 2: Networking Library, Reflection Library, and XML Library (Microsoft .NET Development Series) (Hardcover) by Brad Abrams (Author), Tamara Abrams (Author) $69.99 [Amazon] This book covers very specific parts of the standard library used for the .NET Framework. Unfortunately, the topics in this book are not the most important ones to have documentation for, as they are very specific. The content is not particularly engaging or useful; it is not something I benefited from by purchasing.
The Common Language Infrastructure Annotated Standard (Microsoft .NET Development Series) (Paperback) by James S. Miller (Author), Susann Ragsdale (Author) $64.99 [Amazon] This is a very large book and contains lots of very precise details, such as how metadata files are arranged on the disk. It describes how metadata codes are implemented in the relational database system used in the files. It enumerates each instruction used in the system. It is mainly a reference, and not engaging enough to read in its entirety, even for me.
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (Microsoft .NET Development Series) (Hardcover) by Krzysztof Cwalina (Author), Brad Abrams (Author) $49.99 [Amazon] This book is fairly short but contains great insights into why some of the .NET Framework methods are the way they are. For example, the names and orders of the parameters to the methods are arranged in a specific way to improve understandability. If you are interested in how to name variables and parameters, this book is for you. Essentially, it focuses on promoting understandability through consistency and logic of design.
Expert .NET 2.0 IL Assembler (Hardcover) by Serge Lidin (Author) $79.99 [Amazon] This is an incredibly useful and interesting book by one of the leaders of the intermediate language assembler design at Microsoft. It will help you understand the low-level implementation details of the IL (intermediate language), which in turn informs you of everything the high-level languages such as C# can achieve on the platform. It has interesting tidbits of information and Serge Lidin has a sense of humor that makes the book more palatable. This book is not something you can read quickly but is one of the most useful .NET-specific books on this page. It is essentially a textbook that shows all the details of the .NET Framework's metadata implementation.
Non-Designer's Design Book, The (3rd Edition) (Non Designer's Design Book) (Paperback) by Robin Williams (Author) $32.99 [Amazon] This is a graphic design book, but provides tips on how graphic design can enhance all publications, including books and websites. The style this book is written in is very light and cheery, and it is an enjoyable read when you do not want to read weighty and scientific material. I learned several interesting things about graphic design theory from this book.
The C++ Programming Language: Special Edition (3rd Edition) [SPECIAL EDITION] (Hardcover) by Bjarne Stroustrup (Author) $79.99 [Amazon] This book provides the most thorough description of the C++ language. It is not just a language specification, but also contains many essays on program design and the conceptual structure of programs. It provides insight into how to balance performance and manageability (using C++). Reading this book gives insight on why the most prominent C++ programs are the way they are, and it is very much relevant to today's programming field and even programs in other languages like Java and C#.
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) [SPECIAL EDITION] (Paperback) by Frederick P. Brooks (Author) $39.99 [Amazon] This book analyzes the topic of software management as well as professional programming. It provides some insights into management of large teams, and also provides perspective on what programming is, as a profession, as well. This is a true classic in this field and is worth reading for all people who spend time in the programming field or working with programmers.
Concurrent Programming on Windows (Microsoft .NET Development Series) (Paperback) by Joe Duffy (Author) $49.99 [Amazon] Currently, I have only read fairly short samples from this book. However, the content seems fairly useful for the topic. It is likely that the material in this book is more well-researched than many of the treading materials you can find elsewhere.
Accelerated C# 2008 (Paperback) by Trey Nash (Author) $39.99 [Amazon] This is an advanced book that has some interesting content, such as a section about writing exception-neutral code. It contains some topics that are not covered in many other books, so likely will add something new to your library. In other words, this is a good one to purchase for people looking to improve their understanding of C#.
Ajax: Your visual blueprint for creating rich Internet applications (Paperback) by Steve Holzner Ph.D. (Author) $29.99 [Amazon] This book provides a less-technical overview of AJAX and what it can do. It doesn't cover the advanced topics, so might be helpful for getting an introduction to AJAX for web developers. I don't recommend this book for people looking for an advanced understanding of AJAX.
Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching (3rd Edition) (Pts. 1-4) (Paperback) by Robert Sedgewick (Author) $69.99 [Amazon] This is a textbook about algorithms that has some useful information about hashtables. It helped me develop my own hash algorithms, which I use constantly in development. It uses code samples in C++ but this does not impair its usefulness for C# or Java developers. You should have an algorithms textbook in your library for when you need to do something unusual or advanced.
C# 3.0 Cookbook (Paperback) by Jay Hilyard (Author), Stephen Teilhet (Author) $54.99 [Amazon] This is an excellent guide to solving common programming problems. It helped point me in the right direction about how to write technical problem/solution articles as well. It contains many example solutions to problems such as file IO, collections, and strings. Highly recommended as a practical reference for when you need help solving a problem.
C# 3.0 Design Patterns (Paperback) by Judith Bishop (Author) $39.99 [Amazon] This book covers design patterns in the C# language. I think that the classic books on design patterns are likely more useful overall, but this one can complement them and provide tips for implementing design patterns in C#.
C# in Depth: What you need to master C# 2 and 3 (Paperback) by Jon Skeet (Author) $44.99 [Amazon] This book has some interesting content regarding expression trees in C# and LINQ queries. However, I don't feel it is critical to an advanced understanding of C# and some of the content verges from what I consider best practices in C# programming. It isn't something I feel benefited me, and the writing style is tedious. When I started to read this book, I had already read other books on the subject matter so it wasn't useful as introductory material; this colors my perception here.
CLR via C#, Second Edition (Pro Developer) (Paperback) by Jeffrey Richter (Author) $59.99 [Amazon] This is an excellent book that helped me grasp the internals and low-level details of the CLR, which is the platform C# runs on. The section on garbage collection is the best I have found, but the section involving how the stack and heap work was somewhat confusing. It contains tons of hints on optimizations and is irreplaceable in my .NET library.
Code Complete: A Practical Handbook of Software Construction (Paperback) by Steve McConnell (Author) $49.99 [Amazon] This is probably the most useful and overall best book that I have read regarding software development. It contains fascinating and substantiated content on every aspect of programming, from topics like psychological set and air castles, to how to optimize your loops (complete with benchmarks). Most code examples are in Visual Basic or Java, but they are easy to understand if you are not an expert in those languages. Additionally, the book will probably make you laugh.
Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition (Paperback) by Steve Krug $40.00 [Amazon] This is a famous book on web usability, and it contains useful studies of how people use web pages. However, I found most of the content is available on sites such as useit.com. The content is intuitive, and can help frame how people use web pages for developers. My copy of the book fell apart, and half of it is hanging out, despite taking care of it. That probably diminishes my opinion of the content, which is not fair.
Expert SQL Server 2005 Development (Paperback) by Adam Machanic (Author), Hugo Kornelis (Author), Lara Rubbelke (Author) $49.99 [Amazon] This book contains interesting approaches to using SQL Server in advanced ways. I saw how you can embed C# code and the CLR into SQL Server. Additionally, there are chapters on storing tree structures in databases, and using distance calculations. It has lots of tips for advanced optimizations of SQL Server 2005. I recommend it not for its practical value but for understanding the types of things you can do with SQL Server.
High Performance Web Sites: Essential Knowledge for Front-End Engineers (Paperback) by Steve Souders $29.99 [Amazon] This is probably the top book for optimizing the HTML/JavaScript/CSS of your website. However, the tips in the book are almost exactly duplicated on Yahoo's Exceptional Performance website, which greatly diminished the usefulness of this book for me. The writing style in the book is not worth the price alone, and the tips are now commonplace on the Internet. For a practical way of advancing your website, it is not highly useful for these reasons.
Illustrated C# 2008 (Windows.Net) (Paperback) by Daniel Solis (Author) $44.99 [Amazon] This is an excellent book that covers nearly every common task in C#, and provides pointers to uncommon tasks. I really appreciate the condensed writing style, and bought it for the writing style alone. However, I found I learned things about C# in it, which makes it worth twice the price.
Information Architecture for the World Wide Web: Designing Large-Scale Web Sites (Paperback) by Louis Rosenfeld (Author), Peter Morville (Author) $39.99 [Amazon] I did not benefit greatly from this book, and it contains little practical information for developing sitemaps and search engines for sites. The author seemed focused on establishing information architecture as an elite field. I ended up joking about the writing style, as I felt it was quite arrogant. I do not recommend this book for anything practical.
Letting Go of the Words: Writing Web Content that Works (Interactive Technologies) (Interactive Technologies) (Paperback) by Janice (Ginny) Redish (Author) $49.95 [Amazon] This is an extremely valuable book to me and really helped me improve my writing technique. It has some amazing before/after screenshots on how to write Internet articles. It is also well-written an easy to understand. If you plan to do extensive writing on the web, this is a must-have book, well worth the price. I feel it helped me much more than "Don't Make Me Think."
Mastering Algorithms with Perl (Paperback) by John Macdonald (Author), Jon Orwant (Author), Jarkko Hietaniemi (Author) $34.95 [Amazon] This is one of the first books I purchased, and also one of the least practical and useful. It combines convoluted Perl syntax with advanced algorithm design, and I do not recommend it if you have a standard algorithm textbook, such as the one by Sedgewick. Additionally, the code samples are not useful for Perl development due to the nature of Perl as an interpreted language. For this reason, the algorithms will most likely slow down your Perl programs, even though they are meant to be optimizations.
Microsoft Manual of Style for Technical Publications (Paperback) by Microsoft Corporation (Author) $29.99 [Amazon] This is something that any serious technical writer should own and review occasionally. It helps with word choice, such as how to phrase dialog boxes. I also felt it was useful for gearing my writing to readers in other countries, who make up the majority of my traffic.
Numerical Methods for Scientists and Engineers (Paperback) by Richard Hamming (Author) $22.95 [Amazon] This helped me frame my optimization efforts in programming in a more scientific way. I will admit I do not reference this often or spend much time with it, but the approach emphasized in analysis is worth admiring and emulating. I don't consider this a practical book for my work.
Pro ASP.NET 3.5 in C# 2008, Second Edition (Windows.Net) (Paperback) by Matthew MacDonald (Author), Mario Szpuszta (Author) $59.99 [Amazon] This is a typical yet competent book on ASP.NET. I don't think it is any better or worse than its competitors, but anyone trying to learn ASP.NET will benefit from it. I don't think it would be advantageous to buy more than one of this topic of book, or to upgrade older books. The tips are practical and actionable, but are more beginner level than advanced level.
Professional C# 2005 with .NET 3.0 (Wrox Professional Guides) (Paperback) by Christian Nagel (Author), Bill Evjen (Author), Jay Glynn (Author), Karli Watson (Author), Morgan Skinner (Author) $59.99 [Amazon] This was the first C# book I read and I found it very useful as an introduction to the language. It is something you should read before ever writing a line of C# code. Specifically, memorize the sections on data types and simple collections before getting started. Some of the chapters, such as remoting and Silverlight, have not been useful or relevant to my work. I don't think this is an exceptional book, but it is competent and useful. You should acquire the newer versions focused on .NET 3.5 instead of this version.
Professional LINQ (Programmer to Programmer) (Paperback) by Scott Klein (Author) $49.99 [Amazon] This was not a good book and was way too expensive for what I got. It was full of code errors and other mistakes, and was seemingly rushed to the market. Later versions may be much better, and if it were free of all the errors, and had a more expanded section on the core LINQ methods, it would be all right.
Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series) (Hardcover) by Martin Fowler (Author), Kent Beck (Author), John Brant (Author), William Opdyke (Author), Don Roberts (Author) $59.99 [Amazon] This book provides steps and examples for rearranging your code such that it is easier to maintain and understand, and less likely to be accidentally broken. The code is based in Java but for a C# programmer that is not a problem. I feel this book is useful for getting a start in practical design techniques.
SQL Cookbook (Cookbooks (O'Reilly)) (Paperback) by Anthony Molinaro $39.95 [Amazon] This is a practical guide to using SQL in different databases. One useful part is it helps frame the many differences between different database implementations. It also helped me better understand the concept of SQL Join clauses. I consider this a worthwhile purchase, but not a critically important one.
The Art of Computer Programming, Volume 4, Fascicle 1: Bitwise Tricks & Techniques; Binary Decision Diagrams (Paperback) by Donald E. Knuth (Author) $19.99 [Amazon] This is a classic book that helps frame the approach to computing. I do not understand all the technical details, but the process of computation, such as figuring out more advanced topics regarding bits, is useful to be familiar with. Not a practical purchase; entirely theoretical.
The Art of Computer Programming, Volume 4, Fascicle 2: Generating All Tuples and Permutations (Paperback) by Donald E. Knuth (Author) $19.99 [Amazon] This is also a classic and theoretical book. It helped me understand the theory behind adding words together and computing possible solutions to these puzzles. It has tons of information on low-level anagram logic, which I found interesting but absolutely not practical.
The C# Programming Language (3rd Edition) (Microsoft .NET Development Series) (Hardcover) by Anders Hejlsberg (Author), Mads Torgersen (Author), Scott Wiltamuth (Author), Peter Golde (Author) $44.99 [Amazon] This is the official language specification for the C# language, and it is critical to own if you plan on doing any serious writing about C# or the .NET framework in general. I don't consider it an extremely useful book for learning to program C#, but to advance your knowledge of the specifics and the terminology, it is irreplaceable. It took me about six months to read this book in its entirety, and this task was worthwhile.
(See The C# Programming Language [Specification].)
The Elements of Technical Writing (Elements of Series) (Paperback) by Gary Blake (Author), Robert W. Bly (Author) $9.95 [Amazon] This is not a computer book per se, but contains details regarding writing about computers. I feel this book is far less useful than the more authoritative and complete books available. It is something worth spending a few hours reading once in a while, but did not advance my understanding of technical writing in a significant way.
The Handbook of Technical Writing, Eighth Edition (Handbook of Technical Writing Practices) (Hardcover) by Gerald J. Alred (Author), Charles T. Brusaw (Author), Walter E. Oliu (Author) $39.95 [Amazon] This is one of the top references for technical writing, and really helped me understand the art better. I feel this has substantial practical wisdom and can really help people trying to write articles about computer programming. I highly recommend it for serious writers of technical content, such as help files or programming tutorials.
Web Copy That Sells: The Revolutionary Formula for Creating Killer Copy Every Time (Paperback) by Maria Veloso $21.95 [Amazon] This book is not about computing, but is focused on writing material that can help your website improve its sales. It contains some practical tips about selling over the Internet, such as the kinds of language to use to be convincing. I feel it can have some benefit for SEO and people trying to develop engaging website content of all types. However, I don't put it high on the list of books to buy for website authors.
Website Optimization: Speed, Search Engine & Conversion Rate Secrets (Paperback) by Andrew King (Author) $39.99 [Amazon] This is an excellent book about the specifics of optimizing websites for performance. The second part, which deals with code-specific tuning, is very helpful for improving your CSS structure and understanding how web pages load. I have a better summary of the book on this site.
(See Website Optimization Book.)
Writing for Computer Science (Paperback) by Justin Zobel $29.95 [Amazon] This is a useful reference for people interested in writing about computer science. For me, it helped solidify some of my intuitions about the art and reassured me about some things. It is a book that needs to be complemented by other books.
I feel is it appropriate for me to be critical of these books because they are quite expensive. I do not get $50 for each person who reads my website; I get around half a cent (USD) per reader.
Count 30 11 (unsorted 2) 3 (unsorted 1) Cost $1230 $617 (unsorted 2) Undefined (unsorted 1) Date Sunday, April 19, 2009 Thursday, July 3, 2009 (unsorted 2) Wednesday, November 18, 2009 (unsorted 1)
Happy reading! Over time I hope to expand this section so that some of the best books have links to separate review pages. Also all the books should have at least a 1 paragraph description written by me. The knowledge contained in some of these books is many times more valuable than the retail cost.