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

Taught by

Ana Bell, Eric Grimson and John Guttag


4.5 rating, based on 129 Class Central reviews

4.7 rating at edX based on 268 ratings

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

  • 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 (…
  • Anonymous
    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 challeng…
  • Anonymous
    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 sli…
  • Nicole DeBonet
    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 t…
  • 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 difficu…
  • Anonymous
    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 rese…
  • 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…
  • Prahlad
    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 n…
  • Anonymous
    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…
  • 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
    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.
  • Profile image for Elvina Valieva
    Elvina Valieva
    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.
  • 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.
  • Aviaura
    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.
  • Anonymous
    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.
  • 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.
  • 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.
  • Lakal Gamage

    There were some logistical difficulties with the course: the last problem set wasn't released on schedule, and so the concepts I learned towards the very end of the class felt a little rushed and untested. But I imagine that these wrinkles will be smoothed out in the future.

    In short: it's a challenging class for CS beginners, but definitely recommended.
  • Anonymous
    I don't consider this an introduction to Python. They expect you to solve some of the problems without giving you the information in the lectures.
  • Anonymous
    Cons: Too difficult, too many mistakes in lectures and not engaging, need to spend time hours researching to get psets done, finger exercises are great for understanding but are rather difficult as MIT uses finger exercises to teach topics than lec…

Never Stop Learning.

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

Someone learning on their laptop while sitting on the floor.