Live data from Hacker News

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

cemerick.com

81–90 of 141 posts

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

#81
The article mentions Prof. Sussman in "the great macro debate".

This reminded me of a phrasing I once read, but never quite understood, in the "acknowledgement" section of the R4RS Macro appendix:

"Hal Abelson contributed by holding this report hostage to the appendix on macros".

Can anybody who was/is closer to the subject matters explain what this entails?

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

#82

Earlier quoted context omitted.

I learned Python as my first TRUE(explain later) language and I will be forever grateful for it. Now I am a polyglot, jumping through multiple languages all the time, be it Python/Java/Javascript, or occasionally flirtation with some languages that are foreign to my daily routine but necessary to get my job done. I am not quite on board with you claim that Python is chosen for monetary benefits. To be a qualified pro…

Compared to C, Python is the better choice. However, it seems like you haven't learned a Lisp dialect. I would love to know if you would still prefer Python once you know Scheme.

Regarding C, my first language was C and I've always been thankful for that. It helped me understand low-level programming, memory management, pointers, registers, etc. It also helped me better understand how my computer's hardware works. Having C as my first language also gave me a greater appreciation for languages that handle all that complexity for me.

Regarding Python vs. Scheme, I like both languages. I tend to prefer Python for certain types of programming, like NLP, machine learning, and math, just because the available libraries are so good. Having said that, I feel that the functional paradigm is superior to procedural programming and definitely (for me anyway) better than OOP, so for everything else I'd choose Scheme or some other functional language, like Elixir, Elm, Haskell, or Erlang, depending on my mood and what I'm doing.

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

#83

I contend that within reason, it really doesn't matter exactly which language happens to be one's very first programming language. Programming is ideally motivated by passion, and in that case, a person is certainly not going to give up and change career just because their intro language was a bit inconsistent or rocky. Anyone who gives up programming before at least being fluent in three languages, is giving up prem…

I'm sorry, but this is wrong. Most people aren't born with a passion for anything. Optimizing for people who are "passionate" excludes a vast set of people who have never been exposed to computer science or programming, but could become interested if taught in an approachable manner.

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

#84

Can someone from MIT confirm that only Python is taught in the MIT intro to cs class? We also teach SICP as the intro to cs class at Berkeley (cs61a.org), and we start with Python, but then change to scheme by the latter half of the semester.

AFAIK the switch to Scheme is not complete, no? You're still writing Python for the most part.

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

#85
post #2

> However, he did say that starting off with python makes an undergraduate’s initial experiences maximally productive in the current environment. I read this as "the parents paying tuition wanted their kids to learn practical skills so they can make money". I learned Scheme as a first language and I will be forever grateful for it.

I learned Python as my first TRUE(explain later) language and I will be forever grateful for it. Now I am a polyglot, jumping through multiple languages all the time, be it Python/Java/Javascript, or occasionally flirtation with some languages that are foreign to my daily routine but necessary to get my job done. I am not quite on board with you claim that Python is chosen for monetary benefits. To be a qualified pro…

Congratulations on being a polyglot! In my opinion, all programmers should be polyglots, since some languages are better than others at various tasks. A programmer who only knows one language seems a lot like a carpenter who is only skilled with measuring tapes to me.

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

#86
post #79
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…

>Bullshit translator: mean intelligence of newcomers becomes so low that we have to lower our programs or only veeeeery few can attend them. In this case, I think the areas in which programming and CS are applicable has increased so greatly it's now more feasible to have them start from a more general abstracted area and chose their focus as they grow - learning the tools and theory they need for their chosen focus.…

Hem, Python is more complex than Scheme... And even if it sound far easier to start, especially for people that already know some imperative language, you need to understand a lot more things for a proper start. And after you have to learn more things that are peculiar to Pyhton, not programming in general...

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

#87
post #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?

Not the OP, but I think what they are referring to is the following:

  def foo():
    return bar
  
  if ...:
    bar = 42
    print(foo())
  else:
    print(foo())
If ... evaluates to a truthy value, bar will be defined and foo() will return 42, if it is falsy, bar will not be defined and the code will throw a NameError.

I would agree that this is extremely confusing behaviour. Of course people wouldn't write code like this (hopefully), but a similar situation might occur in a much more obscure situation.

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

#88

Earlier quoted context omitted.

I learned Python as my first TRUE(explain later) language and I will be forever grateful for it. Now I am a polyglot, jumping through multiple languages all the time, be it Python/Java/Javascript, or occasionally flirtation with some languages that are foreign to my daily routine but necessary to get my job done. I am not quite on board with you claim that Python is chosen for monetary benefits. To be a qualified pro…

Congratulations on being a polyglot! In my opinion, all programmers should be polyglots, since some languages are better than others at various tasks. A programmer who only knows one language seems a lot like a carpenter who is only skilled with measuring tapes to me.

I would go further than that and say that it's also important for programmer to know different paradigms. Knowing C, Java, and Python is surely better than just knowing Java, but they're still quite similar. Ideally people would also learn some functional programming, even if they don't use it, and a Lisp dialect (to appreciate the value of good metaprogramming facilities and get over parenthesis-phobia).

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

#89
I feel like Python is too half baked to be a really good language to teach fundamentals. By "half baked" I mean - sort of supports functional programming, but not really. Sort of supports object oriented design, but not really. Sort of allows type system theory to be taught, but not really. So many sort ofs. It's a great language if you just want to get someone cranking some code. But if I wanted a language to be a base from which I could explore all the corners of computing I'd think else might make more sense (and having written that I can't really think of a good one - Scala in theory, but in practice it's awfully complex to get started in).

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

#90
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.

This is a really significant point. I mean, I love SICP. I think Scheme is elegant as hell. But I learned to program with Basic in high school, and SICP in Scheme would have seemed like a huge step backward. I know Fortran did, which was my first college-level experience. I can appreciate Scheme now, but I don't think I would have then. And I can only imagine how "kids today," who have grown up on real languages would feel ("real" in contrast to Basic, not Scheme).
Post reply on HN