MITx 6.00.1x: Introduction to Computer Science and Programming Using Python

Mihai Chelaru-Centea

Online Course by Eric Grimson

Resource last updated: March 15, 2017


This is another solid beginner programming course, offered on edX, although no longer live and only available in archived form. Eric Grimson is a delightful instructor who explains concepts in a calm and clear manner, making this a great course for beginners to programming, although some of the exercises are a bit challenging, similar to Harvard's CS50.


The lectures are quite short, each on a particular topic, which is great if you want to go back and review a particular concept, or just like to know what you're learning and have your notes organized in a very logical manner.

The course has a lot of so-called "finger exercises" in each section to test your understanding, and they do require you to think about the answer as some of them are not so straightforward, but it really drives home some of the challenges of programming where these edge cases can be the cause of insidious bugs down the line, which is especially relevant to data science analysis.


The course starts by explaining what a program is, and going through some of the basic fundamentals of computer science like the differences between ints and strings, with most of these put in the context of the Python language and its idiosyncrasies. There is time spent on data structures like lists and tuples, as well as the details of how slicing works, which is a good thing to know, although it's also perhaps more detailed than necessary for those interested in a functional understanding of Python for data science applications.

There's a section on testing and developing appropriate test cases, which is more of a software development skillset, but as data scientists are increasingly expected to work in software development roles as companies demand more of their employees, this is a good thing to know and really understand, and the course does a good job of explaining it.


The material itself is not particularly difficult, and the lectures explain it well so there is not a lot of room for confusion. However, the concepts discussed are fairly advanced, despite also being fundamental to computer science, and so beginners might find some of the exercises difficult. It's not uncommon to make mistakes on the simple finger exercises, and getting them right on the first try without running any code in your Python shell is pretty impressive.

The problem sets are reasonably straightforward, and quite a bit of boilerplate code is provided for you, so it's not like you have to create the entire thing from scratch yourself. There's a whole section where you implement the various classes and methods required for a card game, and a lot of the planning and the API specification is given to you, so you don't have to spend a lot of time figuring it out on your own.

The Bottom Line

Overall I'd say this is a great course to start with if you have no programming background whatsoever and want a look at programming through the lens of Python. The Harvard CS50 course is excellent, but seems to be more focused on web development in its current incarnation, and so I would recommend this course over it as a first foray into the world of programming.

The fact that the lectures are also shorter makes it feel more manageable, as it allows students to learn at a slower pace and really grasp the concepts, using the finger exercises to reinforce their understanding.