Live data from Hacker News

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

cemerick.com

31–40 of 141 posts

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

#31
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 prematurely.

This doesn't mean assembler or brainfuck is okay as a first language (although the former was the 2nd langauge I taught myself and its reputation for difficulty is vastly exaggerated in my opinion), but it does mean that endless discussions about whether Python is better than Javascript or C is better than Lisp is probably splitting hairs.

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

#32
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 don't get why people hate on starting with JavaScript. Since ES6, JS strikes a really nice balance between practical usage and theoretical value. Like Scheme it's a dynamically typed language focused around a single data structure (list for Scheme, object for JS), with first class functions. Sure, it has weak typing and there's some scoping complexity. But, that's a completely reasonable tradeoff for being one of t…

I think JS is a great first language. In my experience as a teacher of programming, most students are not like me. Unlike me, nearly every student of my acquaintance is motivated by making things. It's easier in JS to make things that are visually interesting, that are demoable to your peers and family, that are easy to deploy to a variety of useful environments.

JS is a good starting language, for the typical starting student, because it helps them cultivate their intrinsic motivation.

Less importantly, but still important to me: JS is also a more beautiful language than most mainstream languages, except for the ten or fifteen god-awful warts that it admittedly has, that everyone is disproportionately obsessed with.

(I, unlike most of my students, was interested in computational thinking from the very beginning: iteration, recursion, data types, algorithms, etc, and I was uninterested in actually making things. My first languages were BASIC and Pascal and C, and as far as I can tell, that worked out okay.)

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

#33
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 the 1st languages I installed was python. For me the reason is a nice Raspberry PI I got from a friend of mine, but most of all the accessability of the language on literally all OS's you can throw a stick at.

Another reason is

  python -v -m SimpleHTTPServer 8088
amazing, when you run it in verbose mode

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

#34

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…

> it really doesn't matter exactly which language happens to be one's very first programming language.

I'm not so sure.

Here's an example of blinking an led with Lisp:

http://www.technoblogy.com/show?1GX1

And here's one using python:

https://www.modmypi.com/blog/gpio-and-python-39-blinking-led

If I were my 12 year old me, I would probably enjoy the second more than the first.

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

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

Scheme is not my first language and I am still greatful for it. I am self learning SICP for past 3 years (after working 15+ years in non-lisp languages). Though still in chapter 2, it has cleared up and simplified my thinking about programming. I no longer consider bottoms up approach to be sin. Understanding new functional language specs becomes a breeze and it 'just clicks'. Though I am yet to understand why Clojure could not implement tail recursion without the 'recur' keyword.

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

#36

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…

> within reason, it really doesn't matter exactly which language happens to be one's very first programming language

I agree with this, but I'm not sure how many of the students taking the MIT course in question are learning their very first programming language there.

Now if we were talking about a secondary school course...

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

#38

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…

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 castles in the sky.

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

#40

As someone who's read SICP when first starting out and re-reading it and re-watching the lectures much much later - I can say that 95% of the value of SICP flew completely over my head when I was first learning. I remembered catch phrases like 'assignment is bad', only to be led down the 'functional programming' cult years later because it reminded me of sicp. Building up entire systems from first principles is quite…

> University is not structured to give you the time to go deep or be curious - you're busy doing assignments, readings and studying for tests. That statement, while true, should anguish the heart of anybody in any way related to or concerned for academia.

Undergraduate coursework has always been that way. Especially in any truly competitive environment.

You do, however, get that time when you write a master's thesis.

Post reply on HN