Wednesday, February 16, 2011

Learning SICP: resources and tool

I started learning SICP since the beginning this year. The reason why I learn SICP is because I was inspired by Michael Feathers and Uncle Bob. In 2009, I watched the Michael Feathers presentation "Self-education and the craftsman" for SCNA 2009, he mentioned the SICP book, I did look at it at first, but LISP's lots of parenthesis scared me. Then last year when I read Uncle Bob's blog post "Why Clojure?", he recommend this book, and I also listened his podcast and watched his video about SICP, finally  make to decide to start learning it.

Here I would like to share What I found the useful resources and tools to learn SICP.

SICP text book
Official Web site:
You can also get PDF file from here.

SICP Video
MIT open course ware

I tried several LISP IDE, but finally I found DrScheme is the best one. DrScheme is included in the software called Racket, it is formally called PLT scheme. You can download Racket software from this site. It works on my Mac Pro, I haven't tried it on the Windows environment.

To run the program and exercises on the book, you need to download the package for SICP,
SICP support in PLT scheme. Just follows the installation instruction step by step. The latest version is SICP (PLaneT 1.13)

To use the SICP language in DrScheme, first choose Language|Choose Lanuage..., in Teaching language, choose SICP(PLneT 1.13),
and another most important thing: click "Show Details" Button, in "Output Syntax" group, under "Output Style", choose "write" radio button, then select OK.
I found if you use default selection, which "print" is selected, the output for list is quite annoying.

SICP exercise solutions
I found following two sites are pretty good:

Uncle bob's blog post about SICP
why clojure?

STUB1: SICP & Assignment

Robert Matin interview in The Pragmatic BookShelf

michael feathers 
SCNA 2009 presentation:Self-education and the craftsman

About DrScheme
I am interested in the chaos graphs in this article.

1 comment:

  1. Thanks for your post it helped me a lot. I am a self taught programmer and have to come to the point where its obvious to me that there are just things that I don't know (gabs in my fundamental programming knowledge). This book comes highly recommended and I have therefore decided to study if meticulously. Hopefully by the end I can also joins those singing its praise. Thanks.