Jump-starting my software skills with Udacity

First impressions of my Udacity ‘nanodegree’ in Machine Learning

Published in
10 min readJun 30, 2016

--

Udacity, a “CNBC 50 Disrupter”, are a provider of nanodegrees. “Nanodegree!?” I hear you cry in your raspy voice? They’re fundamentally distance-learning MOOC degrees that claim to compress the job prospects a typical multi-year degree might offer into around 6–12 months. Udacity focus on the tech industry — and that’s a great fit: programming, tech and computer science inherently work well in a cloud, distance-learning environment.

Udacity degrees are incredibly hands-on, and aim to give you a solid project portfolio of the kind of projects you might expect in industry. This fits well with the work-first culture in the UK and USA, but I suspect might be less well-regarded in places like the academia focused Germany.

A slightly smug success story — but good on her.

For me, I’ve been dabbling in coding for years, and have always wanted to bolster my CV with a formal qualification. I graduated with a masters in Chemical Engineering, and whilst I wanted real proof of my software competence, I didn’t want to go through a full degree again. And bootcamps seem to be like telling your howling granddaughter that she has a beautiful voice, and she’ll be a popstar. I had even considered a pricey Harvard Extension School conversion to Software Engineering. Nothing quite fit.

Coming across the Nanodegree on the other hand, felt natural. I would be respected for my existing competence, and I wouldn’t have to spend years in higher education again. But I was still sceptical if this ‘degree’ would give me actual credibility. Udacity claim it’ll bolster your résumé: I have a Legoland Driver’s license too, but so far have had no calls from BBC to replace Chris Evans on Top Gear.

So this first post covers my first impressions of Udacity and how it fits my needs, in the context of an already qualified non-CompSci engineer. I’ll compare it with my experiences of traditional education, the quality and content of the course.

Choosing a course

Udacity has a wide variety of courses aimed at people of all levels. In terms of Nanodegrees specifically, there’s still a fair amount of options available. Interested in Mobile apps? Go for iOS or Android development. Trying to master the web? There’s a well-reviewed “Full Stack Web Developer” degree.

But what if you have different criteria. Perhaps you aren’t sure. Or like me, you want something challenging and stimulating that also shows competence. Beside each course, there’s a pretty fact-box which gives some key information over every course:

That’s nice. I’d quite like $169K. The skill level is “Advanced”. What does that actually mean? Do I actually have ‘intermediate programming’? Is my academic research statistics knowledge sufficient? What about my learned, but rusty calculus? Will there be a recap? The very superficial reviews weren’t helpful in this regard.

At the bottom of each course, there’s a “Prerequisites and Requirements” which lists topics you should be competent with before you begin the course. It lists topics and syllabus you should be familiar with. Most useful, was the “Readiness Assessment”.

The first video which introduces the Readiness Assessment. There are more videos as you complete the Readiness Assessment, and they’re all helpful

It’s a quick wizard which asks you about whether you can dedicate enough time, and tests core skills such as math or coding skills. It certainly gave me confidence that I was lacking — whilst I couldn’t answer all the questions without Googling, I knew I had the core knowledge required to pass the assessment. I find it an absolute must before you begin a free trial.

One thing was severely lacking though. If this were a typical university, there’s one thing I’d always do: call up an admissions tutor, explain my situation, and get some direction. Or I could turn up to an Open Day. What about Udacity? In classic Tech Customer Service tradition, there’s a FAQ.

It’s a pretty extensive FAQ, going over plenty of generic answers to typical questions. Unfortunately I didn’t find “I’m a chemical engineer who likes tech and wants to find a degree that’s of the correct skill level, can you make a good judgement based upon my profile?” within the list. The “Contact Us” section directs you to the public discussion forums, and they’re a complete mess (compared to the paid forums).

