Live data from Hacker News

Why Did M.I.T. Switch from Scheme to Python?

danweinreb.org

1–10 of 66 posts

Re: Why Did M.I.T. Switch from Scheme to Python?

#2
This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down?

The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, but it seems to be popular, because it greatly reduces distractions when understanding and writing actual programs. In any case, the ground-up approach generally teaches first a system of rules, and only once the rules are understood does it move on to programs.

The top-down approach, on the other hand, starts with programs. Often the students are given a partially written program and are asked to improve it. The curriculum doesn't focus on rules because they all have exceptions. It's much more like engineering and less like mathematics. As the article says, nowadays "a real engineer is given a big software library, with a 300-page manual that’s full of errors. He’s also given a robot, whose exact behavior is extremely hard to characterize...."

What's better? Some schools (such as my alma mater, Brown) have two intro classes, one for each method of teaching. I chose the rules-based bottom-up approach when I was an undergrad, and it was very good, and I was convinced it was the better way to go.

But I'm losing my conviction, partially because MIT is changing it and they must know what they're doing (heh), and partially because I'm coming to the understanding that everybody uses libraries and this is not going to change. The top-down approach doesn't really provide any sense that there should be libraries, that code should be organized, that you can write to an interface and document your code. People can learn these sorts of things later, though.

Re: Why Did M.I.T. Switch from Scheme to Python?

#3
The title is a bit misleading. The gist of TFA is that MIT is switching from Scheme to Python in its INTRODUCTION TO PROGRAMMING course. That would seem to me to be a bit of a no brainer. I find python to be a much more acceptable alternative than BASIC in introducing people new to coder in a way that is more in line with sound computer engineering practices.

Re: Why Did M.I.T. Switch from Scheme to Python?

#4
post #2

This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down? The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, b…

Did you mean "The bottom-up approach doesn't really provide any sense that there should be libraries, ..."?

Re: Why Did M.I.T. Switch from Scheme to Python?

#5

The title is a bit misleading. The gist of TFA is that MIT is switching from Scheme to Python in its INTRODUCTION TO PROGRAMMING course. That would seem to me to be a bit of a no brainer. I find python to be a much more acceptable alternative than BASIC in introducing people new to coder in a way that is more in line with sound computer engineering practices.

I'm not sure I understand you. You like the switch from Scheme to Python because Python is better than BASIC?

Re: Why Did M.I.T. Switch from Scheme to Python?

#6
I find this justification downright weird. Yes, a class like 6.001 is an extremely purified and unrealistic view of modern software engineering. But the same could be said of any theoretical subject. The people at the Large Hadron Collider are probably spending a lot more time reading 300-page technical manuals than they are reading Feynman.

A lot of the charm of academia, to me, is that it gives you some breathing room to step back from the mess, and look for unifying principles. There might be a bit of a shock when the student first graduates, but in the long term they're often better off with the kind of knowledge that they couldn't easily pick up through osmosis.

Re: Why Did M.I.T. Switch from Scheme to Python?

#7
post #2

This issue is a fundamental one that everybody teaching programming or computer science must answer. Is it better to teach CS from the ground up or top down? The ground up approach is something like SICP, with fundamentals in lambda calculus or Turing machines. Students learn rules such as how a Lisp evaluates an expression and write programs which apply the rules. It's not necessary that this be taught using Lisp, b…

I've never heard this characterized so well. There was a that I had always been trying to put my finger on when I'd read these sorts of articles and the top-down/bottom-up description is right on the mark.

My own feeling is something like this. Before Newton there was Kepler. Now Kepler was no dummy and he used the exacting measurements of Tycho Brahe to arrive at a very accurate model of planetary motion. He found that planets traveled in ellipses not circles, and he knew that they swept out equal areas in equal times (among other things). In short, he had a very firm "top-down" grasp on what planets did.

Then along came Newton, a "bottom-up" thinker if there ever was one (calculus was invented in what was perhaps the most supreme feat of yak shaving ever http://catb.org/jargon/html/Y/yak-shaving.html ). He found that there was an underlying and unifying idea, gravity, that explained why the planets behave as they do.

So to cap off my analogy, I've found that if I've worked in a sufficiently bottom-up way on something then sometimes what seems complex or intricate collapses down into some small and elegant solution that I wouldn't have seen if I were coming from the other direction (or at least it would be much more difficult).

Re: Why Did M.I.T. Switch from Scheme to Python?

#8

The title is a bit misleading. The gist of TFA is that MIT is switching from Scheme to Python in its INTRODUCTION TO PROGRAMMING course. That would seem to me to be a bit of a no brainer. I find python to be a much more acceptable alternative than BASIC in introducing people new to coder in a way that is more in line with sound computer engineering practices.

Why is this guy being voted down for a decently formed comment?

Re: Why Did M.I.T. Switch from Scheme to Python?

#9

I find this justification downright weird. Yes, a class like 6.001 is an extremely purified and unrealistic view of modern software engineering. But the same could be said of any theoretical subject. The people at the Large Hadron Collider are probably spending a lot more time reading 300-page technical manuals than they are reading Feynman. A lot of the charm of academia, to me, is that it gives you some breathing r…

From what I've been reading about this issue, I think many people are missing one important point: 6.001 was an introductory course, the contents of which would be rehashed and expanded in several later courses. That the contents of this course has changed does not mean that MIT students do not learn about these concepts anymore.

Re: Why Did M.I.T. Switch from Scheme to Python?

#10
post #8

The title is a bit misleading. The gist of TFA is that MIT is switching from Scheme to Python in its INTRODUCTION TO PROGRAMMING course. That would seem to me to be a bit of a no brainer. I find python to be a much more acceptable alternative than BASIC in introducing people new to coder in a way that is more in line with sound computer engineering practices.

Why is this guy being voted down for a decently formed comment?

Perhaps because people are dumbfounded by him introducing BASIC into the disctussion for no obvious reason whatsoever.
Post reply on HN