Recommended reading from Coders at Work

January 24, 2010

I really enjoyed reading Peter Siebel’s Coders at Work, in which he interviews many prominent developers including Donald Knuth, Ken Thompson and Peter Norvig. A question that gets asked to the majority of the developers is what programming books do they recommend. I’ve complied some of their suggestions into the following list:

The Art of Computer Programming
TAOCP is mentioned throughout Coders at Work. Some of the developers had read it all the way through, and really got stuck into the maths. Others, such as Doug Crockford had only used the book as a reference. Almost everybody agreed that this book should be on your shelf though.

Programming Pearls
A book about good programming practice with examples in C, this classic has stood the test of time.

Beautiful Code
The tagline for this book is “Leading Programmers Explain How They Think”. The book contains lots of example code, and descriptions and commentary from the code’s author. While this book is only recommended once in Coders at Work, almost all of the interviewees stress the importance of reading code, and this book can help with that.

Structure and Interpretation of Computer Programs
SICP is recommended several times in the book. It’s supposed to be a very in depth book, it looks at programming from a functional perspective, using Scheme. Zawinski says despite being “Lispy”, it provides a great introduction to programming without teaching a language.

Purely Functional Data Structures
Describes data structures from a functional programming point of view, rather than the more common imperative perspective (such as Java and C++ data structure books).

Higher Order Perl
Brad Fitzpatrick recommends this book, which is about functional programming techniques in Perl. The reviews on Amazon seem to suggest this this is an excellent programming book, and should even be interesting for non-Perl developers.

Code Complete
Jamie Zawinski describes this as “the book you wish your idiot coworker had read”. It goes through the whole development lifecyle, including design, desbugging, testing and refactoring.

The Practice of Programming
Co-authored by one of the creators of the C programming language, this book aims to teach you good programming practices to help you write faster and more maintainable code.

The list above is just a sample of some of the books recommended in Coders at Work. The Joshua Block interview also mentions lots of interesting Computer Science papers.

The interviews are really great. Most aren’t particularly technical, but it is interesting to read about how these well-known programmers work, and to get some insight into some of the projects they’ve worked on. Coders at Work is well worth a read.

25 Free Computer Science Books

December 20, 2008

As a computer scientist I’m always looking to improve my knowledge of the subject. There are lots of great sources of information available online, but nothing really beats the depth of knowledge that you can find in a book. It is possible to get the best of both worlds though, as many books are now available online in full, and free of charge!

Below is a selection of 25 of the best free computer science books that I’ve found online, with a brief description of each one. Where the book is also available in printed form I’ve included a link to Amazon, using my affiliate link. If you’d like to buy one of the books but would rather not help towards the cost of running this blog then you can search for the books directly on the Amazon site.

Become An X coder
A guide to MacOSX development with Cocoa using Objective-C. The book contains lots of examples and detailed screenshots.

The Cathedral and the Bazaar
Eric Raymond’s brilliant book about Open Source software, and its impact on software development projects.
View on Amazon

Data Structures and Algorithms with Object-Oriented Design Patterns in Java
Also available in C#, Python, Perl, Ruby, Lua, C++ and PHP versions.
View on Amazon

Dive Into Accessibility
Another Mark Pilgrim guide, on creating accessible websites.

Dive Into Greasemonkey
Greasemonkey is a Firefox extension that allows you to write scripts that alter the web pages you visit. Mark Pilgrim presents lots of example code and case studies in this book.

Getting Real
The influential book from 37 Signals which describes a smaller, faster, and better way to build web based software.

Getting Started with awk
Awk is the perfect tool for many system admin tasks. This book contains loads of great examples, and will turn you into an awk master in no time!

Git Magic
A complete guide to the popular distributed version control software Git, from Linus Torvolds.

GPU Gems
NVidia’s book on GPU graphics programming covers topics such as lighting, shadows, modelling materials, and performance issues.
View on Amazon

How to Design Programs
An introduction to computer programming and designing programs with the Scheme programming language.
View on Amazon

Introduction to Design Patterns in
C++ with Qt 4

From the book itself: C++ is taught “The Qt way”, with an emphasis on design patterns, and re-use of open source libraries and tools. By the end of the book, the reader should have a deep understanding of both the language and libraries, as well the design patterns used in developing software with them.
View on Amazon

Learn You a Haskell for Great Good!
A funny title, but a serious book about the purely functional programming language Haskell.

Linux Device Drivers
An O’Reilly guide on how Linux device drivers work, and developing your own.
View on Amazon


Linux Network Administrator’s Guide
An O’Reilly guide to to network administration on Linux, covering topics such as configuration, firewalls, and DNS.
View on Amazon


Logic, Programming and Prolog (PDF)
Broken up into three parts: Foundations, Programming in Logic, and Alternative Logic Programming Schemes. This books covers both the theory and practice of logic programming with Prolog in detail.
View on Amazon

The OpenGL Programming Guide
Also known as “The Red Book”, this guide tells you all you need to know about the 3D graphics programming library.
View on Amazon

