Live data from Hacker News

Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

cemerick.com

61–70 of 141 posts

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#61
post #25
post #19

Earlier quoted context omitted.

Same here. When I learned programming at UC Berkeley in the 90s, Scheme was the intro language. It was perfect precisely because it was so far from being the kind of language you'd use to engineer large projects. The first day, the professor spent less than half of the period introducing the entire syntax of the language...it's so damn simple. Beyond that, all learning was abstraction, problem solving and CS concepts…

We also live in an era where it's basically impossible that kids getting into MIT's CS program haven't been exposed to programming before. I think it's a romantic idea, but the fact is college isn't where you learn to program, it's where you learn the time complexity of btrees.

> it's where you learn the time complexity of btrees.

I’m having flashbacks... Thanks for that ;)

Time complexity was my worst CS topic. At least, for implementing the most efficient system. I’m not an algorithms guy.

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#62

I love Python for a lot of things but I’ve come to realize how complex it can really be. I regularly see others write Python code that I have to fix to add robustness. I also run "pylint" or equivalent tools before committing major changes to scripts because it is quite easy to make mistakes that won’t otherwise be found right away. Some of my least favorite pitfalls: - If you call a function that happens to refer to…

> If you call a function that happens to refer to a variable that only exists in the calling code, it will work

Could you give an example of what you mean by this?

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#63
post #20

I couldn't be more thankful that python was one of my first languages, and this is something that I've passed on to everybody I've ever mentored. Python is a real language that does real things, but it's also completely approachable to a newbie. If programming seems hard, then you have a bad teacher that is probably just trying to evangelize their hobby to you. And god help anybody that tries to start with JavaScript…

I had not coded in a long time. Not written any type of helloworld.c in years (more than a decade) I've recently updated and wedged in a programming ENV: on the machine I spent most time on these days. I say wedged because IMHO programming env's are the easiest to setup and maintain in POSIX OS's. This closed source OS I'm most in (because I stream simulations & games on this DAW) is not really suited for it. One of…

php -S 127.0.0.1:8088 is a good one as well, it helps with debugging PHP quickly (I still am in the boat as PHP being a better lang for handing web stuff)

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#65
post #48
post #38

Earlier quoted context omitted.

Assembler is arguably a better intro language than most. It makes it explicitly clear what each step of the programming does and how it executes. Once students have done a few projects the they'll be ready to appreciate a higher level language like C. Throwing objects and lambdas and type inference at kids without giving them any grounding in what a computer actually is and does is unfair, and leaves them building ca…

I can't tell if this was meant to be serious of facetious, but I took this route. I learned 8088 assembly to make an ancient robot platform move, and then learned C a few months later. Assembly had a few weird architecturey things that you had to understand before things made any sense (e.g. registers, segment:offset addressing, stack pointers, calling conventions), but beyond that, all of the tasks were simple and s…

Serious. I'm not saying you should stick with assembler for any great length of time, but understanding what instructions and registers and memory are is pretty important later on. In university I had fellow students who struggled with pointers because even at the end of first year they didn't really understand what memory was or how it worked.

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#66
post #17

10 years ago; I'd really like to hear a post-mortem of this decision. For context, MIT's previous EECS curriculum began with 4 required courses for all EE and CS majors. This meant that EEs had to suffer through Scheme, and CS'ers had to suffer through circuits. I'm sure everyone has their own opinion on whether this is a good thing or a bad thing. Regardless, the EECS department switched to a new 7(?) "core" class f…

I hire people coming from this program. I can no longer rely on students understanding control systems, having read Leveson's therac paper, having worked with a notebook-style REPL (I.e., something stressful to model exactly in your head, promoting confusion, leading to notes and comments and structure.)

The near-total demise of Athena matters here too. I can and do hire people with all those skills! It’s still very possible to get them at MIT. It’s just not nearly the default, and since it’s way up in electives I’m at least as likely to find the best people carrying a degree that says 21W as VI-3.

I don’t envy the VI admins. They have a problem akin to that of a suddenly virally successful startup. 400 people a year come in; about that many better succeed.

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#67
One of the best electives I took in my CSE program was Art in Code. We covered Processing and Arduino and the only required textbook was Making Things Talk. https://www.amazon.com/Making-Things-Talk-Practical-Connecti...

