I’ve been trying to learn how to code in Python for a while now. Of all the beginner resources I’ve tried, Udacity’s Intro to Computer Science (UD CS101) has been my favorite.
To clarify: I’m not learning Python with the intention of becoming a software developer. Rather, I like analyzing data, and I hear Python can help with that. R too, but Python is 1: recommended for beginners, and 2: has more applications outside of big data.
I do have some programming experience, though never anything formal, never to this depth, and never in Python.
UD CS101’s premise is for you to create “The Next Google” by teaching you how to build your own search engine.
The self-paced course is broken down into 7 modules*. Each module introduces a new concept to help improve on your search engine.
Each module contains:
- Videos. Here the instructor explains the theory behind the concepts and demonstrates how to use them on the search engine.
- Q&As. These help nail down the concepts. These aren’t too difficult and are usually similar to the demonstrations.
- Problem sets. These are machine problems that build on the concepts you’ve learned so far and are more challenging than the Q&As.
At the end of the course you would have built a search engine with a similar algorithm to AltaVista–what was once the #1 search engine in the 90s before Google took over.
For your class project you then build a mini social network based on the concepts you learned from the course.
*As of writing Udacity has revamped their classrooms so this modular approach may no longer apply.
I have a lot of good things to say about the course so in no particular order:
- Very good lectures. Of all the beginner Python resources I’ve tried, this course takes the cake for being able to explain concepts really well.
I like how the instructor visualizes concepts on his board and make analogies to real life. These may seem like small things but for me its proof that he’s not a star programmer–he’s a star teacher.
I especially like that he explains WHY: Why lists and not dictionaries? Why strings and not integers? Why this and not that? By explaining his reasoning, the instructor sets students up to make their own judgments in the future.
- Interactive environment. I like the fact that the Python environment is set up within the browser itself, right next to the video lectures and demos. You can try things along as they’re being taught.
Similar to DataQuest, UD CS101 also has a built-in checker so you can check your code immediately.
- Problem sets. The problem sets from this course are challenging but not impossible. They really force you to think and you get quite the kick from being able to solve them.
I confess to being competitive where I would try to write the shortest code possible, even if it meant rewriting my answers again and again.
- Active forums. And in case you can’t solve the problems, that’s okay. The forum is very active and students are more than willing to share their code. You can also post your code for feedback so others can suggest improvements.
There were a few problems I couldn’t solve on my own and had to resort to analyzing somebody else’s working code to understand how they did it.
- For the beginner. This course truly does not make any assumptions on what you already know. Sometimes this makes the lecture lengthier than expected, but as a beginner I appreciate that.
I find coming up with negative comments difficult as the course delivered on its objectives very well. But I will try, even if these will sound more like nitpicks:
- Unrealistic examples. You’re asked to build the next Google. The next Facebook. The next other stuff which I don’t understand why the average Joe or Jane would want to build.
Coming out of the course my reaction was, Ok, so I learned Python. Now what? I felt that while I learned a lot I didn’t know how to apply what I learned.
- Some awkward modules. This is more of a placement problem wherein some modules were placed in-between unrelated modules. If you’re going through the modules chronologically, it breaks momentum.
- Too many guests? I can’t speak for others, but I felt there were too many guest speakers in the course. I assume the idea behind it was to introduce some “industry best-practices” so the course wouldn’t be purely academic. But I don’t know, I just felt there may have been a wee bit too many.
All in all this was an excellent course. There was a great balance between the lectures and exercises; a rarity in MOOCs. The lectures were comprehensive, while the hands-on exercises were challenging enough so students are forced to think but not be discouraged.
As its meant to mimic a university course, do expect it to be time-intensive. I tracked my time with toggl and found I spent around 30 hours on this over a period of 5 weeks.
I recommend this course to beginner coders. It assumes Python will be your first programming language so it explains programming concepts applicable anywhere. Python was the language of choice as its close to natural language and therefore easier for non-coders to pick up.