[lambdaheads]Texts

[Programming][Languages]

Which texts will we use?

I will use only one text,

Principles of Programming Languages by Krishnamurthi and Felleisen
and supplement it with our own lecture notes.

Where do I find it?

Principles is available on the Web.

What are good sources of information on garbage collection?

The classic reference is a survey by Paul Wilson, a leading researcher in the field. Visit his research group's publications page and look for the survey entitled Uniprocessor Garbage Collection Techniques near the bottom. You may want the extended version, which is also newer.

Also, look at the on-line garbage collection FAQ and at the memory management FAQ.

Can you suggest supplementary texts on Scheme?

I recommend four.

The first is

How to Design Programs by Felleisen, Findler, Flatt and Krishnamurthi
This is a full-blown text, in a traditional format but with content unusual for an introductory programming text. It lays out the design philosophy I have been discussing in class.

The second is

The Little Schemer by Friedman and Felleisen
Warning: This book is idiosyncratic! It'll force you to think, and will leave your desk covered in peanut butter and jelly stains. (Read it, you'll understand.) If you can concentrate through it, it's probably the best introduction you will find on recursive, functional programming and thinking. Has a superb follow-up,
The Seasoned Schemer by Felleisen and Friedman
which uses the same style to lay bare the heart of Scheme's more advanced features.

The third is a classic that all computer scientists should read, regardless of their linguistic leanings:

The Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman
This book set the standard for all future writing about programming and languages, and has deep, deep nuggets of wisdom embedded even its footnotes (though it may take you years to comprehend them).

The fourth is, for a Scheme tome, the most curious:

Teach Yourself Scheme in Fixnum Days by Dorai Sitaram
It's organized to be a rapid introduction to Scheme for those who are familiar with more traditional languages and design styles, and succeeds superbly at this. I have a few quibbles with the content — for instance, if you read the material in section 5 that precedes section 5.1, your skin will rot and your hooves cleave — but that's not to detract from the splendid work overall.

Any other books I ought to read?

I strongly recommend two. The first will make you a much more effective writer. Lyn Dupre has shepherded many of the classic computer science books through Addison-Wesley press; she understands writing in the context of computer science better than just about anyone. She has distilled her experience into a very readable and practical book with the ugly title

BUGS in Writing
Don't read it all at once. Indeed, ignore most of it. Just follow the advice on active speech and you'll become a better writer.

Doug Hofstadter's classic

Gödel, Escher, Bach: An Eternal Golden Braid
is deep, thought-provoking and funny. He deals with many issues of language and shifting levels of interpretation, often in surprising contexts (such as DNA sequences) that we don't examine in this course. When I read it at age 15, this book changed my life and made me want to become a computer scientist (who, I thought, all thought about these issues — now I know better).