5 ms·
Composing Programs in Python, SICP Style
- sumukh1 8y agoThis is the textbook used for the introductory CS course (CS61A) at UC Berkeley. The course material is available at http://cs61a.org/fa18 http://cs61a.org/fa18 (The course uses Python 3, Scheme, and SQL). There are some neat projects (students build a Scheme interpreter and implement game logic as part of the projects) Previous Hacker News Discussions (from which I’ve copied my comment) https://news.ycombinator.com/item?id=11465234 https://news.ycombinator.com/item?id=11465234 https://news.ycombinator.com/item?id=3491142 https://news.ycombinator.com/item?id=3491142 https://news.ycombinator.com/item?id=3141996 https://news.ycombinator.com/item?id=3141996
- deleted 8y ago[deleted]
- LukeB42 8y agoVery nice formatting for the content but it feels like it's missing three chapters on category theory and two chapters each on the AST module and the `compile` builtin after that last chapter on recursion.
- aerioux 8y agoperhaps occluded since this is focused on introductory computer science students?
- LukeB42 8y agoIt already has a chapter on MapReduce, which is making a few assumptions about where the student is going, whereas teaching category theory is appropriate for where the student is.
- deleted 8y ago[deleted]
- simonh 8y agoWhich parts of the course would you drop or abreviate, in order to make time for these?
- LukeB42 8y agoVery tough question. Personally I'd lengthen the course with a Section "1.5" on the raw math topics being dealt with (Set Theory and Category Theory) plus ones the student will certainly bump into if they ever find themselves having to deploy MapReduce in production...
- simplegeek 8y agoGreat effort. I cannot find exercises? Do authors plan on adding those?
- divs1210 8y agoPeople who find this interesting might find this answer of mine on stackoverflow interesting as well: https://stackoverflow.com/a/44729275/1163490 https://stackoverflow.com/a/44729275/1163490
- zelphirkalt 8y agoHuh, I already thought this was suspicious reading the title, as Python does not have in-built TCO and indeed, https://composingprograms.com/pages/17-recursive-functions.html https://composingprograms.com/pages/17-recursive-functions.h... does not even mention Stackoverflow errors and neither does it introduce a decorator to avoid them. Under these conditions however, it is impossible to compose programs "SICP Style".
- lmz 8y agoNone of the examples there in that section are tail recursive anyway. It has one example of a while loop for iteration.
- argv_empty 8y agoMakes "SICP Style" seem like overselling it a bit.
- abecedarius 8y agoWhen I worked through SICP in the 80s it was with XLisp on MS-DOS. XLisp didn't optimize tail recursion, and I had well under a megabyte, but this turned out to be a problem only once or twice, and ad-hoc hacks were enough then. (OTOH the system didn't have an only 1000-deep call-stack limit by default, either.) It's true that this'd be more of a problem for real-world work.
- e12e 8y agoThey introduce both a traditional factorial function and a naive Fibonacci function - it seems likely most enterprising students will overflow the stack. Odd that they don't (from a quick skim) seem to mention it at all? When they do hand wave a bit around stack frames (call trees)?
- abecedarius 8y agoA naive fib(n) only needs stack depth of about n -- it takes a long time but doesn't need to go very deep.