Book Reviews

This page contains some brief review of books that I have read throughout the years.  I usually refer to this list to get an idea of what books to recommend developers of varying skill levels.


 C++ Books

  • The C++ Programming Language 

    by Bjarne Stroustrup

    This book is a must have for any developer that is working in C++. This is the only C++ reference book that I use.


  • Algorithms, Data Structures, and Problem Solving with C++ 

    by Mark Allen Weiss

    This is the first book that I used when I learned C++. It was one of the textbooks for my Data Structures and Algorithms class at RPI. The book does do a very good job of explaining C++ data structures and algorithms. In addition, it explains the math behind the various algorithms and explains when and why they should be used. The book has a good tempo if you are learning C++ and are interested in the computer science behind it all but it can also be a little academic at times.


 Debugging Books

  • Microsoft Windows Internals 

    by Mark Russinovich, David Solomon

    This is a great book. This book does a fantastic job at describing the windows architecture in depth. I recommend this book to anyone that really wants to understand the guts of an OS. It made me feel like I was back in my operating systems class at RPI. This book is a much needed reference as well as a good, but very meaty read. It always amazes me at how often understanding the OS and program interaction can point you to the cause of a problem. I also highly recommend Mark's Blog.


  • Reversing: The secrets of reverse engineering 

    by Eldad Eilam

    I bought this book because I wanted to sharpen my debugging skills. I am often faced with faulting modules without symbols so knowing assembly some as been very helpful. This book does a good job of explaining some useful windows OS information like, memory layouts, which is useful. It has a couple very complex chapters that walk you through reversing a program from just the assembly. This was a very good example to practice on although it was a little difficult with just the book format. Something like this online would be a great learning resource.


  • The Science of Debugging 

    by Matt Telles, Yuan Hsieh

    This is an interesting book. I really enjoyed the angle that the author took at breaking down bugs into a scientific problem. I also found the attempt at creating a classification and taxonomy of bugs was very interesting and thorough although I didn't agree with all of the classifications. I also thought that they did a fairly good job at discussing common types of bugs and debugging techniques.


 Process Books

  • The Ratonal Unified Process: An Introduction 

    by Philippe Krutchen

    I had originally started this book an then put it down. I picked it up again after it was re-recommended by a colleague. As with most books about iterative development that I have read, it seems to be focused on the process from a high level. It does a beter job then other books at explaining the varous milestones and deliverables involved in the process but still seems to lack some level of details tha I would like to have seen. I woud still recommend this as a good book for information on RUP, and iterative development.


  • Managing Iterative Software Development Projects 

    by Kurt Bittner, Ian Spence

    This book seems to do a good job at introducing the notion of iterative development and how you would run a project in an iterative model It appears to be more focused on the management and process side and is fairly light on the artifact generation and project timeline.


 Security Books

  • Writing Secure Code 

    by Michael Howard, David LeBlanc

    This book from microsoft press does a fantastic job of discussing windows software security. It explains common windows paradigms like acls and how to accomplish common security patterns like least privilege within the windows framework. This book includes a fairly good description of common security issues that you will face whil working on the windows platform. If you are a windows developer and are only going to read one book on security it should be this book.


  • Building Secure Software: How to avoid security problems the right way 

    by Gary McGraw, John Viega

    This book should be considered a pre-requisite for any developer interested in security. Gary does a great job of explaining the basics of security and how to prevent them in your application.


  • Exploiting Software: How To Break Code 

    by Gary McGraw, Greg Hogland

    This is the black hat version of building secure software. Gary uses this book to walk you through how software exploitation happens. This book includes many examples of exploits and walk you though the process of crafting the exploit. He also does a good job of introducing some advanced concepts like call hooking, binary patching, and boron tagging.


  • Software Security: Building Security In 

    by Gary McGraw

    I was lucky enough to take a 2 day training class with Gary in 2005 and this book does a good job of putting into print the practices that he has recommended for how to add security into the software development lifecycle. I can also tell that this book has benefited from a couple years of refinement as it is a little crisper than the training class was. Gary has a lot of experience with this and has succesfully rolled out this program at many companies. If you are an architect, senior developer or a manager looking for a way to get security integrated into your development process then this is a good book for you. Gary explains how to get the most bang for the buck without changing your existing processes.


  • Hacking Exposed - Third Edition 

    by Stuart McClure, Joel Scambray, George Kurtz

    I recommend this book, or an updated edition of it, for anyone that is interested in software security. This book will walk you through lots of examples of security problems. It allows you to understand the types of things that people will do with your software.