Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Massachusetts Institute of Technology

Introduction to Computer Science and Programming Using Python

Massachusetts Institute of Technology via edX


This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. Together, they are designed to help people with no prior exposure to computer science or programming learn to think computationally and write programs to tackle useful problems. Some of the people taking the two courses will use them as a stepping stone to more advanced computer science courses, but for many it will be their first and last computer science courses. This run features lecture videos, lecture exercises, and problem sets using Python 3.5. Even if you previously took the course with Python 2.7, you will be able to easily transition to Python 3.5 in future courses, or enroll now to refresh your learning.

Since these courses may be the only formal computer science courses many of the students take, we have chosen to focus on breadth rather than depth. The goal is to provide students with a brief introduction to many topics so they will have an idea of what is possible when they need to think about how to use computation to accomplish some goal later in their career. That said, they are not "computation appreciation" courses. They are challenging and rigorous courses in which the students spend a lot of time and effort learning to bend the computer to their will.

Please note : edX Inc. has recently entered into an agreement to transfer the edX platform to 2U, Inc., which will continue to run the platform thereafter. The sale will not affect your course enrollment, course fees or change your course experience for this offering. It is possible that the closing of the sale and the transfer of the edX platform may be effectuated sometime in the Fall while this course is running. Please be aware that there could be changes to the edX platform Privacy Policy or Terms of Service after the closing of the sale. However, 2U has committed to preserving robust privacy of individual data for all learners who use the platform. For more information see the edX Help Center.

Taught by

Ana Bell, Eric Grimson and John Guttag

Related Courses


4.5 rating, based on 126 reviews

