Gerry Sussman's new book on how to build adaptive systems just came out. It's called "Software Design for Flexibility: How to Avoid Programming Yourself into a Corner" and it covers similar ground to Sussman's advanced symbolic programming class which I liked a lot. The class itself is a kind of follow-up to SICP.
I'm reading the book over the next 8 weeks. If you want to read it together, and share notes and toy implementations, add your name to this doc.
Our goal in this book is to investigate how to construct computational systems so that they can be easily adapted to changing requirements. One should not have to modify a working program. One should be able to add to it to implement new functionality or to adjust old functions for new requirements. We call this additive programming. We explore techniques to add functionality to an existing program without breaking it.