4 ms·
I finished it up a few months ago and I cannot recommend it enough. The real soul of SICP is in it's exercises however. It asks you to build on your own prior
by ZephyrP 10y ago
I finished it up a few months ago and I cannot recommend it enough.
The real soul of SICP is in it's exercises however. It asks you to build on your own prior work in inventive ways, challenging you to solve the exercises correctly, but also to do so in a maintainable way.
I wrote up some supplementary material to make the experience smoother for a practicing programmer: High-level requirements of the chapter subprojects, Pitfalls and paradigms embedded in some of the footnotes, Answers to (nearly) all exercises, a testing framework for Chapter 4 interpreter (including the JIT compiler), a GUI for running Chapter 5 virtual machine here: https://github.com/zv/SICP-guile https://github.com/zv/SICP-guile
- apenney 10y agoThe one thing I really wish I had was a comprehensive test suite for all the exercises. They are (obviously) hard to solve and there's no other way to see if you were right but to check the solution. It's a huge flaw in most CS books, feedback without hand feeding you the answers.
- inimino 10y agoI disagree with this pretty strongly, actually. The best skill you can get from SICP-level exercises is looking at the code and being completely confident that you understand it and that it is correct. The best way to use them is to write the code without running it, and once you are sure, review it with someone else to find out if you were right. This breaks down a bit around chapters four and five where you are plugging in parts of a larger code base, and the accidental complexity starts to dominate.
- DennisP 10y agoReviewing with someone else can be a challenge for self-study; that's the step a test suite would replace. Of course someone could use the test suite to just make changes semi-randomly until it works, but there's no reason it has to be used that way.
- inimino 10y agoSelf-study students can find someone online to study together. I like the amount of projects SICP inspires. That's one of the best things about it. I wouldn't want to discourage writing a test suite, but I wouldn't suggest studying it by using one. SICP questions are designed to have elegant solutions, which may be missed, this is one reason why a study group is better than a test suite.
- hackermailman 10y agoThere are some unit test libraries for SICP around http://web.mit.edu/~axch/www/test_manager.html http://web.mit.edu/~axch/www/test_manager.html There's also the MIT online tutor for exercises http://icampustutor.csail.mit.edu/6.001-public/ http://icampustutor.csail.mit.edu/6.001-public/