<p><a href="http://www.ccs.neu.edu/home/matthias/HtDP2e/" rel="noreferrer">How to Design Programs</a> 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.</p>

<p>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 <a href="http://www.ccs.neu.edu/home/matthias/HtDP2e/part_prologue.html" rel="noreferrer">preface</a> to the book.</p>

CC BY-SA 3.0
2017-09-15T20:49:02.817Z
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.
Buffy
CC BY-SA 3.0
2017-09-15T19:53:37.407Z
2017-09-15T19:53:37.407Z
Ben I.
<p>Unfortunately most scheme books are dead tree only and many are out of print, though available in the used book market. </p>

<p>The classic is <a href="https://rads.stackoverflow.com/amzn/click/0262510871" rel="nofollow noreferrer"><em>Structure and Interpretation of Computer Programs</em></a> by Abelson and Susan. </p>

<p>It is probably your best option and is still in print. There is also an online version of SICP at <a href="https://mitpress.mit.edu/sicp/full-text/book/book.html" rel="nofollow noreferrer">https://mitpress.mit.edu/sicp/full-text/book/book.html</a>. </p>

<p>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. </p>

<p>There are other books though. <a href="https://rads.stackoverflow.com/amzn/click/0262192888" rel="nofollow noreferrer"><em>Scheme and the Art of Programming</em></a> by Springer and Friedman is pretty good. Friedman also published <em>The Little Schemer</em>, which is probably too simple for your uses. But combined with his follow on <em>The Seasoned Schemer</em> you might do ok. But Abelson and Sussman is the gold standard. </p>

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

<hr>

<p>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. </p>

<hr>

<p>Here is a page of interesting links about Scheme and how to use it. 
<a href="http://www-users.cs.umn.edu/~gini/1901-07s/scheme.html" rel="nofollow noreferrer">http://www-users.cs.umn.edu/~gini/1901-07s/scheme.html</a>.
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. </p>

CC BY-SA 3.0
2017-09-15T12:07:09.840Z
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.
ctrl-alt-delor
CC BY-SA 3.0
2017-09-15T11:41:23.167Z
2017-09-15T16:58:31.377Z
2017-09-15T16:58:31.377Z
Buffy
<p>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. </p>

<p>So, what is the best book to use as reference? </p>

<p>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. </p>

CC BY-SA 3.0
2017-09-15T13:30:36.700Z
Is the reference book for you or the students? What level students are you teaching? What do you want them to learn?
Ellen Spertus
CC BY-SA 3.0
2017-09-15T13:36:53.833Z
This question has more details - https://cseducators.stackexchange.com/questions/3627/functional-programming-using-f-sharp
Jay
CC BY-SA 3.0
2017-09-15T15:29:49.343Z
@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](https://docs.racket-lang.org/sicp-manual/index.html) which you may want to use.
Michael0x2a
CC BY-SA 3.0
2017-09-16T03:04:21.507Z
@Jay Please don't count on people to read both questions. Put the same information in both questions instead.
thesecretmaster
CC BY-SA 3.0
2017-09-16T05:45:04.923Z
I'd recommend HtDP, Little Schemer and SICP, in that order, based on my own preferences
xuq01
CC BY-SA 3.0
2017-09-16T06:51:16.640Z
@thesecretmaster I don't think they are the same question. I would like to keep them separate as per community guidelines on not making things too broad.
Jay
CC BY-SA 3.0
2017-09-16T06:52:08.727Z
@xuq01 I will add your recommendation to the consideration list. perhaps post your suggestion as an answer if possible.
Jay
CC BY-SA 3.0
2017-09-16T08:09:52.137Z
You might also be interested in [Concrete Abstractions](https://gustavus.edu/mcs/max/concrete-abstractions.html) - which is available online for free, as well as in dead tree form.
Tobia Tesan
CC BY-SA 3.0
2017-09-16T08:50:32.823Z
I shall look into that. and as always, a more detailed sentence as an answer post would be most useful since comments can get deleted after some time.
Jay
<resource-request><scheme>
Scheme - Which book To Use
# Scheme - Which book To Use

(Asked by: username_0 on 2017-09-15)

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.

**Tags:** resource-request, scheme

> **Comments:**
> **username_1**: Is the reference book for you or the students? What level students are you teaching? What do you want them to learn?  
> **username_0**: This question has more details - https://cseducators.stackexchange.com/questions/3627/functional-programming-using-f-sharp  
> **username_2**: @username_0: 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](https://docs.racket-lang.org/sicp-manual/index.html) which you may want to use.  
> **username_3**: @username_0 Please don't count on people to read both questions. Put the same information in both questions instead.  
> **username_4**: I'd recommend HtDP, Little Schemer and SICP, in that order, based on my own preferences  
> **username_0**: @username_3 I don't think they are the same question. I would like to keep them separate as per community guidelines on not making things too broad.  
> **username_0**: @username_4 I will add your recommendation to the consideration list. perhaps post your suggestion as an answer if possible.  
> **username_5**: You might also be interested in [Concrete Abstractions](https://gustavus.edu/mcs/max/concrete-abstractions.html) - which is available online for free, as well as in dead tree form.  
> **username_0**: I shall look into that. and as always, a more detailed sentence as an answer post would be most useful since comments can get deleted after some time.  

---

## 2 answers

### Answer by username_6 on 2017-09-15. Score: 4 | Accepted answer

[How to Design Programs](http://www.ccs.neu.edu/home/matthias/HtDP2e/) 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](http://www.ccs.neu.edu/home/matthias/HtDP2e/part_prologue.html) to the book.

> **Comments:**
> **username_7**: 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.  

---

### Answer by username_7 on 2017-09-15. Score: 2

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*](https://rads.stackoverflow.com/amzn/click/0262510871) 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*](https://rads.stackoverflow.com/amzn/click/0262192888) 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 username_8 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.

> **Comments:**
> **username_8**: 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.  

---

