3
$\begingroup$

I am preparing to teach Scheme now, so I need a good reference book. I like books which can dig deep, with none of the beginner level introduction stuff that some books like to spend time on.

So, what is the best book to use as reference?

Note : In line with my usual style, I would prefer books that are available in both dead tree and online editions, with the online edition having a higher priority.

$\endgroup$

closed as primarily opinion-based by Kevin Workman, Buffy, ItamarG3, Aurora0001, Ellen Spertus Sep 22 '17 at 23:58

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • $\begingroup$ Is the reference book for you or the students? What level students are you teaching? What do you want them to learn? $\endgroup$ – Ellen Spertus Sep 15 '17 at 13:30
  • $\begingroup$ This question has more details - cseducators.stackexchange.com/questions/3627/… $\endgroup$ – Jay Sep 15 '17 at 13:36
  • $\begingroup$ @Jay: If you plan on using the SICP book along with Racket, keep in mind that the dialect of Scheme taught using the book isn't exactly the same as Racket. However, Racket has this interesting feature that lets you change/modify the language to all sorts of different dialects and variations of Lisp, including a variant designed specifically to be compatible with SICP which you may want to use. $\endgroup$ – Michael0x2a Sep 15 '17 at 15:29
  • 1
    $\begingroup$ @Jay Please don't count on people to read both questions. Put the same information in both questions instead. $\endgroup$ – thesecretmaster Sep 16 '17 at 3:04
  • $\begingroup$ I'd recommend HtDP, Little Schemer and SICP, in that order, based on my own preferences $\endgroup$ – xuq01 Sep 16 '17 at 5:45
5
$\begingroup$

How to Design Programs is released under the MIT license, and has the distinct advantage of being integrated directly into DrRacket. This allows you to work through bite-sized chunks of Scheme, and gives you an easy tutorial-style way to follow the textbook as you explore the language.

Within DrRacket, go to the Language Menu, and the Teaching Languages are in there. They each reflect portions of How to Design Programs. The instructions for utilizing the Teaching Languages are contained in the preface to the book.

$\endgroup$
  • 1
    $\begingroup$ And its lead author, Matthias Felleisen, is one of those brilliant people in both tech and in education. His working group, originally at Rice, and now at Northeastern U, has been doing great things for a long time. $\endgroup$ – Buffy Sep 15 '17 at 20:49
2
$\begingroup$

Unfortunately most scheme books are dead tree only and many are out of print, though available in the used book market.

The classic is Structure and Interpretation of Computer Programs by Abelson and Susan.

It is probably your best option and is still in print. There is also an online version of SICP at https://mitpress.mit.edu/sicp/full-text/book/book.html.

One of the advantages of Scheme, being so different from what your students already likely know, is that you don't have the problem of finding a good book for "scheme as a second language" as you would switching from one language to a similar one. A book that assumes the students don't know a lot is fine for a paradigm switch situation.

There are other books though. Scheme and the Art of Programming by Springer and Friedman is pretty good. Friedman also published The Little Schemer, which is probably too simple for your uses. But combined with his follow on The Seasoned Schemer you might do ok. But Abelson and Sussman is the gold standard.

Haskell, on the other hand, being more modern, would offer the possibility of e-books better than Scheme would, if that is all-important.


As user ctrl-alt-delor mentions below, there isn't much to the Scheme language, so a "reference" fits on an index card. The problem with functional languages for those that program in other languages is that you need to expand the way in which you think to use them effectively. So SICP, while not a reference, as such, will help your students make the mental switch necessary. It isn't like needing a Java reference if you are a C# programmer. It is nothing like that at all.


Here is a page of interesting links about Scheme and how to use it. http://www-users.cs.umn.edu/~gini/1901-07s/scheme.html. In particular, there is a link to another page showing how to set up emacs for scheme. There are also links to instructor materials, such as exercises.

$\endgroup$
  • $\begingroup$ I downloaded structure and interpretation of computer programs, a short while ago. It is available in html and pdf. I would also recommend this book. May be not as a reference book, but as a learning book. Can you get a scheme reference book, I thought you could only get a scheme, back of a postage stamp. This language is so tiny. $\endgroup$ – ctrl-alt-delor Sep 15 '17 at 12:07

Not the answer you're looking for? Browse other questions tagged or ask your own question.