Algorithmics : the spirit of computing
The book starts with a look at the nature of programming and the different types of programming languages. It then moves on to algorithmics proper - computational complexity, intractible and undecidable problems. It goes into a bit more detail than Harel's lighter book Computers Ltd, but still doesn't get excessively technical. In the second edition this was where the book stopped, but the third has been considerably extended, with chapters on other forms of computing such as probabilistic algorithms, quantum computing and cryptography. There is also a look at issues of software engineering, and the book finished with a discussion of computer intelligence.