Havill begins his beginning computer science textbook with interdisciplinary problems and techniques rather than programming language constructs because it is more interesting to a more diverse audience and more accurately reflects the role of programming in problem solving and discovery: that is, a problem seeking a solution rather than a programming construct seeking an application. He covers what computation is; elementary computations; visualizing abstractions; growth and decay; forks in the road; text, documents, and DNA; designing programs; data analysis; flatland; self-similarity and recursion; organizing data; networks; and abstract data types. Annotation ©2015 Ringgold, Inc., Portland, OR (protoview.com)