The Udacity Intro to Programming Nanodegree was the first course on my radar when I decided I was going to teach myself programming. I had taken Udacity’s CS101 standalone course previously and had a very positive experience. The Nanodegree was getting consistently positive reviews. The content breadth and depth appeared to be just right for what I was looking for in an introductory program. It seemed like the perfect fit.
This Nanodegree, like all Nanodegrees, is a curation of Udacity’s best courses laid out in a logical order. My edition of the Intro to Programming Nanodegree was broken into five mandatory stages, with a project bookending each stage:
- Stage 0 (optional): A bit of HTML (project)
- Stage 1: More HTML and CSS (project)
- Stage 2: Python and general programming concepts (strings, variables, loops, etc.) (project)
- Stage 3: Classes, functions, abstraction, and working with pre-existing code (project)
- Stage 4: Back-end programming, databases, and template engines (project)
Instead of hour-long lectures, Udacity breaks their courses down into a bunch of mini-lessons. The vast majority of videos are under five minutes and are followed by multiple-choice and code quizzes. Projects are graded by Udacity’s Project Reviewers.
Note: Stage 4 and 5 were revamped in February 2016. In Stage 4, you now learn a bit about popular tech roles (front-end/back-end/mobile programming, data analysis) and in Stage 5 you do a deeper dive into one of those roles.
Other note: you can view the code that generated the above-linked projects in this GitHub repository.
Does The Program Accomplish Its Goals?
One of the first videos (this one isn’t available to the public) you watch in the program references four stages of expertise: ignorance, awareness, ability, and fluency. The program aims to get students to the awareness and ability stages.
A quote from the curriculum director, Andy Brown, in that video (I’m assuming Udacity is okay with me sharing this paywalled clip in this context):
You’re going to see a lot of new topics and new ideas in this Nanodegree. Because you’re going to see so many, it means we’re just not going to be able to focus on acquiring fluency. Fluency generally takes a really long time to acquire, in even one thing.
So instead, the goal is going to be to get to ability in the most important topics that are fundamental throughout programming. In addition, you’re going to gain awareness of many topics. Through this combination of awareness and ability, you’re going to have the skills to do amazing things, as well as the understanding of what you need to do next depending on your own personal goals.
Prior to enrolling, I knew next to nothing about programming. I am now confident that I can actually do things with my newfound ability. I was also made aware of potential programming paths, was given a chance to decide if they interest me, and was shown how I can go about pursuing them. For me, the Nanodegree accomplished its goals.
Udacity says it takes students 190 hours on average to complete the program. It took me 189 hours over 2.5 months, as tracked by Toggl. You can definitely complete the program faster than that if you rush through the projects a little bit. I dedicated a fair amount of time trying to make my projects more aesthetically pleasing than they needed to be to receive a passing grade.
Is It Worth The Price?
This is subjective. At $200/month with a 50% refund if you complete the program within 12 months, my bill ended up being $300.
You can take the courses for free, but you won’t have access to the curated content, the forums, project reviews, one-on-one coaching, and the certificate. On the usefulness of these features:
- Curated content: The curated content kept the program concise and was nice to have, but there is a free workaround.
- Forums: I used the forums a lot, especially when I ran into bugs in my projects. They were often more useful than StackOverflow forums (and other Google-able forums) because students often seemed to run into the same bugs. Udacity instructors were also quick on the trigger in responding to posts, often within a few hours.
- Project reviews: Very useful. Reviews would often come in a few hours after project submission. The correction of mistakes plus the reassurance that you are doing good work is an important part of the learning process. Reviewers also suggest ways in which to improve your code, even if it’s “just” stylistic improvements.
- One-on-one coaching: I didn’t use the one-on-one coaching for this Nanodegree, but I probably will for more complex ones.
- Certificate: The certificate is nice to have, but probably not that useful.
The answer to this question will vary depending on the goals of the student.
Upbeat, Welcoming Learning Environment
The general positivity of the program’s instructors is very noticeable and it is awesome. The company’s upbeat, welcoming learning environment is a major reason why I am sticking with Udacity as my main source of online education.
Udacity CEO Sebastian Thrun’s industry connections are evident as well through cameos from Google co-founder Sergey Brin, Reddit co-founder Steve Huffman, Google Director of Research Peter Norvig, Junior (Stanford’s self-driving car), and Sebastian himself.
What I Didn’t Like
Honestly, not much. The office hours were meh. These were 45–60 minute pre-recorded webcasts led by a few Udacity coaches that occurred a handful of times each stage. There were often a few key insights in each webcast, however it was difficult to determine what parts I could skip safely skip over. I ended up wasting a decent amount of time on things I didn’t need to watch.
This program is a great fit for people who know they would like to pursue programming, but are unsure of which discipline to target.
One thing to note: this Nanodegree teaches you programming, not computer science. There is a difference that beginners may not be acutely aware of before they start the program.
Probably the most important thing you leave this Nanodegree with is the ability to think like a programmer. The instructors repeatedly come back to the five methods of thinking in the screenshot below:
The terms are a bit jargon-y, but all they mean is that you are able to solve problems in a structured and efficient manner. This skill is important in programming, as well as in other areas of life.