Recommended Reading - computing

In Association with In my work and web page writing, I have come across many computing books. Here are some of the best. I also have links so you can buy them from - if you buy them this way, Amazon will pay me commission on each book bought, which will help offset my costs in running this web site.

Lean Software Development

Mary and Tom Poppendieck

Buy this now from

***** = Essential reading for software professionals

If you only buy one software development book this year, buy this one. It will change the way you think about your work.

Lean development was started by Toyota in the 50s when Ford was selling more cars in a day than they were in a decade. They looked at all their development activities to see how they could develop quicker and cheaper and get closer to what the customer wanted. They were so successful that now all car manufacturers have to follow the principles they developed just to remain competitive.

The Poppendiecks' book shows how to apply these lean principles to software development. The first chapter gives an overview, including listing the seven principles. They then take a chapter per principle, showing how to apply this principle to software development. The final chapter is a "warranty" and guidelines for applying the principles usefully (basically think about them, don't apply them blind).

The seven lean principles are:

  1. Eliminate waste - anything which doesn't add value to the end product
  2. Increase feedback - iterate so you can get early feedback
  3. Delay commitment - so you can decide with the best knowledge
  4. Deliver fast - so you can afford to delay commitment
  5. Empower the team - they're the ones closest to the information
  6. Build integrity in - have an integrated product team, use refactoring to keep the code clean, and use test-driven development to make sure it's all tested and you have a reason for doing everything.
  7. See the whole - measure UP not DOWN - measuring details encourages micro-optimisation which tends to give overall suboptimisation. If you measure at a level higher you get global optimisations.

I found this book compulsive reading and difficult to put down. So much of it fitted with my experience running projects - they recommend the things I found worked, and avoid the things I found didn't. And the rest of it provided useful extra techniques. Buy it. You won't regret it. But don't expect silver bullets - you will have to work at it to get the benefits.

Now to carry on trying to implement these in my day-to-day work...

XML: Extensible Markup Language

Elliotte Rusty Harold

Buy this now from This book is a very good primer on XML, although its coverage of XSL is extremely out of date (based on an early draft of something which is still not finalised). Unlike many books I browsed, this gets going reasonably quickly and didn't bore me with too much waffle - in other words it's aimed at a reasonably technical audience.

XML Bible

Elliotte Rusty Harold

Buy this now from The revised, updated and expanded version of XML: Extensible Markup Language. If it's anything like the previous one, it's a must-have.

Here's the author's description:

The XML Bible is a comprehensive introduction to XML for Web page design. It shows you how to write XML documents, validate them with DTDs, design CSS and XSL style sheets for those documents, convert them to HTML, and publish them on Web servers for the world to read. You'll also learn how to use XML technologies like RDF, XLinks, XHTML, and namespaces to add structure and organization to your document collections. And finally, you'll learn about the many uses of XML beyond the Web site, including genealogy, subscription services, mathematics, vector graphics, and more.

The Art of Computer Programming

Donald Knuth

Buy this now from Written in the 60s, but still very much up to date now, each book covers its topic matter in great depth and is the reference work on the topic. You can buy it as a boxed set or each book individually.

Volume 1: Fundamental algorithms

Buy this now from

Fundamental Algorithms begins with mathematical preliminaries. The first section offers a good grounding in a variety of useful mathematical tools: proof techniques, combinatorics, and elementary number theory. Knuth then details the MIX processor, a virtual machine architecture that serves as the programming target for subsequent discussions. This wonderful section comprehensively covers the principles of simple machine architecture, beginning with a register-level discussion of the instruction set. A later discussion of a simulator for this machine includes an excellent description of the principles underlying the implementation of subroutines and co-routines. Implementing such a simulator is an excellent introduction to computer design.

In the second section, Knuth covers data structures--stacks, queues, lists, arrays, and trees--and presents implementations (in MIX assembly) along with techniques for manipulating these structures. Knuth follows many of the algorithms with careful time and space analysis. In the section on tree structures, the discussion includes a series of interesting problems concerning the combinatorics of trees (counting distinct trees of a particular form, for example) and some particularly interesting applications. Also featured is a discussion of Huffmann encoding and, in the section on lists, an excellent introduction to garbage collection algorithms and the difficult challenges associated with such a task. The book closes with a discussion of dynamic allocation algorithms.

Volume 2: Semi-numerical algorithms

Buy this now from

Volume 2 of Donald Knuth's classic series The Art of Computer Programming covers seminumerical algorithms, with topics ranging from random number generators to floating point operations and other optimized arithmetic algorithms.

The book begins with fundamental questions regarding random numbers and how to use algorithms to generate them. Subsequent chapters demonstrate efficient computation of single-precision and double-precision arithmetic calculations and modular arithmetic. The text then presents prime factorization (which can be used in cryptography, for instance) and algorithms for calculating fractions. This volume ends with algorithms for polynomial arithmetic and manipulation of power-series topics, which will benefit those with some knowledge of calculus.

Volume 3: Sorting and Searching

Buy this now from

Donald Knuth's The Art of Computer Programming, Volume 3: Sorting and Searching has long been recognized as the classic guide to finding the most appropriate sort and search methods for given sets of data structures, output requirements, and physical storage systems.

Yet this book is far more than just a collection of algorithm recipes. The reader is led to understand the mathematical basis for the verifiability and performance of each algorithm and how each fits within a taxonomy of varying solutions to similar problems. Each algorithm is clearly presented in text, in language-independent pseudocode, and in MIX assembler (MIX is the hypothetical computer model used throughout the Art of Computer Programming series). Flow charts and output diagrams appear frequently to clarify the discussion. The famous exercises, which are graded in difficulty from easy snap-quiz questions to unsolved research problems, keep you from glossing over the material or kidding yourself about what you know. Throughout, Knuth's writing is lucid and witty, and he keeps the most abstruse discussions rooted in reality with concrete examples.

Perl in a nutshell

Siever, Spainour and Patwardhan

Buy this now from The perl online documentation in a book. Great for checking up syntax and what exactly functions do, not so good for learning perl or finding out how to do things.

Programing Windows

Charles Petzold

Buy this now from Programming Windows was the book which taught how to write Windows applications (16-bit at that time). This is the latest in the series, and covers Windows 98 and Windows NT. Good for learning, possibly a bit verbose for a reference. Return to the Scottish Dance in Edinburgh home page.

Creative Commons License
Except where otherwise indicated, all content on this site (including text, images, dance descriptions and any other original work) is licensed under a Creative Commons License.

This page is maintained by Ian Brockbank
Edinburgh, Scotland