Often people, students, and colleagues ask “where did you find that information”, or “where is a good place to start doing so and so.” To answer those questions, this page collects a variety of materials that have been useful to me over the years as reference, as learning materials, and to keep up to date with current practice.

Top 10 Technology (Computer) Books

These are the books I would suggest you get a copy of and read cover to cover. They range from hard-core code to interfacing with the end user and include some physical (meaning hardware) titles. Later on there is a selection of other helpful resources, but these are the ones you cannot do without.

  1. The Art of Readable CodeThe Art of Readable Code by Dustin Boswell and Trevor Foucher.

    This replaces my previous number one pick. It is up-to-date with recent languages and techniques. Though I don’t agree with all of them (specifically class member variable naming with a trailing underscore) and the sample code often violates some of their guidelines, the advice is solid. In fact, the key ideas should be written on a 3x5 card, laminated, and kept in every developers pocket! If you forget to do that, at least remember, “Code should be easy to understand.”

  2. Code Complete : A Practical Handbook of Software Construction by Steve McConnell.

    Code Complete should be on your book shelf and well dog-eared. It’s getting a bit dated but still holds a wealth of information for developers and it still gets a strong recommendation. For a long time this has been better than any other code-writing book I had ever read, seen, or heard about. I still say, “Buy it, read it completely.”

  3. Writing Solid Code : Microsoft’s Techniques for Developing Bug-Free C Programs by Steve Maguire.

    Yes it is from the dark empire, but they got to be the dark empire by writing a lot of code. Perhaps dated in using C and not Java, C%2B%2B, or Python, but still very applicable.

  4. The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks.

    There is a new “anniversary edition” out, I have read the original not the new one. Beautifully explains that throwing more people at a project does not make it develop faster. Easily number three on the list. Short and sweet as well.

  5. UNIX Network Programming by W. Richard Stevens.

    This book has been split into two books in the most recent revision. I have not read the new ones, but I hear good things. My original is falling apart at the binding from overuse. The examples are wonderful starting points for any network-based system.

  6. Computer Networks & Internets with Internet Applications by Douglas E. Comer, Ralph E. Droms.

    Another networking book with a new version out. Much more detailed about the protocols and less on programming applications. Perfect for network engineers and developers needing to understand the lower layers of the network model.

  7. Design of the UNIX Operating System by Marice J. Bach, Maurice Bach.

    If UNIX, Linux, or variant is your game this is your book. Describes in detail the decisions made in development of the BSD UNIX operating system.

  8. Modern Operating Systems by Andrew S. Tanenbaum.

    Before Linux there was Minix, a more modular well-built operating system for teaching operating system courses. This book details the concepts and the source code for Minix. Perhaps my favorite applied operating system book.

  9. Compilers : Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman.

    The dragon book. You never think you will be writing a compiler, but you never know. The techniques on parsing and symbol table maintenance are applicable to many other aspects of software development.

  10. Database Systems: A Practical Approach to Design, Implementation and Management by Thomas M. Connolly, Carolyn E. Begg, Carolyn Begg.

    The best database book I have found. Yes even makes those Microsoft Access people happy.

Top Periodicals

My magazine subscriptions have somewhat passed in the last year, so I will not rate them like I did with books. These however are magazines I regularly read soon after they arrive in my box.

  • C/C++ Users Journal

    An old fashioned C programmers dream. Nice code examples, sometimes funny editorials. They cover a nice range of topics.

  • MSDN Magazine

    Yes Virginia, another dark empire link. For Windows development, you cannot beat the word of the evil lord. This is also an excellent magazine, regardless of the ties.

  • Java Pro (defunct)

    Great magazine for Java17 developers. Very timely articles on progress in the Java17 market and not too much in bed with Sun.

  • MacTech

    Old timer apple people will know this one. I especially love the Programmers Challenge each month. Yes, this one is geared to Macintoshprogrammers, but you should always know all the angles!

  • Software Development

    Used to be Computer Language. A very nice magazine that explores the design, management, and architecting of software rather than the development of it.

  • Oracle If you develop for Oracle this is their magazine.

    I find it is full of marketing junk, with the exception of one or two actually technical articles on managing an Oracledatabase.

  • WebTechniques

    Wonderful magazine for web developers. Often includes articles on Apache, Perl, and other web scripting/development topics.

  • Dr. Dobbs Journal

    They had been the cat’s meow for a long time. A few years ago, they got a little off for me and I let my subscription lapse. Perhaps it’s time to reconsider.

Other Items of Interest

So what about all the other stuff? Well there are plenty of items that did not make the top lists that are still very useful, not to mention very fun. Here is a collection of items you should investigate if they peak your interest.

  • ARRL Handbook

    No amateur radio person would be complete without knowing about the American Radio Relay League Their publications are second to none in the areas of radio (wireless) systems. This is definitely a hardware hackers item.

  • New Hackers Dictionary or similarly called Jargon file.

    If you ever wondered where a geek term came from. This is the official source, if there can be one.

  • The Art of Computer Programming, Volumes 1-3 by Donald E. Knuth.

    The _computer scientist_in me forces me to put this landmark, comprehensive set of books on the list somewhere. If it is algorithim it is Knuth.

  • Algorithims in C by Robert Sedgewick

    An oldie but goody. I understand there is a [Java][17] version now.

  • Godel, Escher, Bach : An Eternal Golden Braid by Douglas R. Hofstadter.

    O.k. this may not _technically_be a software/computer book, but the essence of and recursiveness in the book applies itself to many computer problems. Besides, if you make it through this book, and understand half of it, you will be admired by all who know it. A former top 10 book for me.

  • O’Riley Publishing

    Perhaps the number one publisher of good UNIX and practical books I know of. Especially their series on Perl.

  • Java Look and Feel Design Guidelines

    An excellent book, easily extended to programming languages other than [Java][17], for developing graphical user interfaces.

  • The Unix Operating System by Kaare Christian, Susan Richter.

    My favorite intro to UNIX book. Used in my COS 212 UNIX Operating System classes.

  • Applying UML and Patterns by Craig Larman.

    I have gone mostly through the abbreviated CD/video version as well – got bored. Text has many good points but is often too dragged into details. Repetitive – as is the iterative cycle pushed in the book. Good reading and reference regardless, length just not needed.

  • Core J2EE Patterns

    Tells you what you will learn, learns you, tells you what you learned, then repeats three or four more times. The introduction to patterns and the pattern library are essential. There are parts in the middle I could have done without. makes me wonder which patterns Sun is pushing though Home == Factory!?

  • Art of Java Web Development by Neal Ford.

    An excellent diganosis of Java web development. I love his approach in leading you down the path to Model 2 and Model-View-Controller applications from an application that you think is flexible already. Every Java/JSP/Servlet web developer should give this a good read. One down fall is that it gets to web frameworks, but does not quite give enough information to use them. Regardless this book is an excellent overview.

  • Programming and Customizing PIC Microcontrollers by Myke Predko.

    This is not only a great book on the Microchip PIC Microcontroller, it is an excellent hardware book. There are many interface circuits and general purpose ideas that are incredibly useful. This is my first reference for hardware projects.

In the Queue

  • Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.

    I’m just starting this book, but it comes highly recommended. It is another in the line of clean, effective, code-writing books that are often missing from curriculum and teaching of Computer Science.

Final Notes

I hope that this reading list has given you some ideas and places to start researching more computer, software, and hardware topics. In the future we will refer back to parts of many of these books, magazines, and other items as backup material.

Until then, “So long and thanks for all the fish.” (Hitchhikers Guide to the Galaxy Trilogy by Douglas Adams)