In the end, whilst I have my doubts over the non-personal approach, I’d say the Self-Assessment tool was incredibly useful in assessing whether I was ready. It asked me to do a math test (which flagged my dormant calculus requiring some revision), and a coding test which required me to do a little Googling of Python APIs to refresh my memory. I was mostly successful, but I couldn’t help feel like I was still taking a gamble. But then, I think I felt the same choosing Chemical Engineering without a Physics A-Level all those years ago.

Introductory project

For the Machine Learning course I started, there’s an Introductory Project, which gets you to develop a model for people who died during the Titanic sinkage. That sounds pretty cool. It’s completely optional, and serves to warm you up for future courses.

What impressed me quite a lot is that there was a wealth of advice on setting up your development environment before you got to the actual problem. Getting a working environment is absolutely critical, and many online tutorials will simply gloss right over it. Here’s a snippet of some advice the course gives:

…Use the cd command to navigate through the file structure of your computer to where you extracted the project files. For example, on Windows you might start with cd C:\Users\username\Documents\ (substituting in the username) to get to the Documents folder…

The course is designed for intermediate programmers, and has the highest difficulty in the 3-star scale, yet they’re explaining the cd command to me? I think that’s absolutely wonderful. I really appreciate the “assume nothing” approach and I didn’t find any of the advice patronising. I also know it will pay off when there’s a topic I’m less well versed in.

Overall, I found it to be a very good primer. I hadn’t ever used IPython or Jupyter, but felt familiarity from my experiences with Matlab and Maple pretty quickly as Udacity guided me through.

What outstanded me was the feedback time. Back in University, even a small piece of coursework could take months to get feedback from a lecturer. I was expecting perhaps a 3–7 working day turnaround for Udacity. Instead, within 90 minutes my submission had been approved and I had passed! I don’t expect this turnaround all the time, but it beats my university experience by miles.

Lectures, and teaching quality

Back in my days at University, there were basically two measures of the quality of a lecturer: Whether they cared about the subject, and whether they could actually teach.

My experience of Chemical Engineering lecturers.

So you can divide them into four categories:

  1. Passionate teachers who care about subject: These were the ideal lecturers. They knew how to actually teach, and cared enough to go the extra mile. They’d also find interesting ways to convey their teachings.
  2. Passionate teachers who don’t care about the subject: Often, the department would force boring topics to be taught by the best lecturers. Reluctantly they’d do it, but they might not even know what they’re talking about.
  3. Rubbish teachers who care about the subject: These were people who knew their subject matter, but were bad teachers. Sometimes because they were such an expert they couldn’t level with the student. Or it could be poor English or terrible handwriting. Or because reading off 10000 powerpoint slides is not how to teach.
  4. Rubbish teachers who don’t care about the subject: These are absolutely the worst, and everyone’s life gets harder when these lecturers are involved. They might only care about their research, or be conning the university somehow.

You’ll see above I actually plotted above an estimate of the distribution of what I experienced during my time at university. Because a University isn’t squared on learning, it can be a mixed experience. In general, since the majority of lecturers tend to fall in Categories 1–3, it means you’re able to get by fine on the majority of topics.

What about Udacity?

Udacity, on the other hand, is based entirely on the learning. This means they’ve cherry picked the best lecturers to teach about topics. Even the Udacity staff themselves, who do the inductions, are cogitative. The quality of the Georgia Tech personnel really shines through here, and I can safely say you can expect almost every lecture to fall into Category 1: great teachers who love the subject matter. Even in cases where the teaching is confusing, Udacity happily leverages the wealth of online resources available on a topic.

The videos themselves tend to be well thought-out in their production. I’ve done MOOCs before, and they tend to be Powerpoint combined with a webcam. Udacity have clearly mulled over the way they deliver their videos, resulting in carefully edited delivery with a well-timed audio track. They take an interesting approach, where the lecturer interacts directly with the environment:

Lectures involve information being displayed on the screen, overlaying the teacher. This works really well, and allows for a tighter interaction with the subject matter. It makes understanding much easier. I’m not sure if this is Georgia Tech or Udacity’s doing, but it’s great.

The lectures are broken up my several quizzes to keep you engaged. These can be multiple choice, or a calculation to enter in a textbox. Typically, there’s only one correct answer. This only works as well as you’d imagine.

I think using “trollface” may have been more appropriate here.

When you get the answer correct, brilliant! When you don’t you’re left scratching your head and having to “Try Again” with minimal or confusing feedback. I found this quite frustrating with some of the more ambiguous questions, such as “Does this calculation have a simple equation?”. I got it wrong because what I deem to be simple wasn’t to the lecturer.

Of course, there’s always the Discussion Forums if you have further queries, which I’m yet to venture into. But you’d have to be prepared to wait for a satisfying answer over what you’re struggling with.

Overall, I was pleased with the quality and delivery of lectures. The quizzes, while flawed, are a welcome addition. Whereas normally in lectures I drift off and start thinking about Jon Snow’s struggles, I’ve found myself thoroughly engaged thus far.

Interface and Learning environment

What about the actual website interface, and the delivery platform? Overall it works well, but it’s rough around the edges. One example is that the content is delivered via YouTube. This is a sensible choice, considering how great YouTube is at streaming video. However, fullscreen mode doesn’t work properly because you’re frequently kicked out onto the next lecture.

In my introductory hours on Udacity, I found many of these puzzling design decisions. They don’t make the experience bad as such, but it’s not what I would expect from a premium learning service. They’re teaching Computer Science subjects, yet can’t get the website perfected?

Here are some further examples of things I’ve noticed:

  • The estimated completion times are off-base and misleading
  • You can download files for offline usage. Except my download had half the lectures missing.
  • On a Quiz section, pressing ‘Enter’ to submit an answer instead refreshes the page and replays the video. You’re actually meant to press the “Submit your answer” button on-screen. This is infuriating.
  • Despite having finished the Titanic project, it asked me to do it again.
  • I found several broken links throughout the interface.
  • The built-in Python IDE is devastatingly small so you can only see 30 lines of code at a time.

Mobile App

I had a trip on a train which seemed like an excellent opportunity to test out the Android app on my phone. TLDR: The app works, but nothing more.

It’s bearable, but you’ll basically be rushing back to your desktop as soon as possible. I’m not talking about trying to do coding exercises either, where using a phone would be daft. Just watching the lectures, I encountered the “fullscreen” issue mentioned above, only it was twice as infuriating. The app basically only works in portrait mode — so you’re viewing tiny thumbnails for videos of lectures. If you fullscreen, you find yourself with misplaced quiz UI elements and hand cramps from rotating your phone constantly.

What’s worse, having completed a topic on my phone, it didn’t seem to sync my progress properly with the web app. I even redid the course on the web app, and it still won’t acknowledge my progress:

As you’ll see above, there’s a gaping hole in my progress which I can’t correct. Although it won’t affect my credit, it’s incredibly annoying losing the satisfaction of completing each part.

So the overall interface for the web app and mobile app isn’t perfect. I expect them to improve this in the coming months. Having said that, it won’t create a negative learning experience.

Conclusion

Overall, I’m happy with my experience of Udacity thus far. And it mainly comes down to the quality of the lecturing and the interactive learning style. Based upon these experiences, I would recommend it. But I still need to complete a major project, so you may want to follow my blog as I document my experiences before jumping in.

In future Udacity posts, I hope to evaluate whether the quality remained strong, and think about some other aspects:

  • Compare it to distance-learning universities, rather than just traditional
  • Compare it to another “Teach Coding” website
  • Talk about my work on one of the core projects
  • The helpfulness of the private discussion forums

Disclaimer: This article was written whilst on a free trial of Udacity.

--

--

Engineering grad and closet tech-geek who’s crawling through the adventures of life. http://lnked.in/danny