PHPUnit Pocket Guide
The official documentation of the PHP unit testing framework. Contains everything you need to know to start writing automated tests for your PHP code.

Practical Common Lisp
An introduction to Common Lisp. Covers the language in detail, and goes on to describe lots of real life software projects such as spam filters and an network enabled MP3 player.
View on Amazon

Programming in Lua
A complete guide to the popular lightweight scripting language, written by its chief architect.
View on Amazon

Programming Ruby: The Pragmatic Programmer’s Guide
A guide to the popular programming language Ruby from the Pragmatic Programmers.
View on Amazon

The Scheme Programming Language
A complete guide to the Scheme programming language.
View on Amazon

Software Engineering for Internet Applications
The textbook for an MIT course with the same name. This book discusses issues related to building online application, including user registration, content management, and scaling.

View on Amazon

SQL for Web Nerds
Written by MIT professor Philip Greenspun, this book aims to teach SQL from a real world perspective rather than from a theoretical standpoint.

Structure and Interpretation of Computer Programs
A classic computer science text that teaches some advanced programming concepts using Lisp.
View on Amazon

A Tutorial on Pointers and Arrays in C
An extremely detailed tutorial (10 chapters) on pointers and arrays in C. It starts with a description of a pointer and ends with function pointers.

That is just a selection of some of the great books that are available for free online. If you don’t know where to look for more a good place to start looking try my top 10 free python books post. I’m sure I’ll be posting about more in the future too, so be sure to subscribe!

10 Free Python Programming Books

August 23, 2008

Below is a collection of 10 great Python programming books that are available online in full, completely free of charge:

Dive into Python

This is a fantastic book that is also available in print. It covers everything, from installing Python and the language’s syntax, right up to web services and unit testing. This is a good book to learn from, but it’s also excellent to use a reference. I frequently find myself visiting the site! If you only read one book on this list make it this one.

An Introduction to Tkinter

Tkinter is a popular cross-platform Python GUI toolkit, and this book provides a good introduction with lots of examples. If you want to learn GUI development with Python then this book is a great place to start.

How to think like a Computer Scientist

This book uses Python to explain some Computer Science principals. It is full of examples, and each chapter has a collection of exercises for the reader to perform.

The Standard Python Library


This book provides a detailed description and usage examples for all of the modules in Python’s standard library. This fantastic reference is available in print.

Invent Your Own Computer Games with Python

This book is aimed at novice programmers who are interested in writing simple computer games. Each chapter describes a different game and goes through the stages of design and development. A great book for beginners, but the book lacks more advanced content and doesn’t include any information about Python game development libraries such as PyGame.

The Django Book



Django is a Python web framework (similar to Ruby’s Rails) which “encourages rapid development and clean, pragmatic design”. This book covers the framework in detail, and is a great place to start if you’re thinking about creating a dynamic website using Python. This book is also available in print

The Pylons Book

Pylons is another Python web framework. The book is structured in a very similar way to the Django book, and is worth reading if you’re looking for an alternative framework. This book is available in print too.

Data Structures and Algorithms with Object-Oriented Design Patterns in Python

This book provides a thorough introduction to data structures and algorithms using Python. This is definitely not a book for those wishing to learn Python. However, if you want to learn about data structures and algorithms, or you just wish to learn about their implementation in Python, I can’t recommend this book enough.

Building Skills in Python

This book consists of 42 chapters, each packed full of exercises designed to help you build Python programming skills. The book “includes six projects from straight-forward to sophisticated that will help solidify your Python skills”. A great book for those that already know Python, but would like to become more proficient.

Building Skills in OO Design

Written by the same author as the book above, this book follows the same format. This book focuses on object-oriented application design (using Python, of course) to help you to develop better programs.

More free books…

Above are just some examples of the books that you can find online. Back in January I posted a list of free computer science books, and I’ve managed to find lots more since then! I’ll post about them soon, so be sure to subscribe to my RSS feed.

Design Patterns

February 8, 2008

Knowledge of design patterns can be really useful when designing software. If you don’t know what a design pattern is, then from Wikipedia:

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.

Design patterns were made famous by the book Design patterns: elements of reusable object-oriented software, written by the Gang of Four, or GoF. Although I’ve never got round to reading it, it is fairly high on my to-read list!

Design Patterns by the GOF

Despite not having read the GoF book I’m still aware of some of the more common design patterns, such as the singleton, factory, and iterator patterns. Such is the nature of patterns that I’ve probably used some without even being aware,after all they are just common reusable software designs.

I recently came across an excellent website that gives details on all of the GoF design patterns, including descriptions, UML diagrams, and sample code in Java, C++ and PHP! The site isn’t good enough to displace the GoF book from my to-read list, but I’m sure I’ll find it useful for the mean time.

Free Computer Science Books

January 27, 2008

There are some really good computer science related books available online for free! Below are some of the great ones I’ve found, but I’m sure there must be some more. If you know of them please mention them in the comments.