Why does mit teach python
You may not alter the images provided, other than to crop them to size. A credit line must be used when reproducing images; if one is not provided below, credit the images to "MIT. Previous image Next image. As for probability measures, those he chose to ignore. Now a second-year student at the Institute, Quigley was recently sitting in a lecture for 6. The topic of the day was using a computer simulation to estimate the value of an unknown quantity: the probability of winning at solitaire.
He speaks of Python, his first real computer programming language, with awe. It has been around since , but over the last few semesters, 6. About 60 percent are first- or second-year students, according to the class roster, with the remainder a mix of juniors, seniors, and graduate students. In spring , students enrolled, followed by that fall. By the fall of , it rose to It involves far more than coding.
She delivers the majority of the lectures in 6. In rapid succession, Grimson describes using randomized computation to solve problems that are not inherently random; employs coin flips and roulette wheels to explore quantifying variation in data; and illustrates the concept of random sampling with a staged video featuring MIT Professor John Guttag, the originator of 6.
Bell, who is sitting in the front row, smiles as she watches the video with the class. I guess they know best! Is it just me or is the python being taught not very good? The prof starts off by saying that internal class variables should not be accessed directly through the instance, and rather through attribute accessors. The example code with the lecture posted above is littered with what I would I call messy python.
Messy attribute setters and getters, catching KeyErrors instead of using. If you're going to teach using python should you not teach pythonic practices as well? Or is it just about the CS? Otherwise there will be a bunch of MIT grads who will have to relearn python if they ever intend to use it in industry which seems to be the goal.
The majority of the comments here seem to be in favour of teaching python because python is fun. Teaching python like java seems to me to take the fun out of it. If academia chooses a language to teach with should they use the common practices of that language, or does it not really matter?
I'm new here. Rabidmonkey1 on Sept 25, prev next [—]. Derferman on Sept 25, prev next [—]. I am currently an undergrad at Berkeley. I really like the current structure of our computer science program. I'll be surprised if you tell me that the end result isn't usually undergraduates who can produce mediocre, unidiomatic code in any of 6 languages.
I've no personal experience with Berkeley grads, just general cynicism. This would be true for any undergraduate program. Quality of the people is more important than the quality of the material used for instruction.
What do you see wrong with the Berkeley curriculum? I think you mean that they'll spend their time learning the basics of 6 different languages without getting in-depth in any of them. I think there is two problems with this: The first is that SICP is one of the most influential, well-written and essential textbooks written for computer science. This is especially true now, as most undergraduate students do not know what functional programming is or what it is good for. The second is that I think the major appeal most people have to python is that it feels very 'natural' to program in, after years of slugging it out in the other languages.
But going with the best-case scenario is dishonest and not always best way to approach teaching. As an aside, when Lisp was introduced in my first year introduction course, it was described as slow, old and unused.
There was no mention of modern Lisp dialects or any other functional language for that matter. Hacker News new past comments ask show jobs submit. ShardPhoenix on Sept 25, root parent next [—] BlueJ is a pretty good solution to this since it lets you play around with objects and methods before you ever have to write public static void main etc. Pistos2 on Sept 25, root parent next [—] What language is that? Darmani on Sept 25, parent prev next [—] AP teaches what a plurality of colleges teach.
Derferman on Sept 25, prev next [—] I am currently an undergrad at Berkeley. The focus is on developing high quality, working software that solves real problems. The idea is that by thinking about mathematical problems, students are prodded into learning MATLAB for the purpose of solving the problem at hand. Topics include variables, arrays, conditional statements, loops, functions, and plots. You will learn the required background knowledge, including memory management, pointers, preprocessor macros, object-oriented programming, and how to find bugs when you inevitably use any of those incorrectly.
This course introduces fundamental principles and techniques of software development. Students learn how to write software that is safe from bugs, easy to understand, and ready for change.
This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems. Prerequisites: A firm grasp of Python and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.
The Battlecode Programming Competition is a unique challenge that combines battle strategy, software engineering, and artificial intelligence. As for the argument that "computer science has fundamentally changed", I agree.
Unfortunately, what is really meant is that software engineering has changed. Additionally, while library use may be more prevalent in industry now, that's no pedagogical argument for teaching "library use" whatever that is. Library use is relatively easy. Reading docs is hard for a lot of people but learning to read docs can be done with systems or languages instead of libraries. It all boils down to what will serve the students best and what will let MIT deliver the most value.
Students can learn python and library use on their own relatively easily. Fundamentally understanding recursion, abstraction, complexity, scoping, FP, OO, and other more abstract topics is considerably harder working alone.
From the conversations I've had with 6. MIT's new course 6 curriculum falls along similar lines as the 8. Would Caltech do this? So why is MIT? You can probably cover a lot of this material with Python, but still run into more limitations and inconsistencies than with Scheme. Interestingly enough, I'm also an MIT '09 hi - and while yes, I loved the old curriculum and I wish they were still on it, you're making all these claims about the new curriculum that are simply not true.
As a student who had a little bit of difficulty with the theoretical steps in , I can understand why they added the "test this and prove to yourself that this makes sense" exercises in Python. As lame as it sounds, look into 6. These are all new or refurbished classes to support the new curriculum. That's a pretty major shift. I've helped a number of people with their 6.
Students in 6. Right, but 6. I brought it up to provide an example of what I would've liked to see 6. How have I been misled regarding popularity and marketability? That is, what information do you have that I do not? Note that I said, with added emphasis, "the practice of computer science has fundamentally changed. I have to do as they describe to do my own research. Also, answering your own rhetorical question even though you don't actually know the answer is not support for your argument.
While Gerry Sussman may not have said it, popularity and marketability were absolutely factors in the decision to adopt Python for the new curriculum. Any sane CS department would take these into account. Unfortunately, it has become increasingly apparent that in many cases MIT in general and course 6 in particular make decisions mostly because of popularity, marketability, buzz, or peer pressure.
This is not how you innovate. This is the first 6 class students take, after all. Classes later in the curriculum will have students using libraries of their own selection or writing compilers or operating systems for modern processors should the student choose to take those courses. Between teaching fundamental concepts and teaching how to use a library, concepts should win out in introductory courses. Whatever skill it takes to use a library or documented system will be learned in time.
I don't absolutely know the answer to whether Caltech would do something similar but I would wager a great deal that they wouldn't. Have you looked at Caltech's required courses?
Talked to Caltech students? Looked at MIT's required courses? Talked to MIT students? If you do, you will notice a very clear trend.
Although MIT and Caltech are ostensibly peer institutions, the last two decades have seen a marked relative decline in the intensity and rigor of MIT's undergraduate programs.
Sussman and Prof. White are lying. I've known both of them for a very long time and find that utterly implausible, but I suppose you have a right to your opinion, however informed or uninformed.
I'm about halfway through them. I only wish my Scheme-based course had been as cool. I didn't do my undergrad at Stanford, but I'm here as a grad student, and I believe they use Java for the intro classes. I did my undergrad at Stanford, and after taking two simple intro courses, we had the first real intro to paradigms course CS I don't know if the course is still taught this way, but I thought it was great.
There's a new CS this year along with a few other classes; they just redid the undergrad curriculum. One of my friends is a TA and he is actually sitting next to me right now. Apparently no longer includes anything on Lisp. I did undergrad CS at Georgetown too hi.
What year were you, if you don't mind me asking? I graduated last year ' Ah I probably do not know you then. I graduated in ' Do you know Zico? He graduated in '05 and is a grad student at Stanford now I believe.
We were in the same algorithms class. I don't know him personally, but I know who he is; I think we met once when I was a freshman, and then he gave a lecture for one of my classes last quarter. Andrew Ng speaks highly of him. If you read my original post, you'll see that it has absolutely nothing to do with teaching marketable skills nor popular languages.
The point was that the change in languages was not a goal in itself, but merely an incidental consequence of what the real goals were. The title of the blog entry was meant to be ironic. What remaining classes do you think best exemplify the old curriculum? I don't know what they've done to them since I took them.
I've heard mediocre things about 6. Afaik, it's still taught in Scheme by Sussman. All these classes cover quite a bit of material in not-very-much time. They don't get bogged down by whatever language they use if any and they straightforwardly teach fundamental concepts in some depth. They have high throughput. I find this justification downright weird. Yes, a class like 6.
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 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.
0コメント