An introductory-level text for students who are not majoring in computer science as well as for computer science majors with no prior programming experience, Simply Scheme teaches computer science from a functional/symbolic point of view. It provides a solid platform from which students can go on to study the seminal work Structure and Interpretation of Computer Programs. Beginners will find the authors' approach sophisticated yet conversational and unintimidating. Using Scheme, a modern dialect of Lisp, they teach fundamental ideas and concepts of computer science -- composition of functions, function as object, recursion, abstraction (data abstraction and procedural abstraction), and sequential (non-functional) techniques -- in a way that avoids confusing technical pitfalls. Interesting nonmathematical programming examples use words and sentences as data; practical examples are represented by miniature spreadsheet and database programs.
Simply Scheme devotes five chapters to recursion, presenting distinct ways for readers to think about this watershed idea. There is also a chapter on file input/output, and students are able to work on substantial, realistic programming projects in the first semester.
Compared to Pascal- or C-based texts, Simply Scheme has many advantages in its use of the Scheme programming language. Scheme is interactive and allows for ease of program development and debugging; its first-class functions and automatic storage allocation provide a high level of abstraction so that programmers can concentrate on the desired goal instead of on the computer; its simple, uniform syntax doesn't take up months of class time.
Simply Scheme differs from other Scheme-based books in its detailed and thorough exploration of the beginning steps in computer science. In addition to its emphasis on recursion, it also explores higher-order procedures and trees in depth, leaving object-oriented programming and the more difficult environment model for a later course. Simply Scheme extends the standard Scheme language with word and sentence data types to make symbolic programming easier for beginners. It also features a series of large sample programs and a series of suggested large programming projects.
The extra star is for the excessive effort these guys had to put in for what they did. It was not very effective. The biggest problem of this book is that it's full of confusing explanations the designers hoped would be "heuristic." This problem permeates the work from start to finish. The use of the special commands by the authors, not part of standard scheme, makes very little sense in most classroom settings that teach Scheme in the hopes of teaching functional programming. The whole idea of functional programming is that you have a bare group of essential concepts AND commands, and work your way from there. I had the great misfortune of taking a class where we weren't allowed to use the specially designed scheme commands for this book, but still had to buy it. If you are in that predicament, the book is completely worthless. Furthermore, while I admire the author's desire to prepare people for SICP, their treatment of this task borders on arrogance. At one point they actually suggest that "SICP was designed for MIT students" and that the rest of us aren't worthy of it yet. Quite frankly for anybody willing to take the time, SICP is not as terrifying as these guys make it out to be. This is a weak book.
A unique, eye-opening introduction to Computer Science / Programming. Functional Programming in Scheme taught here serves as a nice background for the famous SICP book.
This was the assigned textbook for an intro CS course at UNH when they used to start out with Scheme. While I enjoy Scheme and LISP, I never got too into the languages and therefor haven't read any other Scheme books, so I don't have much to compare this book too. But the book was effective in teaching the language and making a good introduction to functional languages for those only accustomed to imperative ones.