This book provides a solid introduction to computer science that emphasizes software engineering and the development of good programming style. Writing in an engaging style, Stanford professor Eric Roberts makes difficult concepts accessible and exciting. The text focuses on the use of libraries and abstractions, which are essential to modern programming. Moreover, by using libraries to hide C's complexity, Roberts introduces topics in an order that allows students to master each one individually. As soon as the student has the background to understand the details, Roberts reveals the underlying implementation of each library. With this approach, the libraries themselves demonstrate the power of abstraction.