Simply Scheme - 2nd Edition: Introducing Computer Science
For anyone learning the Scheme programming language, the second edition ofSimply Scheme: Introducing Computer Scienceprovides a very digestible textbook-style introductory tutorial to this powerful and elegant language.In the words of the authors,Simply Schemeis designed to be a "prequel" to another book,Structure and Interpretation of Computer Programs. This latter title has been a staple of introductory computer science courses for years, but it assumes a certain background.Simply Schemeworks hard to make the somewhat tricky ideas of Scheme accessible. This tutorial stresses small sections on key language features, from basic functions, variables, and onward to recursion and other functional programming concepts. While languages like C++ and Java use objects to model data, Scheme programmers break a problem down into functions. The art--and elegance--of problem solving in Scheme comes from applying recursion and other design concepts.Longer code samples in the book include a tic-tac-toe game, examples that work with poker and bridge, and a working spreadsheet demo. Throughout, the book employs a friendly and jargon-free approach to programming. This book is as much aboutthinkinglike Scheme as it is about the basic nuts and bolts of the language. Sections on using software patterns in Scheme help bring this new edition up to date.Though not often used in business, Scheme and its cousin Common Lisp (which the book describes in an appendix) are still favored by computer scientists, for example, in artificial intelligence research.Simple Schemesucceeds in making a difficult programming language both approachable and accessible. It's a valuable resource to any computer science student who is taking Scheme on for the first time.--Richard DraganTopics covered: Scheme language fundamentals, functions and higher-order functions, variables, lambda basics, recursion, abstraction, software patterns in Scheme, lists, trees, sequential programming, working with files, vectors, Common Lisp.