This book presents a unique conceptual introduction to programming 
intended to give readers command of the major techniques used 
to control the complexity of large software systems: 
building abstractions, establishing conventional interfaces, 
and establishing new descriptive languages.