Udacity CS101: Intro to Programming

Mihai Chelaru-Centea

Online Course by David Evans

Resource last updated: June 20, 2013


This is a fairly old course, since it was introduced back in 2012 and the GitHub was last updated in 2013. It's taught in Python 2, although practically everything works almost the same in Python 3 with the exception of the syntax for print since it was converted from a statement to a function.

The course has one overarching goal, which is to create your own search engine using only vanilla Python. It also has some short cameos featuring Google founder Sergey Brin, as well as some interesting visits to Mozilla and a computer science museum.


The course is structured in 7 sections, all of which have many lectures, which are interspersed with quizzes to test your understanding of what was just covered. This works really well for a relatively short intro course, and the lectures are far shorter than something like Harvard's CS50, so they can be digested in bite-sized chunks and are probably better as online courses for those studying on the side, compared to full-time university students.


I find Dave's lecturing very enjoyable, and the production value is good, with scripted lectures that cover the material clearly and efficiently. The course uses vanilla Python, typically without the need for importing libraries, really showing off how much you can do using only basic building blocks.

This can be good or bad, as at times you're doing things like parsing HTML to look for hyperlinks for a web crawler, which in practice would be achieved far more efficiently using existing libraries for parsing HTML or scraping elements from pages.

Some of the code for actually requesting pages is provided only as an API, which is a shame as it would be nice for them to go into how they actually wrote that function. I do understand that this is besides the point though, and I think building a search engine of sorts from scratch without libraries is a great project to base an intro computer science course around.

Many of the concepts discussed are fundamental to computer science, such as basic types and data structures, loops, procedures, and Python-specific concepts like multiple assignment that often come in handy for data science.


The quizzes are not always the most intuitive, and so they really make you think about what you're learning, although there is still quite a bit of handholding in a lot of the examples, and usually a lot of code is already provided for you, so you only have to fill in a few lines to complete assignments.

This course is not just for beginners, however, as they also have more challenging quizzes and some community-submitted questions at the end of each section, which are denoted by various gold stars indicating increasing levels of difficulty. These are interesting even for more experienced programmers, so don't immediately discount this course if you already have some Python programming background.

The Bottom Line

Overall I would recommend this course if you're a beginner who wants a practical introduction to computer science concepts in a heavily modularized format, with frequent quizzes to test your understanding and problem sets that will sometimes challenge you to think beyond the course material. It's a good introduction to the Python language, and a good lead-in to other courses that focus more heavily on object-oriented programming, or using libraries like numpy and pandas if you're interested in data science.