This class was the most mind expanding class I've ever taken. I have read SICP three times since the early 90's and use it as a reference to this day (who else was re-reading the SICP streams chapter when Java 8 was recently announced? /raise).
Anyway, I'm way off track here, but whatever. Having watched only the first 12 minutes of this video ... if Dr. Gini had this influence on me and now seeing this ... it's a huge step up! Listening/seeing Hal Abelson talk about programming and referencing the Egyptians ... I was just shaking my head, he's right to cross off computer science, it's not about that, it's bigger.
I can't wait to watch the rest. And I'm going to make my team watch this. As much as I loved SICP as taught by Dr. Gini, this is way beyond her abilities as much as it pains me to say that.
Always amazes me how slowly computer science moves, despite how fast technology is moving
SICP is still the best introduction to computer science. The problem is the reliance on scheme/lisp languages to explain stuffs. it could be taught in almost anything that supports basic FP,it's even taught in JS !
The fact that Scheme uses Lisp is what makes SICP work at all. The course would be difficult or impossible to complete using most other languages. The keyword is: homoiconicity, the "code=data" property of Lisp.
Most of the course focuses on writing interpreters and compilers for Lisp and making variations on it (lazy evaluation, non-deterministic). This would be very painful if a non-homoiconic language is used.
But if that is the case, wouldn't SICP be less language agnostic since (most of) the concepts taught cannot be universally applied to non-homoiconic languages?
Tools and environment were another matter, getting MIT Scheme installed and running was a bit of a pain. Next time I'll probably try with Racket and Neil van Dyke's SICP support package :
From the looks of it support for the 'Picture Language' is supported, looks like fun. :-)
There's something reassuring about these vids, possibly the timelessness of what they attempt to convey. The enthusiasm, Sussman's especially for me, shines through well. They were filmed at HP in the 1980s, there's some great examples of 80s fashion going on there at points :-)
I followed along with the video lecture in Racket using van Dyke's SICP package, and it went just fine. For all practical purposes I don't know scheme.
It was nice trying to run the sqrt procedure that I had built up, be told that the 'average' procedure was not defined, quickly define it and successfully run sqrt. Such a simple thing, but ... it just worked.
Interesting seeing fractional results displayed as actual fractions.
I think it's very helpful, having programmed for >25 years, that I knew where the lecture was heading. Nevertheless, it was a wow experience. I wish I'd been exposed to this in my early years.
SICP uses 'wave' and 'rogers'. The package for racket includes only 'einstein'. FYI.
Lisp resistence is a phobia, a problem of the afflicted person, not the wider computing community as a whole.
Compared to the math, Lisp was a non-issue. I didn't even notice I was learning it. But I'm a "practical" coder lacking formal training, not a science student learning to code.
Also, a trick I like to do with the exercises is struggle with one for 20 minutes or so, and if I am not making progress, look up the answer. Usually that helps me understand what I was missing enough to then do it myself. That happens maybe 1/5th of the time, and usually because the question was vague or oddly worded, or most commonly, I didn't know how to test that it was correct.
They have a lot of data, we have ... opinions. And the data was saying that students were having trouble learning to do practical engineering problems after this course. So, 2 hours or not (and I say not), the reality is that really bright students had trouble with it, and their professors and designer of the course, co-inventor of the language, and author of SICP thought Python a better choice than Scheme for this course.
Empiricism trumps all.
Yeah right, first you dont know me you are assuming I dont know LISP while i have GCL opened on my computer right now. Second, your kind is the problem, computer science has nothing to do with being able to learn LISP in 2 hours or not.that's good if you did. You must be the smartest computer science guy in the world.
I dont know you, but your message makes me say you are arrogant and bigheaded and i'm not interested in people like you. I'm interested in making knowledge accessible, even for those who "cant learn lisp is 2 hours therefor they have no business dabbling in computing".
You may be smart but i pity your coworkers that need to endure your arrogance.
I did not come here for a fight just to suggest an alternative version of SICP.
I just dont like trolls and I responded appropriately.
My position is that if you're involved in computing in any capacity, you will have to learn countless formalisms and languages. And S-expressions are on the more accessible end of the spectrum.
If you and I learned it, so can others. Exclusively seeking out C-like syntaxes will only hinder you, professionally.
P.S. SICP introduces all the Lisp you will need as it goes. Really.
yes you are trolling,now go back to wherever you come from,because you're not contributing to any constructive discussion.
I'd rather it in something new to me (scheme) than be shoehorned into a language I know already. That way I can gain additional benefit of seeing similar concepts in a new form.
Trying to protect someone from having to learn a new language just doesn't make sense, like protecting people from regular exercise. Everyone should have the benefit of knowing multiple tools, and a language should be no exception.
If it was written using the flavour of the month language then, it would have disappeared into obscurity by now.
Towards the end, when they start building the machine simulator lisp, you get a very natural transition to machine-level thinking -- they build up to it with simple constructs, just like everything else in lisp, and I think that's beautiful. You can clearly see how you could wire up some buffers and wire up an ALU, and wire up some circuits and end up with a completely generic calculating computer.
The bottom-up approach a lot of classes take is somewhat more burdensome to pull together and hold in your head
It's nice that the video moves at a comfortable pace and doesn't get stuck explaining some details which most of the audience finds dead obvious.
Schools like MIT tend to assume that students are sufficiently mathematically sophisticated and technically competent, and willing to work hard to keep up.
My problem now is that this really made me want to start coding my own Lisp.
Any advice ?
i think that the problem is that of nesting parenthesis; Multiple nestings of parenthesis assume that the information hidden in the inner levels of parenthesis nesting is somehow different/or hidden from the outer levels.
I think that a complicated system must combine multiple level of 'truths'; a fact that is definitely true on a lower level might end up as being of less significance on a higher level (or vice versa - the process of debugging turns designs on to its heads; some philosophers (see Hegel) call that 'dialectics').
Now people who are used to censorship have no problem with that ! A person who is supposed to hide his stuff - he is a person who must be afraid of external censorship; this person is used to social hierarchy; he knows that the lower level (his personal self) knows things that are different from what is regarded as public truth.
Now assume that society opened up (somehow) since the fifties; people who grow up during later timers are less accustomed to multiple levels of truths; therefore this hierarchy of parenthesis will be regarded as oppressive/disconcerting to subsequent generations.
There are other societies that had censorship, maybe to a lesser extent than North Korea; I guess that once upon a time people in the US did rely on the Tube for information (that was before the net) the tube is a centralized source of information, its editors were subject to some control; so I guess that censorship was quite real during that period.
You might listen to the following song for some more context:
"White Houses" Eric Burdon & The Animals
Plus it uses functional programming! What's not to like.
+ Southern hemisphere
I guess I expected a video archive, not unlike the SICP playlist as it exists on YouTube in various forms.
The audience in this video is professional programmers, so it isn't such a slow pace as most of the lectures in online courses, which were given to an undergrad audience.
Recently my memories of the first time I saw linear programming were triggered- those few pages in an algebra book were the last time for many many years that I felt "wow this is so cool" about math and I think part of my loss of interest during high school and pretty much entirely by college was that the subject was never revisited and instead there was a lot of looking stuff up in tables and not much with systems.
Anyway, I've been watching Gilbert Strang teach Linear Algebra on OCW. It makes me wish Abelson and Sussman could remake the SICP videos with another 25 years of in the classroom experience - Strang's presentation is masterful. And linear algebra after all these years is still awesome
It really strikes me how amazing the MIT professors are. In contrast, most of the Coursera courses have me tearing my hair out. Pet theories on how to structure a course, mumbling, stuttering, essentially reading power point slides - I am so glad school is a few decades behind me.
But in contrast, Strang, Sussman, et. al make the topic come alive. Despite having taught the same course over and over they can put themselves into the mindset of the student. Beyond that, they find the beauty in the topic, and are able to communicate it to inexperienced freshmen.
Anyway, the big difference I see is that MIT OCW films instructors in their natural habitat and all the Coursera videos are shot up close and personal and this makes some professors unusually self conscious. Others are willing to not worry about production values and let their warts and quirks come across - they will be informative but not particularly entertaining...e.g. Ullman or Sedgewick both of whose courses are really good if a student is interested in the topic.
Odersky himself is teaching Functional Programming in Scala later this month, and I'm looking forward to that.
This is our Principia.
Got Emacs "pimped"  enough to behave like Vim but Emacs enough to use Geiser and connect to Racket with Neil Van Dyke's SICP package. (Emacs prelude, Eviled, Solarized and installed packages: geiser, quack, sicp (M-x info-display-manual sicp)).
Gonna see how it goes this time round.
Anyway, while both ways are ok, they are not exactly equivalent - is what I wanted to say.
(Quick overview of most it's features here: https://www.youtube.com/watch?v=D6h5dFyyUX0)
We are running section 1.3 this month, so there is not much to catch up! Also, anyone who wants to work it their own pace is welcome too!
Paul hasn't put up the info for the 1.3 online session yet, join the Clojadelphia group to get updates when he does
Scratch and Quartz composer show code in a graphical way. Are there examples of languages that show the data path in a similarly graphical way?
I would love to see how variables relate to each other and other functions (the data path) separated from the order in which these operations actually happen (the controller). It would be an interesting way to debug. For example, variables that get assignment but are never read would be glaringly obvious.
For a quick primer: white connections represent the flow of execution, and have a variety of flow control nodes (Switch, Gate, DoOnce, etc) to direct execution around the graph. The other color coded lines represent the usual int/float/bool/string types, as well as some specialized things like rotators/translators/objects.
The debugging is fantastic, and sounds like something you might be interested in. You can set breakpoints on nodes and step through execution. Hovering the mouse over any variable will tell you what it's currently set to, or you can mark a value to be displayed next to its node in the graph. Take a look here for more: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/U...
You'd need a $20/month subscription to get UE, but you can cancel it immediately if you don't mind not getting updates.