# SICP in Racket documentation

**URL:** <https://racket.discourse.group/t/sicp-in-racket-documentation/2037>\
**Category:** Questions & Answers\
**Tags:** documentation\
**Created:** [June 24, 2023, 11:18am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037 "2023-06-24T11:18:39Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [June 24, 2023, 11:18am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/1 "2023-06-24T11:18:39Z")

</div>

Hello,  
I noticed that SICP isn’t mentioned in Racket documentation near the other textbook like PLAI and EOPL.  
I wonder why.

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [June 25, 2023, 5:49pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/2 "2023-06-25T17:49:43Z")

</div>

I’m guessing because it doesn’t have

```scheme
(define scribblings '(("scribblings/plai.scrbl" (multi-page) (teaching -20))))

```

in [https://github.com/sicp-lang/sicp/blob/master/sicp-doc/info.rkt](https://github.com/sicp-lang/sicp/blob/master/sicp-doc/info.rkt) ?

S.

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [June 28, 2023, 2:27pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/3 "2023-06-28T14:27:09Z")

</div>

Did PLAI make SICP obsolete?

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [June 28, 2023, 4:36pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/4 "2023-06-28T16:36:39Z")

</div>

I don’t know what makes a book obsolete but HTDP and DCIC are good alternatives in the role of introduction to CS. Many more good books are listed at [https://racket-lang.org/books.html](https://racket-lang.org/books.html)

I’m guessing the respective/common authors would also acknowledge an influence.

I think PLAI has a different audience in mind:

> PLAI is designed for upper-level courses that introduce the main ideas of programming languages. - [https://www.plai.org/](https://www.plai.org/)

Best regards

Stephen

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [June 28, 2023, 5:04pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/5 "2023-06-28T17:04:27Z")

</div>

I don’t know DCIC. Do you think SICP is too difficult as an introduction to CS?

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [June 28, 2023, 6:12pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/6 "2023-06-28T18:12:21Z")

</div>

> I don’t know DCIC.

> **[A Data-Centric Introduction to Computing](https://dcic-world.org/)**
>
> This book is an introduction to computer science. It will teach you to program, and do so in ways that are of practical value and importance. However, it will also go beyond programming to computer science...

> Do you think SICP is too difficult as an introduction to CS?

I don’t know. I suppose it depends on your background.

If I remember correctly SICP asked for a lot of background domain knowledge that was reasonable for an engineering student at MIT? but not expected for a CS student?

If you want to learn Racket I think the advice at [https://docs.racket-lang.org/getting-started/index.html](https://docs.racket-lang.org/getting-started/index.html) is good.

Best regards  
Stephen

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [June 29, 2023, 3:36pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/7 "2023-06-29T15:36:17Z")

</div>

I studied engineering and I really loved SICP, because it gave me a strong mindset and changed the way a think about computation.

---

<div class="post-metadata">

**Author:** ![alanquits](https://avatars.discourse-cdn.com/v4/letter/a/e8c25b/32.png) [@alanquits](https://racket.discourse.group/u/alanquits)\
**Post date:** [June 30, 2023, 2:00am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/8 "2023-06-30T02:00:25Z")

</div>

SICP was my introduction to scheme. I did not study computer science or engineering in college and I thought it was very approachable and well-written, especially the first few chapters.

That being said, I had several years of programming experience in C, Fortran, and Python as well as a few useful undergraduate math courses prior to reading it. It probably also helped that I read it by choice rather than being forced to.

Imo, it’s up there with K&R for the C language. That’s just my personal bias though 🙂

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [June 30, 2023, 11:26am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/9 "2023-06-30T11:26:17Z")

</div>

A PR is welcome.

> **[GitHub - sicp-lang/sicp: A SICP language for Racket.](https://github.com/sicp-lang/sicp)**
>
> A SICP language for Racket. . Contribute to sicp-lang/sicp development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![bsassoli](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/bsassoli/32/1074_2.png) [@bsassoli](https://racket.discourse.group/u/bsassoli)\
**Post date:** [July 1, 2023, 3:48pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/10 "2023-07-01T15:48:45Z")

</div>

I wonder if the fact that HTDP (co-authored by Felleisen, Flatt etc) was meant as a "better" SICP has anything to do with it. [https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp-journal/paper.pdf](https://cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp-journal/paper.pdf)

---

<div class="post-metadata">

**Author:** ![EmEf](https://avatars.discourse-cdn.com/v4/letter/e/53a042/32.png) [@EmEf](https://racket.discourse.group/u/EmEf)\
**Post date:** [July 1, 2023, 4:28pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/11 "2023-07-01T16:28:34Z")

</div>

> HTDP (co-authored by Felleisen, Flatt etc) was meant as a "better" SICP has anything to do with it.

On Jul 1, 2023, at 11:58 AM, Bernardino Sassoli wrote "HTDP (co-authored by Felleisen, Flatt etc) was meant as a `better' SICP.”

As is, this statement is a misinterpretation of the article and HtDP.

1. The very beginning of the article says that SiCP is a revolutionary introduction to Computer Science. I stand by this characterization to this day (even after Gerry went for a JS version :-). It also clarifies that SiCP introduces many of the central concepts of Computer Science. Gerry agrees to this when he says during his talks that Scheme is the computational sketchboard for explaining the landscape. (I think it’s also fair to say that he considers programming “easy”.)

2. And that’s why and how HtDP and SiCP differ and where we disagree with Gerry and Hal. SiCP does _not_ teach how to create programs in response to a problem statement when a student stares at a blank screen (back then, equally likely, a blank piece of paper). So HtDP _intentionally_ does _not_ introduce the central concepts of computer science but teaches how to proceed systematically. (It teaches a few CS concepts on the side.)

Why is SiCP not listed on the page titled "All Racket Books”? SiCP isn’t a Racket book and all books listed explicitly use Racket/DrRacket (or DrScheme from the olden days, before Racket transcended Scheme).

FWIW, my understanding is that the SiCP online version is created with Dorai Sitaram’s slatex, running in Racket (but technically it might run in MIT Scheme). This isn’t acknowledged (last time I checked) but it is the only connection to Racket so far.

If someone makes a full-fledged `#lang sicp` and people start teaching with this language, we would and should list SiCP too.

Should we now? — Matthias

---

<div class="post-metadata">

**Author:** ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)\
**Post date:** [July 1, 2023, 5:02pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/12 "2023-07-01T17:02:02Z")

</div>

> I wonder ...

I find this in bad taste.

As far as I know, the SICP authors never asked to be included.

Besides, if Stephen's explanation at the thread start is correct, just submit a PR.

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 1, 2023, 5:11pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/13 "2023-07-01T17:11:09Z")

</div>

> [@EmEf](#):
>
> If someone makes a full-fledged `#lang sicp` and people start teaching with this language, we would and should list SiCP too.
> 
> Should we now? — Matthias

My understanding was the [SICP Collections](https://docs.racket-lang.org/sicp-manual/index.html) was _full fledged_ and even includes both a `#lang sicp` and the picture language used in SICP.

I believe the SICP collections **should** be listed in category “Other Languages in the Racket Environment”, rather than in _Miscellaneous Libraries_ at [https://docs.racket-lang.org/](https://docs.racket-lang.org/)

This can be done by a pull request to set the third parameter(category) to `(language)` in [https://github.com/sicp-lang/sicp/blob/master/sicp-doc/info.rkt](https://github.com/sicp-lang/sicp/blob/master/sicp-doc/info.rkt) to

```scheme
#lang info

(define scribblings '(("sicp-manual.scrbl" (multi-page) (language))))

```

(I can’t right now I’m travelling)

Stephen

---

<div class="post-metadata">

**Author:** ![bsassoli](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/bsassoli/32/1074_2.png) [@bsassoli](https://racket.discourse.group/u/bsassoli)\
**Post date:** [July 1, 2023, 5:12pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/14 "2023-07-01T17:12:17Z")

</div>

> [@EmEf](#):
>
> As is, this statement is a misinterpretation of the article and HtDP.

I apologize for any misrepresentation, which was clearly unintentional. And thanks for the clarification.

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [July 1, 2023, 6:55pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/15 "2023-07-01T18:55:42Z")

</div>

@soegaard and I welcome a PR to SICP collections.

But re: organization in general, I made a quick pass at [https://docs.racket-lang.org/](https://docs.racket-lang.org/) and found:

Teaching:

- How to Design Programs (for HtdP)
- How to Design Programs Languages (for HtdP)
- How to Design Programs Teachpacks (for HtdP)
- (gap)
- Essentials of Programming Languages Language (for EOPL)
- Programming Languages: Application and Interpretation (for PLAI)
- Picturing Programs Teachpack (for Picturing Programs)
- Sprachebenen und Material zu Schreibe Dein Programm! (for Schreibe Dein Programm!)

Other Languages in the Racket Environment:

- The Pie Reference (for The Little Typer)
- The Pie à-let-mode Reference (for The Little Typer)
- PLAI Typed Language (for PLAI)
- Plait Language (for PLAI)
- Plaitypus Language (for PLAI)
- ProfessorJ: Java in Racket (for HtdC)
- (gap)
- How to Design Classes Languages (for HtdC)
- PLAI Lazy (for PLAI)

Teaching:

- Regex Machine Language

Miscellaneous Libraries:

- DSSL: Data Structures Student Language (for a course at Northwestern)
- DSSL2: Data Structures Student Language (for a course at Northwestern)
- Malt - A minimalist deep learning toolkit (for The Little Learner)
- SICP Collections (for SICP)

Perhaps it's worth making a plan on how to organize them all first, before making any changes.

Some further thoughts:

1. I do not know what "gap" signifies.

2. There are two "Teaching" sections.

3. There are three more axes that should be taken into consideration for organization.

- Whether the package is shipped with the standard distribution of Racket (I assume this is what the first "Teaching" section is for)
- Whether the package is accompanying a book.
- Whether the package is officially used in an educational institution.

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [July 1, 2023, 7:53pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/16 "2023-07-01T19:53:15Z")

</div>

Thank you Matthias, very interesting.

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 1, 2023, 10:29pm UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/17 "2023-07-01T22:29:25Z")

</div>

How about organising by the related book with the first item linking to the book itself, and gap after - as is currently the case with HTDP.

This has the advantage of the gap being an existing mechanism - and the disadvantage that I am yet to divine how to use it.

```scheme
Books
* How to Design Programs
* How to Design Programs Languages
* How to Design Programs Teachpacks

* Essentials of Programming Languages
* Essentials of Programming Languages Language

* Programming Languages: Application and Interpretation
* PLAI Typed Language
* Plait Language
* Plaitypus Language
* PLAI Lazy
  
* Picturing Programs
* Picturing Programs Teachpack
 
* Schreibe Dein Programm!
* Sprachebenen und Material zu Schreibe Dein Programm!

* How to Design Classes
* How to Design Classes Languages
* ProfessorJ: Java in Racket

* The Little Typer
* The Pie Reference
* The Pie à-let-mode Reference

* SICP
* SICP Language
* SICP Picture language

(and all the other books listed at https://racket-lang.org/books.html)

```

Not sure about _Regex Machine Language_ because it appears to be a set of blog posts [https://swtch.com/~rsc/regexp/](https://swtch.com/~rsc/regexp/) - but real libraries also struggle with ephemeral material, no matter how valuable.

```scheme
* Regular Expression Matching: the Virtual Machine Approach by Russ Cox
* Regex Machine Language: An implementation of Russ Cox's regular expression machine language

```

> [@sorawee](#):
>
> 1. There are two "Teaching" sections.

a duplicate category created by defining a string category "Teaching"

The category is set by the third parameter of `(define scribblings` in the `info.rkt`

Note: the title on the index page [https://docs.racket-lang.org](https://docs.racket-lang.org) is set by `@title{` in the package scribble file [https://github.com/a11ce/actual-real-racket/blob/main/actual-real-racket.scrbl](https://github.com/a11ce/actual-real-racket/blob/main/actual-real-racket.scrbl)

Best regards,

Stephen

* * *

```scheme
(define scribblings
  (list (list "main.scrbl"
              empty-list
              (list "Teaching")
              "regex-machine")))

```

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [July 2, 2023, 6:05am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/18 "2023-07-02T06:05:55Z")

</div>

> Matthias:  
> SiCP isn’t a Racket book and all books listed explicitly use Racket/DrRacket

I agree with you Matthias, but Racket is based on scheme. I think that SICP is a good start.

Do you think SICP is too difficult for ICT students?

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 3, 2023, 9:23am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/19 "2023-07-03T09:23:43Z")

</div>

> [@matteo-daddio](#):
>
> Do you think SICP is too difficult for ICT students?

I think this is the wrong question. If someone say's 'I want to learn to program' or 'I want to learn lisp' we should understand their context and background before suggesting _any_ text.

There many people who sing the praises of SICP because it _worked for them_, and there are also lot's of people who were recommended SICP as the _only way_ to learn programming (or lisp) and didn't get past the second or third chapter.

This is even sadder if this left them feeling _'I'm not good enough/smart enough'_. to program.

One of the things that attracted me to HTDP was the assertion that '_**[everyone can design programs](https://htdp.org/2023-5-12/Book/part_preface.html)**_' - made me feel that _I can too_.

To me this attitude of inclusion is a shining light that gives me and others the confidence to understand in a world where almost every device and service you interact with is programmed. It's not magic, but something that could be understood _by me_.

Best regards,

Stephen

---

<div class="post-metadata">

**Author:** ![matteo-daddio](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/matteo-daddio/32/1245_2.png) [@matteo-daddio](https://racket.discourse.group/u/matteo-daddio)\
**Post date:** [July 3, 2023, 11:14am UTC](https://racket.discourse.group/t/sicp-in-racket-documentation/2037/20 "2023-07-03T11:14:59Z")

</div>

I’m sorry Stephen, I didn’t want to offend anyone.  
Probably a better question can be:

- Do you think SICP is not recommended for ICT students?  
or:
- Do you think SICP is not suited for ICT students?  
or:
- Do you think SICP covers topics almost useless for ICT students?

[Next page](https://racket.discourse.group/t/sicp-in-racket-documentation/2037.md?page=2)