Start your review of Introduction to Computer Science and Programming Using Python

  • Ryan Lam completed this course, spending 8 hours a week on it and found the course difficulty to be hard.

    As a beginner to python, this course pushes me to the limit. Criticism first, as pointed out by different people, the professor made too many careless mistakes in explaining a concept, he also did some scribbles that somehow confused me even more (in...
  • Anonymous

    Anonymous completed this course.

    This is an excellent course that will teach you some Python, but more importantly will teach you algorithmic thinking and how to break down large problems into simpler ones. I came into it with some self-taught Python knowledge and found it challenging...
  • Anonymous

    Anonymous is taking this course right now.

    I'm taking this class as a refresher and as a way to dig into some sorting algorithms that I haven't used in awhile but if I was new to coding/python, I would find this class to be very confusing. The lectures aren't presented very clearly. The slides...
  • Ruilin Yang completed this course, spending 11 hours a week on it and found the course difficulty to be hard.

    A life-changing MOOC. I take this MOOC aside from my work as a government clerk in China in 2016, which is very unsatisfactory. At that time, I was 24, graduated from an Econ & Business university, beaten by the humiliating experience of working in a...
  • Nicole DeBonet completed this course, spending 12 hours a week on it and found the course difficulty to be very hard.

    I just finished this class. It was much harder and moved much quicker than any other MOOC I have taken. I learned a lot, but it was a lot more work than I had really anticipated. I am a complete novice with no programming experience, so perhaps that...
  • Prose Simian completed this course, spending 6 hours a week on it and found the course difficulty to be medium.

    This is a well-crafted, fast-paced introduction to Computer Science, though a little dry at times. I think it's based on the introductory 'CS for non CS majors' course at MIT. The pace, relative complexity of some of the subject matter* and difficulty...
  • Anonymous

    Anonymous is taking this course right now.

    The course moves very quickly and has required 20+ additional hours of work weekly beyond the instruction. The lectures are very contained in their scope, but the scope of the problems jumps far beyond the lecture and requires much unsupported research...
  • Prahlad completed this course, spending 35 hours a week on it and found the course difficulty to be medium.

    Great course! But you have to work a lot, not get frustrated and be ready to think out of the box and get out of the comfort zone to solve the problems. One of the things to take away from this course for me was that coding of complex programs is not...
  • Anonymous

    Anonymous completed this course.

    This was probably the best introduction to computer programming I have ever seen. The professors are engaging and the lectures are short and to the point. Finger exercises between lectures really drive home the points that the professors were trying to...
  • Profile image for Luke Dc
    Luke Dc

    Luke Dc completed this course.

    This is a very good course. I have tried a few intro to computing courses, and this is hands-down by far the best. It is the only online course I have completed thus far; I hope to take the subsequent courses by MITx in the future. The assignments are...
  • Vicky Pang completed this course, spending 2 hours a week on it and found the course difficulty to be hard.

    The many practice quizzes are very useful and I could follow the first half of the course but when I encountered a problem with an exercise around the middle of the course I couldn't solve it and since I was too busy to find other help (e.g. books/resource persons), I was stuck and gone off track with the course schedule. So I had to drop this course. I'd recommend this course if you have someone around who already knows programming because as with other computer stuffs, sometimes a small thing can get you stuck and you can look at it a million times and still can't see where the problem lies.
  • Anonymous

    Anonymous completed this course.

    This course has been my best online 'tutorial'. Instructor approaches teaching from 'first principle' and for me that is the way to go. I was able to grasp the fundamentals of programming on the fly. I entered the course with the aim of getting first hand education on python programming to enable me write scripts for digital design as an architect but I chanced upon a requisite knowledge I never earlier imagined. Each lesson was modest in design, well defined in specific objective, and understandable information. It covered a wide range of lessons needed for computer programming and would recommend it for anybody who wants to learn computer science.
  • Elvina Valieva completed this course, spending 4 hours a week on it and found the course difficulty to be medium.

    This course covers a lot of ground, so it may be demanding for a beginner. However, if you have some programming experience and just want to get all you knowledge into a system and learn some python it can be pretty manageable. Problems sets can be challenging, but not if you've solved similar problems in another language. So I recommend it to someone who has done at least a CodeAcademy course, so you wouldn't feel thrown into a deep end right away. Otherwise it's a great course. I personally enjoyed the instructor's sense of humour and barely contained enthusiasm for the subject.
  • Aviaura is taking this course right now, spending 12 hours a week on it and found the course difficulty to be very hard.

    Okay, so for someone who has never coded, and wants to learn to program, you can safely assume this is the best course, yet the hardest out their. Even for someone who has programmed for a year or so, this course can be tough. So, if you are merely starting, don't feel belittled. This is a magnificent course, and even if you just complete it, without scoring good, trust me, you will take many things out of it for future. Will normally take around 12-15 hours a week, but if you are new might take long.
  • Dubravko Gacina completed this course, spending 15 hours a week on it and found the course difficulty to be hard.

    Excellent introduction class for anyone wanted to learn Python either you are a beginner/student or a professional experienced engineer wanted to learn something new. The class is somewhat medium-to-hard to follow and requires quite an attention and regularity of attendance (it's an esteemed MIT after all) but presenters and authors MIT's Professors John V. Guttag, Eric Grimson and Ana Bell did an extraordinary job of making a learning curve as gentle and pleasant as humanly possible. Personally, to me it's the very Eric Grimson's teaching style which kept me going.
  • Profile image for David Chen
    David Chen

    David Chen completed this course, spending 5 hours a week on it and found the course difficulty to be hard.

    This is a well-taught, well-organized course that will challenge you to become a programmer who critically think! The questions and problem sets are challenging, but are incredibly fun to solve. You will need to spend some time, regularly, in order to succeed in this course. After earning the certificate, I even returned to the course materials to review. Overall, I recommend this course to anyone who wants to properly learn, improve, or review/refresh their Python programming and CS basics.
  • Salvador Pio Alonday

    Salvador Pio Alonday completed this course, spending 12 hours a week on it and found the course difficulty to be hard.

    daslk klsd fklasjdf lkajsflk jaslk c iajwoie xcn xio oq o o no ja qp p dpj aoidn ff xaalkd j oq p di faoif q pq nj diof jalk nlkjfk
  • Doris Smith completed this course, spending 6 hours a week on it and found the course difficulty to be hard.

    An excellent introduction to thinking computationally. I liked the instructor, and the exercises and problems sets largely struck a nice balance, being challenging but not discouraging. The midterm and final, though, I found very difficult.
    The pacing of the class is also a little uneven: we lingered over the easier topics early on, but then sped through more demanding topics, such as object-oriented programming, toward the end of the course.
  • Anonymous

    Anonymous completed this course.

    I really enjoyed this course. Prof. Grimson's lectures were a pleasure to watch. I had very little programming experience (just Python for Informatics on Coursera), so I found this course to be difficult, but very rewarding. I took it concurrently with the Rice python course on Coursera, and I found that the two courses complemented each other very well, though it was hard to find time to complete all the assignments for both courses.
  • Giovanni Volante completed this course, spending 8 hours a week on it and found the course difficulty to be medium.

    No bell and whistles, a classical approach and a wonderful professor, Eric Grimson.
    One advice, especially for student whose English isn't mother tongue: if you find yourself in troubles with tests, go back to the video lessons. They are dense. When I found myself in troubles, I often taught that something has not been explained, but I had always had to admit that it was my fault, since I lowered my attention during the view.

Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free