CONCRETE ABSTRACTIONS offers students a hands-on, abstraction-based experience of thinking like a computer scientist. This text covers the basics of programming and data structures, and gives first-time computer science students the opportunity to not only write programs, but to prove theorems and analyze algorithms as well. Students learn a variety of programming styles, including functional programming, assembly-language programming, and object-oriented programming (OOP). While most of the book uses the Scheme programming language, Java is introduced at the end as a second example of an OOP system and to demonstrate concepts of concurrent programming.
Concrete Abstractions is a book in the same vein as the popular SICP (Structure and Interpretation of Computer Programs) and HTDP (How to Design Programs) but it's actually well written. Dont' get me wrong, SICP video lectures are really enjoyable and useful, yet the text itself isn't nearly as good: I constantly had a feeling of getting through thickets of unnecessary verbiage. Not the case with Concrete Abstractions where everything is to the point: no more, no less. At the same time, authors do not take the anti-intellectual turn of HTDP which, due to its attempt to be accessible to all audiences, is barely readable by any. Long story short, Concrete Abstractions is one of the most undeservedly overlooked books which is light years ahead of both SICP and HTDP.