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.