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: http://mitpress.mit.edu/sicp/
You can also get PDF file from here.

SICP Video
MIT open course ware

IDE
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:
http://community.schemewiki.org/?SICP-Solutions
http://wqzhang.wordpress.com/sicp-solutions/

Uncle bob's blog post about SICP
why clojure?
http://thecleancoder.blogspot.com/2010/08/why-clojure.html

STUB1: SICP & Assignment
http://cleancoder.posterous.com/stub-1-sicp-assignment

Robert Matin interview in The Pragmatic BookShelf
http://pragprog.com/podcasts/show/32

michael feathers 
SCNA 2009 presentation:Self-education and the craftsman
http://scna.softwarecraftsmanship.org/media/michaelfeathers

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