I have developed a textbook on the programming language Scheme, titled An Introduction to Functional Programming with Scheme, for use in the Programming Languages course at Rowan and at other universities. The SBR 2002 grant enabled me to bring the textbook to completion.
A Programming Languages course in a computer science curriculum covers a number of different topics. One of the course objectives is that the students should understand general concepts of programming languages. Another objective is that the students should gain experience writing programs in several different programming languages chosen from contrasting programming paradigms. Typical languages for this purpose include Scheme, Prolog, Smalltalk, and APL, all of which are quite different from the conventional languages like C++ or BASIC on which most of the students' prior programming experience is based.
There are many good textbooks on the concepts of programming languages on the market, and I ordinarily assign one of these as the chief textbook in the course. However, finding a suitable textbook for specific languages is more difficult. Most books on languages are very long -- far too long for a student to read in the two to three weeks that can be devoted to each language. Some programming language concepts texts devote chapters to individual languages, but these are often abstract in their approach and lack tutorial examples. And if no textbook on the language is assigned, then the students do not have any written reference book or supplementary examples in case some point in a lecture is unclear.
Having failed to find a suitable short textbook on Scheme, I decided to write one myself. I have been using early drafts of this book for the last three years in my Programming Languages course, with quite positive results. (As measured by quiz scores, student comprehension of the material improved when I stopped using the Scheme textbook I had used previously and began using a draft of my own book.)
With the support of the SBR grant, I have added sections describing several of the different Scheme interpreters that are available, giving sample interpreter sessions, instructions for using the interpreter, and information about how to obtain the software. I have also added more exercises for the reader, to ensure that each concept is well-reinforced. Finally, I have refined the writing and overall presentation, with the help of other readers, in preparation for submission for publication.