4 ms·
Structure and Interpretation of Computer Programs Video Lectures (1986)
- dirteater_ 3mo agoI tried SICP straight from the book once, but I think the lectures are much better and the book acts as a supplemental reference.
- barrenko 3mo agoThank you! Will try it like this.
- easytiger 3mo agoThat is indeed how University learning used to work, for about 1000 years
- epolanski 3mo agoIt's *supposed* to work. In reality you get lectures from individuals that became professors because they are great at politics/research but not at teaching (very different skill). If you even get them and not their 25 year old assistants. And this is apparently super common even in ivy league universities as Youtube lessons have shown me over and over.
- aag 3mo agoSussman and Abelson are great at teaching.
- epolanski 3mo agoI'm sure they are, just against the generalization that in class is always strictly necessary as not everyone is Sussman.
- nobleach 3mo agoThis is why it's so awesome watching David Malan teach Harvard CS50 (free YouTube videos). His presence, knowledge and overall enthusiasm for the topic are outstanding. If more of my college courses had that level, I'd have been far more engaged. When I look back, I realize that I paid a TON of money to have some professors basically "phone it in", yet expect me to basically teach myself their subject of expertise. "Build a compiler". Yes, I can (and did) learn that from a book. I imagine if I had someone truly engaging the room during those sessions, I'd have come away with FAR more appreciation. That could have even led to a different career path.
- alpinisme 3mo ago> And this is apparently super common even in ivy league universities as Youtube lessons have shown me over and over. I think you have the “even” backwards. Elite research first universities have this problem more than teaching-first, low research output programs.
- dahart 3mo agoAll that, and it’s still better than just reading the book on your own. :P Be thankful when you get the 25 year old PhD students & post-docs. They care more about teaching and remember learning the material recently and are more willing to talk & help you.
- epolanski 3mo agoI've attended courses from some of the best researchers on the planet (like Graetzel at EPFL) and you did yourself a favor if you skipped the confused ramblings and just studied on the books. Plenty of courses taught by brilliant individuals that were just bad at teaching or borderline not prepared. Some courses (like biochemistry) were effectively useless as de facto you had to memorize 600 pages of Lehninger's book anyway. There's nothing to understand in the Krebs cycle. I also vividly remember exams like advanced algebra were the professor genuinely did nothing but rewrite canned content on a board and could not really shed light on anything, you were on your own.
- songbird23 3mo agoShould I do the JS or Scheme SICP
- submeta 3mo agoI‘d go with Scheme. You‘ll learn the basics in a day. The language spec is only a few pages. And Scheme reads like pseudo-code with parentheses.
- brudgers 3mo agoScheme. Javascript is a fine language, but it is not the right tool for this job.
- Nekorosu 3mo agoI have both books. Scheme for sure! Env setup can be a bit of an issue but it is doable. Regarding it, I remember having some weird issues with MIT Scheme on a modern computer, but Racket/DrRacket works well.
- spauldo 3mo agoI'll add another recommendation for Scheme. The concepts in SICP map very well into Scheme, whereas I can only imagine them being awkward and non-idiomatic in JS. There's lots of passing around first class functions and use of recursion. One of the two professors (Dr. Sussman) that give the lectures in this series is a co-creator of Scheme.
- Jtsummers 3mo ago> I can only imagine them being awkward and non-idiomatic in JS You don't have to imagine, you can look at the code used in the JS version and it goes through some fun contortions to get around the fact that JS is not expression oriented (like Scheme). This is from page 35 (PDF: https://sicp.sourceacademy.org/sicpjs.pdf https://sicp.sourceacademy.org/sicpjs.pdf): function count_change(amount) { return cc(amount, 5); } function cc(amount, kinds_of_coins) { return amount === 0 ? 1 : amount < 0 || kinds_of_coins === 0 ? 0 : cc(amount, kinds_of_coins - 1) + cc(amount - first_denomination(kinds_of_coins), kinds_of_coins); } function first_denomination(kinds_of_coins) { return kinds_of_coins === 1 ? 1 : kinds_of_coins === 2 ? 5 : kinds_of_coins === 3 ? 10 : kinds_of_coins === 4 ? 25 : kinds_of_coins === 5 ? 50 : 0; } That certainly works, but it's awkward. Here's the Scheme code from the 2nd edition of SICP: (define (count-change amount) (cc amount 5)) (define (cc amount kinds-of-coins) (cond ((= amount 0) 1) ((or (< amount 0) (= kinds-of-coins 0)) 0) (else (+ (cc amount (- kinds-of-coins 1)) (cc (- amount (first-denomination kinds-of-coins)) kinds-of-coins))))) (define (first-denomination kinds-of-coins) (cond ((= kinds-of-coins 1) 1) ((= kinds-of-coins 2) 5) ((= kinds-of-coins 3) 10) ((= kinds-of-coins 4) 25) ((= kinds-of-coins 5) 50))) The JS code has to use the ternary ?: to get around the fact that it does not have a good equivalent to `cond`. You can see that they've gone through a literal translation of Scheme to JS that results in very unidiomatic JS code.
- deleted 3mo ago[deleted]
- deleted 3mo ago[deleted]
- tangsoupgallery 3mo agoThese 1986 lectures are the definitive SICP experience — the Hal and Gerry show at its peak. The presentation quality holds up remarkably well, and seeing the metacircular evaluator built live is something no textbook can fully capture. For those who find the book dense, these lectures provide the pacing and intuition that make the abstractions click.
- ramchip 3mo agoLLM bot account
- neilv 3mo agoIf you want to work through SICP, you can use MIT Scheme, but another option is to use Racket or DrRacket, with this add-on package: https://docs.racket-lang.org/sicp-manual/ https://docs.racket-lang.org/sicp-manual/
- brudgers 3mo agoMIT Scheme is the simplest thing that might work.
- SilentM68 3mo agoAwesome! I was just about to ask just that question? Thank you, SM
- functionmouse 3mo agoI think we should only be recommending MIT Scheme. Everything else has got too much going on and can become distracting, for the purposes of education.
- lkuty 3mo agoI don't think it is necessary to avoid Racket since "The language #lang sicp provides you with a version of R5RS (the fifth revision of Scheme) changed slightly in order for programs in SICP to run as is." DrScheme is great for this and probably the easiest way to start.
- DonHopkins 3mo agoEverything you can do with Scheme you can also do with Snap! with a visual blocks programming user interface. Functional programming, recursion, higher order functions, closures, continuations, macros, metaprogramming, all described by Brian Harvey's curriculum, the Beauty and Joy of Computing: https://bjc.berkeley.edu/team/snap/ https://bjc.berkeley.edu/team/snap/ Snap!Con 2025 - Brian Harvey - ACM Karlstrom Award Address https://www.youtube.com/watch?v=pDK2PE_pkqQ https://www.youtube.com/watch?v=pDK2PE_pkqQ Brian calls SICP the actual best computer science course ever invented, which is quite a complement from the guy who wrote the second best computer science course ever invented. ;) He has a lot of interesting thoughs about AI in education.
- aligutierrez 3mo agointeresting approach to SICP.
- aag 3mo agoI don't understand this comment. They wrote SICP.
- bloppe 3mo agoCannot recommend these enough. Watch the first one and you'll be hooked
- mbrezu 3mo agoThese sound a little better than I remember. I wonder if the sound was cleaned up?
- Aejkatappaja 3mo agoI always recommend these lectures, awesome!
- boobsbr 3mo agoThe audio is so bad on these lectures. Is there any way to clean them up?
- j_m_b 3mo agoThis is how I learned lisp. I then went on to learn Clojure and built a career around it.
- davidpapermill 3mo agoFantastic. How did you learn Clojure? I'm a bit of a fan.
- xqb64 3mo agoWhat could someone interested in systems programming gain from this?
- convolvatron 3mo agothese talks distill out the core questions of topics like mutability and state management and abstraction. almost uniquely so. so I consider them deeply relevant to systems programming in as much that its primarily concerned with..state management and abstraction. unless you mean 'systems programming' as just 'the crap one does to try to glue together all the grotty pre-existing systems' and 'developing a good sense of taste about 3rd party libraries', in which case no, its not really very relevant. although even here there is insight, I watched a video of Sussman describing why they were putting down SICP and demanding that MIT develop new introductory courses. he was so graceful and considered, putting his polished jewels away. the time when we could reasonably be expected to see across and through all the layers of abstraction was over.
- convolvatron 3mo agoaddendum: actually I think the case for SICP in systems programming is stronger than that. There are several places in the material where the gap between 'high level programming' and 'construction of machines using gates' is thoroughly walked through and evaporated. maybe some of of the other similar treatments for logic programming and continuous analysis won't strike as deep, but that part should really be required reading.
- selimthegrim 3mo agoAll of the lectures? I did SICP as a freshman in 2005 but not all of it and have never watched these lectures save for the one where Abelson wears a fez and jokes about Kabbalah at the beginning.
- convolvatron 3mo agosorry, I meant for a systems programmer the parts where there is a kind of dual correspondence developed between statements in a language and transistors on a board I think would probably open some mental doors for a systems programmer. but I haven't gone through the video lectures or even all of SICP. but those that I did have had a lasting impact. particularly the erasure of the declarative/procedural dichotomy..thats been a very useful tool
- sanmarzano 3mo agoEvery programmer should learn LISP. or at least give an earnest attempt to study it. The vast majority of applied programmers only know how to think like C programmers (procedural). LISP is a “beautiful” language in that it is about concepts, not hardware. Totally changed my brain when I worked on a graduate project for a few years at my Alma mater in 1990.
- ozten 3mo agoI worked through these videos and the full book. Via news groups I organized an in-person study group. What a blast and a big unlock for me. The study group started having attrition about halfway through the book.
- xenadu02 3mo agoYou don't have to do the exercises or follow along with the book. No matter if you are new to the field or have decades of experience: almost everyone would benefit from watching these videos if they haven't already (or done an SICP course).
- midtake 3mo agoReading SICP was some of the best advice I got from /g/