My first CS class in college was in Scheme. I had essentially the same experience as t Scheme made it far easier to learn than any other languages I had used then (like Java and Python). We learned everything we needed to know about the language itself in a single week--three lectures--and then spent the rest of the semester learning brilliant concepts.
This course has recently been replaced with a parody: the same text (SICP) but in Python. Of course, since Python lacks Scheme's simplicity and elegance, far more time is spent on the language itself rather than on important concepts.
Also, a bunch of things that are not too magical in Scheme, like mutation and object-oriented programming, are naked right into Python. One of my most important realizations from this class was that things like mutation and OOP are not just posts of the language and are not omnipresent. Coming from Jeans, this was quite the insight!
Another important thing I picked up from the course was an appreciation for functional programming. Python's design and philosophy are rather hostile to any nontrivial functional programming--it's not Pythonic!--which is very unfortunate for the new students' development.
In short, I think Scheme is a great introductory language and I am very sad to see it replaced with Python.
Wow, autocorrect (well, Swype, anyhow) really made a mess of my post :P. I only realized this reading it now, after the edit window has passed. I guess that's what I get for writing a post from my phone and not proof-reading it.
So if any phrase doesn't make sense (like "Coming from Jeans..."), it's probably due to Swype. In this case, I had meant to write "Coming from Java...". There are a bunch of odd words like this in the post.
Oh, I imagine that makes the post difficult to read. Or maybe it just makes me look crazy :/.
A couple of other ones: "naked right into Python" is actually "baked right into Python" and "not just posts of the language" should have been "not just parts of the language".
The natural problem with Swype is that essentially all of your typos come out as perfectly spelled words. You always get a correct word from the dictionary, it just might not be the word you wanted. I really love using it, but I have to remind myself to double check anything I write with it.
Haha, I got most of your typos, but the 'Coming from Jeans' one made me assume that was just some other old, defunct language you must have learned before college, and that I had just never heard of.
The diagnosis of CS education seems correct, at least. My high-school AP CS course, in C++, seemed primarily dedicated to teaching and then testing an arbitrary grab-bag of C++ syntax and STL features. There is no way that class would have gotten me interested in programming if I weren't already. What did get me into programming was writing scripts in mIRC's idiosyncratic custom scripting language, on my own time.
But I think it's more than the language choice that's the problem. You can make a course into arbitrary memorization in just about any language, though some languages may make it particularly easy. In one nice turn of phrase, Seymour Papert quoted a student contrasting two uses of Logo: "In the summer, we learned to program. At school, they are teaching us to write a program." [1]
This course has recently been replaced with a parody: the same text (SICP) but in Python. Of course, since Python lacks Scheme's simplicity and elegance, far more time is spent on the language itself rather than on important concepts.
Also, a bunch of things that are not too magical in Scheme, like mutation and object-oriented programming, are naked right into Python. One of my most important realizations from this class was that things like mutation and OOP are not just posts of the language and are not omnipresent. Coming from Jeans, this was quite the insight!
Another important thing I picked up from the course was an appreciation for functional programming. Python's design and philosophy are rather hostile to any nontrivial functional programming--it's not Pythonic!--which is very unfortunate for the new students' development.
In short, I think Scheme is a great introductory language and I am very sad to see it replaced with Python.