Thursday, April 12, 2012

Thoughts on Udacity CS101

Over the last 7 weeks I took the first-ever offering of Udacity's CS101 class. This was billed as a free basic computer science class for raw beginners, using Python as the language of choice. I'm neither a beginner nor a skilled programmer: I started programming more years ago than I care to admit, but I've never done it as a core part of my job, and I'm entirely self-taught. Over the years I've used only a small number of languages:
  • BASIC, back in the Apple ][ days
  • Perl (off and on--mostly off), since the Perl 4.x days
  • Objective-C (back on the OpenStep platform, before MacOS X revived it)
  • I've also played around with several other languages, including C, Pascal, Tcl, JavaScript, and others, but haven't done anything with them beyond the play stage.
  • Python
I started my exposure to Python maybe 18 months ago when I had a few small work-related scripting projects, and I wanted to learn something new. I've historically used Perl for networking-related scripts, but although I'd probably used it more than any other language, it's never really clicked for me in an intuitive way.

I started by working through the introductory Python course on Google Code, and it immediately felt right; I was able to quickly start writing small useful scripts without a lot of trouble. After that, I spent some time working through some other tutorials, materials from Pycon, and puzzles at Project Euler. I also wrote quite a few small projects at work, some of which I've blogged about here. Naturally, I was excited when I heard about Udacity's new curriculum; I've always wanted to take some CS classes to fill in holes in my base knowledge, but I've never had time. So, how did it go?

The good:
  • The user interface and website functionality was GREAT. I loved the format and delivery style of the videos. The tablet interface that the instructors use to deliver the course material is outstanding.
  • The embedded Python interpreter works really well. Only a few times did I feel it was necessary to code outside the embedded tools.
  • The homework assignments were well crafted and fairly graded.
  • The instructors were excellent. I really liked the "field trips" into real-world environments and the trips into computing history.
  • The short class cycles are really nice, and make it easier to keep up with the course.
Caveats (I'm not saying this is bad... just stuff to be aware of)
  • This doesn't seem to be a course for raw beginners, unless you have a ton of time to put into it. It started off really slow, but quickly ramped up the pace. If I had had no programming background I wouldn't have been able to keep up after the first few weeks.
  • It doesn't seem to be directed at intermediate programmers either. With the exception of the final sections on recursion, I didn't learn anything completely new, but the experience of doing the homework was still excellent for practicing and clarifying the basics. That said, I don't think they could have done it much better... when you are offering a class to thousands of participants, you need to make some tough choices. Frame your expectations accordingly.
  •  I wish that they had introduced some core Python concepts earlier and worked backwards into implementation details, rather than working forwards from smaller pieces. For example: before learning about Python dictionaries (i.e. hash tables), we had to implement a simple hash table using lists. This was interesting, but tedious--and I had the advantage of being able to see where they were going with it. I felt like it would have been better to introduce the dictionary first, then explain how you would implement it using simpler components. They also skipped some of the constructs that make Python seem so much more powerful and intuitive than some other languages, such as list comprehensions and generator expressions. The instructors have much more experience with teaching the material than I ever will, however--so maybe their way works better for the majority of students.
  • I never got into the discussion forums--they seemed rather chaotic, and every time I checked them I had to wade through a lot of posts complaining about issues with the grading. At the same time, the forums are really the only place you can get any personalized assistance, so I guess I'll need to figure them out in the future.
Overall, I thought it was a great experience and I'll definitely be taking another course from Udacity in the future.

11 comments:

priya said...


It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command
Data Science training in Chennai
Data science training in Bangalore
Data science training in pune
Data science online training
Data Science Interview questions and answers
Data Science Tutorial
Data science training in bangalore

Ismail said...

Thanks for sharing the information with us...
Data Science Courses in Bangalore
Data Science Training Institutes in Bangalore

nikhil reddy said...


Expected to form you an almost no word to thank you once more with respect to the decent recommendations you've contributed here.
Machine Learning Training In Hyderabad

Machine Learning Course In Hyderabad

ravali said...

Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!

Correlation vs Covariance

Anebellyliza said...

Nice blog Post ! This post contains very informative and knowledgeable. Thanks for sharing the most valuable information.
Data Science Training in Hyderabad

nisharoshan said...

Thanks for your interesting ideas.the information's in this blog is very much useful for me to improve my knowledge.


Web Designing Training Course in Chennai | Certification | Online Training Course | Web Designing Training Course in Bangalore | Certification | Online Training Course | Web Designing Training Course in Hyderabad | Certification | Online Training Course | Web Designing Training Course in Coimbatore | Certification | Online Training Course | Web Designing Training Course in Online | Certification | Online Training Course

Rahul singh said...


Your post is very great. I read this post. It’s very helpful. I will definitely go ahead and take advantage of this. You absolutely have wonderful stories. Cheers for sharing with us your blog. For more learning about data science visit at data science course in Bangalore

360DigiTMG said...

It is the perfect time to make some plans for the future and it is the time to be happy. I've read this post and if I could I would like to suggest some interesting things or suggestions. Perhaps you could write the next articles referring to this article. I want to read more things about it!
data analytics training in hyderabad

SK said...

Really Good Work Done By You...However, stopping by with great quality writing, it's hard to see any good blog today.
PRCrack
PaperScan Pro CRACK
Crack Softwares Free Download

360DigiTMG said...

Your blog provided us with valuable information to work with. Each & every tips of your post are awesome. Thanks a lot for sharing. Keep blogging,
data science training in hyderabad

Data science course said...

It has lessened the load on the people as it works on the data patterns that minimize the data volume.data science course in ghaziabad