- (YouTube) Link (TODO:Backup) for the time management presentation (Russian)
- (GitLab) Repository of Schemetran
- (SRFI) Scheme Request for Implementation 203: A Simple Drawing Language in the Style of SICP ((GitHub) Backup)
- (WordPress) Lay summary blog post (Backup)
- (Habr) Russian Lay summary 203 (Backup)
- (SRFI) Scheme Request for Implementation 216: SICP Prerequisites (Backup)
- (WordPress) Lay Summary (Backup)
- (Habr) Russian Lay Summary of 216 (Backup)
- (GitLab) The full SICP solution in the form of an interactive (literate programming) notebook
- (Habr) Conference announcement in Russian (Backup)
- (GitLab) The interactive notebook (org-mode) version of the ICPF 2020 paper (TODO: Technical report) (Conference Paper Profile) (TODO: arXiv)
- (GitLab) The interactive notebook (org-mode) ICFP 2020 presentation (PDF)
- TODO: (YouTube) ICFP Presentation Video (TODO:Backup)
This page will describe the project that I undertook in 2019-2020, with the goal of modernising computer science education. Its purpose is to collect in one place links to all artefacts that were produced during the project execution, with commentary.
The object of study was one of the most famous programming problem textbooks, the "Structure and Interpretation of Computer Programs", Second Edition, by Abelson, Sussman and Sussman. At the moment of writing of this document, 24 years have passed since the release of SICP, and many things may change in computing in such a time frame. Hence, apart from looking at the book itself, it was interesting how much effort would be additionally required in order to replicate the experience of the era when the book was still fresh.
This documents tells the story of this endeavour. Initially, there was no plan for making any kind of comprehensive post-mortem of the project. However, the project turned out so long, so labour-intensive, and eventually, so fruitful, that making a summary has arisen to be necessary, even if for myself and my readers only, and only to list artefacts.
In short, I have solved all of the SICP's problem set in a consistent and reproducible fashion, using modern software, filling the gaps in supporting software and libraries, and documenting as much of my work as possible, in particular how much time every problem required, and how much external help was requested.
This document is under development.
3 TODO The Story
3.1 Time Management Video Tutorial
In order to find time, as a working person, I needed a more systematic approach to time management. Since I had already chosen org-mode as the solution medium, using org's time-management facilities was an obvious choice.
Following the general principle that learning something is the easiest when you are teaching it, I organised a seminar/lecture. This lecture was well-received by the audience, because it was given during the time of the corona-virus pandemic of 2020, so quite a lot of people found themselves locked in their home, and in the need to structure their time more efficiently.
There is no presentation file, because it was a hands-on tutorial given right into the time management software.
- YouTube Link (Russian)
3.2 SICP Solution
In short, I have solved all of the problem set, measuring how much time every problem required. Furthermore, I had to write and publish several libraries, in order for the solution to be runnable on modern Schemes, and be as portable between them, as possible.
Eventually, there were two artefacts produced from the solution of SICP:
- The full solution in the form of an interactive (literate programming) notebook.
- The printable pdf version
The org-version is strongly preferred to the pdf version, because the pdf version requires certain uncanny tricks to get built, has no added value and is 5000 pages long.
To use the org-mode one, you need chibi-scheme of a sufficiently recent version, ImageMagick, as well as GNU Fortran for the last two exercises. Emacs is also strongly recommended.
During the solution process, one of the exercises requires writing a Scheme interpreter in "a low level language of your choice". In my case this choice happened to be Fortran, partly due to a relatively greater popularity of Fortran in 1996, partly due to relatively straightforward memory management. It is a toy implementation, not recommended for any serious applications. It's likely leaking memory and compares symbols in \(O(n)\).
3.2.3 SRFI 203: A Simple Drawing Language in the Style of SICP
Scheme Requests for Implementation is the Scheme's equivalent of XEPs or PEPs or JCPs. In order to make possible working with graphics in Scheme, I had to implement several interfaces assumed to be "given" in SICP. The graphics sub-library found its place as SRFI-203:
- Scheme Request for Implementation 203: A Simple Drawing Language in the Style of SICP (You need ImageMagick to use the sample implementation, and Emacs for it to be actually useful.) ((GitHub) Backup)
- Lay summary blog post. (Backup)
- Russian Translation of the Lay summary.
3.2.4 SRFI 216: SICP Prerequisites (Portable)
I also had to write a support library that packages the functions that are already available on modern schemes. (Unlike SRFI-203, which implemented an unportable subset.)
There review process has been started on 2020-11-15. There is also a Lay Summary in English, and in Russian.
3.3 TODO ICFP Paper
Since this took so long and made me think that much, I decided to analyse the solution process and to document it for future reference. The result of this analysis ended up being substantive enough for a whole paper, and was later presented at ICFP 2020, Scheme Track.
The papers were "published online", which means that ACM is going to maintain the website with a lay summary for a while, and hope that the papers will be mirrored by the major publishers… I guess.
In any case, below you can find the:
- Conference Paper Profile
- TODO: arXiv pdf link (The Organisational Committee still ( ) hasn't published it.)
- TODO: Full Technical Report of the University of Michigan
- The interactive notebook (org-mode) version of the above.
- Conference announcement in Russian.
3.4 TODO ICFP Presentation
Every "scientific" paper nowadays needs a supplementary paper to explain what it is actually about. This report is not an exception.
- The pdf version of the presentation (513k). With GitLab preview. (Org source)
- The video of the presentation: TODO, the ACM still ( ) hasn't released the videos.