These tools were designed to be accessible to non-programmers and had our entire cross-disciplinary class making games, interacting with hardware, and getting inspired to find new ways to interact with computers. I wish this class had been required by every first-year CSE student.

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#68
post #54

Bullshit translator: mean intelligence of newcomers becomes so low that we have to lower our programs or only veeeeery few can attend them. And we need more students so more money. Disagree? Say thanks to all school reforms in the past 30-40-50 years. A bit of extras: in today world we can't produce really anything new due to managerial-driven society and beside that it's better people do NOT really understand how th…

> mean intelligence of newcomers becomes so low that we have to lower our programs or only veeeeery few can attend them. And we need more students so more money. Disagree? Say thanks to all school reforms in the past 30-40-50 years. uh, you know this is about MIT right? A school that has seen its acceptance rate dwindle to nearly 7%?

Yep, and I also see few of their on-line filmed lectures and form my present opinion...

I'm European so I came from a really different (older/less reformed) school system and I'm old enough to see how it's change. I also casually interact with USA people and my conclusion is simple: having really poor schools "because there is college after" it can't really work. I see in EU, reform after reform, how unprepared become high-school students and how hard, if not impossible, universities try to "recover" them changing their programs. In the USA this phenomenon it's extreme so even with a super-low acceptance rate results have to be also extreme.

You simply can't get smart but ignorant people and in few years transform them in high-skilled and acculturated guys. Being smart help of course, but learn require time. The better you start, early, the better you'll end up after.

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#69

Earlier quoted context omitted.

> There will be so many students that will struggle to learn python-specific topics that are irrelevant to learning the act of coding Correct me if I'm wrong - I just went to an unrespected state school - but I would think that the MIT admissions filter selects for students who wouldn't particularly struggle with something as small as language idiosyncracies, especially in an introductory course.

No, you're right. I'd go so far as to say even people at my unrespected state school wouldn't struggle with things like that.

Hm, perhaps your state school is "less unrespected" than mine, but my CS program had a very real funnel from "couldn't hack it in Programming 1" to "couldn't hack it in Calculus 2" to "couldn't hack it in Data Structures and Algorithms" to "couldn't hack it in one particular professor's mandatory upper-level courses" to "tripped on their gown."

I digressed a little. Point being: while I'm unsurprised that some % of people from a broader range of abilities couldn't get functions or iteration or inheritance or whathaveyou to stick, I'd be very surprised if ANY % of the culled-by-18 right end of the Bell curve couldn't grok both fundamental concepts and any relevant part of the standard documentation (on which we appear to be in agreement.)

Re: Why MIT uses Python instead of Scheme for its undergraduate CS program (2009)

#70
post #51
post #38

Earlier quoted context omitted.

Assembler is arguably a better intro language than most. It makes it explicitly clear what each step of the programming does and how it executes. Once students have done a few projects the they'll be ready to appreciate a higher level language like C. Throwing objects and lambdas and type inference at kids without giving them any grounding in what a computer actually is and does is unfair, and leaves them building ca…

By that logic, you'd have to start with vhdl. Which is a great place to start if you want to grok what a CPU actually is, what pipelining means, and how to write truly parallel code. Except that most people never need to know. That's progress: you can build most useful applications without ever having to learn that there is a distinction between virtual and physical memory.

MIT does have a required course 6.004 that starts you off computing doped semiconducter behavior, building circuits using a simple HDL (JSim when I did it, seems to be something else now). You build combinatorial logic, sequential logic, an ALU, your own CPU implementing a RISC machine code spec, making sure your circuit-simulated CPU can run basic machine code programs, optimizing the machine code programs running on your home-grown CPU.

In the end you're spending all day/week/month optimizing your CPU by stripping out gates, pipelining, all at a circuit/gate/HDL level, with your final project score computed numerically from how fast your optimized machine code program is running on your optimized home-grown CPU.

Probably one of the best classes I took when I was there. Doesn't really matter whether or not it was the first class or not I don't think.

Post reply on HN