Skip to content

Latest commit

 

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

* Structure and Interpretation of Computer Programs Notes

  Quick links:
  - [[https://raw.githubusercontent.com/nebhrajani-a/sicp/master/video_notes/video_notes.pdf][PDF]]
  - [[https://nebhrajani-a.github.io/sicp/video_notes/][Web]]
  - [[https://github.com/nebhrajani-a/sicp/blob/master/video_notes/video_notes.org][Org]] (WIP)
  -----

 #+HTML: <img src="./sicp.jpg" align="right" width="300">

  /Structure and Interpretation of Computer Programs/, also called the
  Wizard Book, is a book based on an introductory computer science
  course taught at MIT from 1981 to 2007.

  #+begin_quote
  Lisp is worth learning for the profound enlightenment experience you
  will have when you finally get it; that experience will make you a
  better programmer for the rest of your days, even if you never
  actually use Lisp itself a lot.
  #+end_quote
  – Eric Raymond

  Don't take Eric's word for it --- study the book yourself! This
  repository provides notes based on the video lectures that you will
  find useful if:

  - You want SICP 'distilled' in a small file.
  - You want to see how old MIT Scheme code is implemented in Racket's
    =#lang sicp=.
  - You're following the video lectures, and of course, if:
  - You came across this repository late at night and you have nothing
    better to do.

** Notes
   These notes are based on the [[https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/][1986 presentation of 6.001 (SICP),
   produced by Hewlett-Packard]]. The notes are generated using Emacs'
   Org mode, are written in literate programming style, and use
   Racket's =#lang sicp=. In some (very few) cases, this causes the
   code in these notes to differ from the equivalent code in
   MIT-Scheme. These instances are pointed out in the notes.

   -----

** Metadata
*** On Literate Programming

    SICP and its video lectures are [[https://www.eecs.umich.edu/techreports/cse/2021/CSE-TR-001-21.pdf#%5B%7B%22num%22%3A55%2C%22gen%22%3A0%7D%2C%7B%22name%22%3A%22XYZ%22%7D%2C72%2C717.509%2Cnull%5D][particularly well-suited]] to
    literate programming, given the fact that SICP's exercises and
    example programs are *highly* inter-dependent. Often, later
    lectures require small procedures defined in past lectures.
    All-in-all, this makes writing code while following SICP a tough
    job, since yank-pasting dependencies every time you need them is
    tiring, and a bug fix will not propagate to all the pastes. This
    is where literate programming becomes useful, since it maintains
    only one copy of each code block, and changes can be
    forward-propagated by re-evaluation.

*** MIT's SICP Content

**** Videos
     The videos the notes are based on are licensed by MIT under [[http://creativecommons.org/licenses/by-sa/3.0][CC-BY-SA 3.0]].
     The citation of the course on MIT OCW is:
     #+begin_quote
     Eric Grimson, Peter Szolovits, and Trevor Darrell. /6.001 Structure
     and Interpretation of Computer Programs/. Spring 2005. Massachusetts
     Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu.
     License: Creative Commons BY-NC-SA.
     #+end_quote

** License
   All material in this repository that is my creative property is
   licensed under [[https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en][CC-BY-NC-SA 4.0]].

About

Racket implementation and notes for SICP's video lectures.

Topics

Resources

Stars

69 stars

Watchers

4 watching

Forks

Contributors

Languages