http://groups.csail.mit.edu/mac/users/gjs/6.945/
Concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer.
A class in symbolic programming taught by Gerald Jay Sussman and Hizami Anuar.
I’ve read read/skimmed the Software Design for Flexibility, but I don’t feel like I have more than a superficial understanding of the concepts presented. Reading through the exercises for this course was interesting because they seemed significant and hard. Good hard, not silly hard.