Reading list (Object-Oriented Programming)
There is no set text for the course, in the sense of a book that we will work our way through, lecture by lecture. The closest book in spirit to the course is
- Barbara Liskov, Program Development in Java, Addison-Wesley, 2001, £47.99, ISBN 0201657686.
except that we shall be emphasizing programming examples much more than that book – and our programs will be written in Scala not Java.
As a guide to Scala, we will use
- Martin Odersky, Lex Spoon and Bill Venners, Programming in Scala.
For reading around the course, I recommend a number of other books. The structure of our programs will resonate with some of the 'design patterns' that have become a popular way to think about object-oriented programs. A chatty and accessible introduction to design patterns is this book:
- Head First Design Patterns
The design patterns movement started with the book,
Also helpful as an account of design by contract is
- Bertrand Meyer, Object-Oriented Software Construction, SAMS, 1997, £35.37, ISBN 0136291554.
This book is based on the Eiffel language invented by the author rather than Scala.
Here is a book about restructuring programs to make them more clear, the program maintenance counterpart of modular design. It resonates well with the lecturer's experience of designing for clarity and robustness.
- Martin Fowler, Refactoring: improving the design of existing code, Addison-Wesley, 2000, £37.99, ISBN 0201485672.
Also the following books about programming more generally would be good companions to the course:
- Jon Bentley, Programming Pearls (2nd ed.), Addison-Wesley, 2000, £21.99, ISBN 0201657880.
- Brian W. Kernighan and Rob Pike, The Practice of Programming, Addison-Wesley, 1999, £22.99, ISBN 020161586X.