#lang scribble/doc @; $Id: sicp.scrbl,v 1.12 2009/05/04 05:59:07 neilpair Exp $ @(require scribble/manual) @title[#:version ""]{SICP Support by PLT Scheme} @section[#:tag "introduction"]{Introduction} @emph{NOTE: This version of this package is a work-in-progress, and is not yet intended for use by arbitrary students. The goal of this version is to permit the more adventurous to help test and polish this package, so that in the future it can provide a smooth experience for students. Please direct feedback to @link["http://www.neilvandyke.org/"]{Neil Van Dyke} .} This package implements support in @link["http://www.plt-scheme.org/"]{PLT Scheme} to permit students of Abelson and Sussman's @link["http://mitpress.mit.edu/sicp/"]{@emph{Structure and Interpretation of Computer Programs}} (@as-index{SICP})} textbook to use PLT Scheme tools for the programming assignments. The main reason students may wish to use this package is so that they can use PLT Scheme's @link["http://plt-scheme.org/tour.html"]{DrScheme} programming environment. Note that this package is not a project of the PLT organization. PLT has a related textbook, @link["http://htdp.org/"]{@emph{How to Design Programs} (@as-index{HtDP})}, with a different emphasis and a different pedagogic approach. A comparison of the two textbooks is beyond the scope of this document. A 2004 paper by some PLT members, ``@link["http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf"]{The Structure and Interpretation of the Computer Science Curriculum}'' [PDF], provides a PLT perspective on the differences. The official Web page for this package is: @link["http://www.neilvandyke.org/sicp-plt/"]{http://www.neilvandyke.org/sicp-plt/} @section[#:tag "installation"]{Installation} Installing this package consists simply of @tt{require}-ing it from the Internet-based PLaneT software repository, and then restarting DrScheme. The steps in detail for how a beginner may do this through DrScheme are: @itemize[ @item{1. Make sure that the computer connected to the Internet.} @item{2. Start DrScheme.} @item{3. Change the DrScheme Language to @onscreen{Module}. Specifically, select @menuitem["Language" "Choose Language..."] to get the @onscreen{Choose Language} dialog, then select @onscreen{Module} and click @onscreen{OK}.} @item{4. In the top @onscreen{Definitions} subwindow, paste the text: @verbatim[ "#lang planet neil/sicp\n" "\"Restart DrScheme now.\"\n" ]} @item{5. Click the @onscreen{Run} toolbar button.} @item{6. Wait for the @onscreen{"Restart DrScheme now."} message to appear in the @onscreen{Interactions} subwindow, then quit DrScheme and start it again.} ] @section[#:tag "usage"]{Usage} There are two separate ways to specificy use of the SICP Language in DrScheme: @itemize[ @item{Change the Language to @onscreen{SICP}, such as by using @menuitem["Language" "Choose Language..."]. This is the normal way.} @item{When using the @onscreen{Module} language, begin the Scheme file with the line: @verbatim[ "#lang planet neil/sicp\n" ]} ] This package uses the @link["http://planet.plt-scheme.org/display.ss?package=sicp.plt&owner=soegaard"]{soegaard/sicp} PLaneT package by Mike Sperber and Jens Axel Soegaard to implement the SICP Picture Language. Note that you should @emph{not} use the @tt{require} form shown in the documentation for that package --- this package provides the SICP Picture Language implicitly. @section[#:tag "history"]{History} Note that PLaneT package version numbers of @tt{neil/sicp} are used, rather than maintaning separate version numbers. @itemize[ @item{Version 1.3 -- 2009-05-04 PLaneT packaging corrections and addition of index entries.} @item{Version 1.2 -- 2009-05-04 PLaneT packaging correction.} @item{Version 1.1 -- 2009-05-04 PLaneT packaging corrections. Also switched to using PLaneT package version numbers.} @item{Version 1.0 -- 2009-05-04 Documentation added. First public release.} @item{No Version -- 2009-04 Initial version by Neil Van Dyke. Uses Sperber and Soegaard's Picture Language implementation by @tt{require}-ing from PLaneT. Non-public distribution.} ] @section[#:tag "legal"]{Legal} Copyright (c) 2009 Neil Van Dyke. This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License (LGPL 3), or (at your option) any later version. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See http://www.gnu.org/licenses/ for details.