Self-Driving Car Engineer Nanodegree Term 1 Review

Jessica YungCareers, Self-Driving Car ND1 Comment

Jaguar-car-770663

Many people have asked me what I think about Udacity’s Self-Driving Car Engineer Nanodegree (SDCND). This review aims to help you make a decision as to whether or not to enrol in the first term of Udacity’s SDCND.

In short, I think that if you are considering it because you want to work in the self-driving car industry and you are serious about pursuing that, it is likely worth it. Otherwise, it is less likely to be worthwhile in that there are probably better alternatives to meet your learning objectives.

Contents of this post: (click to jump to each section)

valuable_for_you.jpg

What will you learn in Term 1?

Term 1 covers two topics, Deep Learning and Computer Vision. (Here’s Udacity’s curriculum). The videos include excellent graphics that visualise concepts and explain the content reasonably well. You will need to implement the models to understand them.

Disclaimer: It’s likely Udacity has added supplementary content since I completed the first term.

1 Deep Learning

Typical_cnn

You will learn:

  • What the key components of a neural network are and how to implement a simple neural network in pure Python (without using TensorFlow or similar libraries). Udacity calls this MiniFlow.
  • Convolutional Neural Networks: how they work and how to implement them (via a project: classifying images of traffic signs).
  • How to assess different networks and compare them with benchmarks such as ImageNet and AlexNet.
  • How to use neural networks to solve a moderately open-ended problem (using camera images as input, output the steering angle of a car).
    • What I liked about this is that you have to collect and choose your own data, or at least decide how to preprocess it.
    • Choice of neural network architecture: There isn’t much prescriptive guidance for this project (which is good). You can choose to start from scratch, implement models from papers (e.g. NVIDIA’s pipeline) or copy them from GitHub repos (Comma.ai’s model).
    • Udacity now gives you one-page guides on e.g. how to use generators in Python. Generators let you load images as you need them as opposed to saving all 10,000 or so in memory. This is important: if you don’t use generators your machine will likely run out of memory and you won’t be able to run your model.
  • How to work with other software, e.g. Udacity’s car simulator.
    • They won’t explicitly teach you how to work with other software, but you’ll gain experience connecting to Udacity’s car simulator and can ask questions about it in the Slack chat and forums.
screenshot

Just keep swimming! (Do not try this at home.)

2 Computer vision

(Disclaimer: I have less experience in computer vision so I cannot say how Udacity’s offerings compare with other courses or industry standards.)

The emphasis is on teaching procedural techniques. You will learn:

  • How to detect lane lines and detect cars (draw boxes around them) in images and videos (via three projects).
    • Examples of techniques you’ll learn: Un-distorting images, detecting edges, using different colour spaces.
  • How to integrate an ML model into a computer vision pipeline.
visual_display_output.png

Detecting and tracing lane lines using computer vision (Term 1, Project 4)

vehicle_detection_halfway.png

Halfway through detecting vehicles using computer vision and machine learning (Term 1, Project 5)

  • Other skills you should learn implicitly in the Computer Vision section include:
    • (1) Systematically and intuitively tuning parameters or choosing what features or colour spaces to use (which is pretty important in ML etc in general).
      • This is arguably more important here than in the Deep Learning section.
    • (2) Writing your own functions to e.g. fit lines to points. Specifically, you will need to trade off accuracy in fitting the ‘best line’ for lower model complexity. You will also need to take outliers into account.

Big caveat: Udacity doesn’t teach you how to do this explicitly. You need to learn this on your own while working on projects and discuss approaches with other students, your mentor and your reviewer.

Unlike the Deep Learning section, all the content here is taught explicitly in the context of self-driving cars. This is because the content was created specifically for the SDCND, whereas many of the Deep Learning videos were created beforehand.

Comparisons with Udacity’s free offerings and what I know of other Deep Learning options

Which content is available for free?

Almost all the deep learning video content is available as part of Udacity’s Deep Learning course (free). The tutorial on implementing a neural network in pure Python and the guides on practical techniques (using generators, balancing your data) are not.

None of the computer vision content is available for free. Udacity has a separate Intro to Computer Vision course though.

Resources to check out:

Book_boy_reading_cartoon_book.jpg

Is Udacity’s Self-Driving Car Engineer Nanodegree worth it?

A framework and questions to evaluate whether or not the SDCND is right / worth it for you

car-finance-3

Let’s consider whether it’s worth the $800/term fee. There are two ways to frame this.

(1) Cost-pricing: Can I get a more helpful set of resources than this for cheaper than $800?

(2) Market / value-pricing: Is it worth more to me than the $800/term fee and the time commitment?

If you go the cost-pricing approach, it is highly likely you will be able to put together content of a similar standard for a lower monetary price by trawling through students’ blog posts, looking through their GitHub repos and talking to people on Slack. You could even complete the projects – all the source code is available on Udacity’s GitHub.

You don’t get the intangible aspects: the project reviews, help from the forums, the targeted Slack channels (community) or the career services, which are arguably the most valuable part of the course and are hard to price. The price (and hence the value of joining the program) really depends on how involved you are. The more involved you are, the more it’ll be worth (and the more you’ll get out of it).

If you go by the value-pricing approach, you might compare the total cost of the program with the expected additional value (salary, personal satisfaction, career capital) from you getting a job as a self-driving car engineer x the probability of you getting that job. $800 is highly non-trivial, but if you do land a solid job as a result of joining this program you could gain much more than $800.

Asides:

  • That doesn’t mean you won’t get a job in self-driving cars if you don’t join. You’ll have to try to assess what skills you still need based on job requirements (and preferably interviews and talking with people in the industry), see how you might best fill in those gaps, and implement those steps. If you do that well you’ll probably get the job, Nanodegree or not. 
  • If the probability of you landing a good job is to be high, you need to be serious about this and to be willing to commit to it. If you’re not serious about this, the ND is not going to get you there. You can definitely complete the program and walk away with little additional understanding.

Content: ‘advanced’ vs ‘appropriate’

Content-wise the first term is not that ‘advanced’, but that’s not the point – the point is to teach you everything you need to know to get a job as a self-driving car engineer and be able to start well. And Udacity seems to be doing a good job at that. (1) They’ve partnered with companies in the industry so the program is targeted to industry’s needs. (2) I know a few people who started in October 2016 who have landed jobs in the self-driving car sector (as of June 2017). According to them, Udacity’s Career Services are very good. (I haven’t tried them myself.)

Content vs Intangibles

cool-cartoon-2777414.png

As mentioned above, if you go cost-pricing and look only at content, it’s probably not worth the price tag. But if you look at intangibles, it might be well worth it. Here are the intangible benefits in descending order of value:

  • Career services (?) -> connections with employers such as Mercedes Benz, Udacity’s sheer drive to get their students jobs. I’ve put this at a top because I’ve heard good things about it and it could potentially be really helpful, but I don’t have a good grasp of how good it is.
    • Caveat: It is obviously not possible for Udacity to guarantee that all their students will get jobs. You are not guaranteed a job if you complete their program.
  • Community on Slack
    • Getting to know people who are motivated and interested in the field is incredibly valuable. (You could also find these people by messaging people who have written great blog posts or write-ups or who have done well in related competitions.)
    • People post about their problems, solutions and extensions to projects in each project’s Slack channel. That’s useful for improving and testing your knowledge of that area.
    • Preview: Join nd013.slack.com, which is the Slack chat for people interested in joining the SDCND. Many of the active students are also on that chat.
  • Project reviews
    • You will get valuable feedback (code reviews, suggestions for improvement and on how to correct your mistakes). Feedback is extremely important. Make sure you get it regardless of whether you join the program, e.g. through showing your work to friends.
  • Learning to present your work via project writeups
    • Learn to write read-able reports! Read other people’s reports and you’ll realise how important it is for a report to be clear and structured. If I can’t read your report I’m not going to get much value from it.
  • Motivation (deadlines)
    • Especially useful if you always want to do things but keep putting them off. You will be more likely to complete this program if you pay for it and know that you won’t be allowed to continue if you don’t complete the term on time (allowing for one four-week extension).
  • Forums (ask questions)
    • You will often get answers to your questions within two days from other students, many of whom are experienced developers. We even have a uni professor in our cohort.
    • The answers may not solve your problem completely, but they will likely point you in directions you have not considered before. This will likely save you hours of frustration each time.
  • Mentor
    • Your mentor is there to give you advice about how to make the most of the ND. If you ask questions often and if they’re good, you can get excellent advice on best practices for tackling problems, studying, discussing and working with other students, building your portfolio or interviewing.
  • (Semi-intangible: Udacity has put together all the information you need to start work as a self-driving car engineer, and they’ve done this by partnering with employers. The portions of the big topics they teach are tailored for this application, so you’ll know what you need to know.)
    • I’ve mentioned this before but it’s important and worth mentioning again.

Value of the qualification in and of itself

Sometimes just having a qualification can have a high signalling value in that people will . Here I do not think that the certification will get you a job. It may get you interest and an interview, but you’ll need to prove yourself from there. Even when it comes to interviews, I’m not sure – I think people are beginning to learn more about these programs but at the moment the term ‘nanodegree’ is still confusing and if people think it’s just some random MOOC they probably won’t take you too seriously.

Aside: At this year’s Microeconomics exam, we had this fab question: ‘What you learn is irrelevant, the sole benefit of a Cambridge education is to earn a degree with Cambridge written on it’ Comment.’ Too good.

Questions to ask yourself

3d white people lying on a question mark

(1) Why are you doing this? What is your objective? If it’s to get into the self-driving car industry, great. If it’s just to learn more, you might want to think more carefully, especially if it’s ‘to learn more about AI and deep learning’. Cause while there is some DL,  that’s not the focus of this program.

  • If you are primarily interested in deep learning, I suggest you try Udacity’s free Deep Learning course or a different program. Udacity has AI and Deep Learning Foundations NDs. I’ve also heard Lazy Programmer’s courses on Udemy are good (Udemy often has sales where almost all courses come down to around 15 USD each). There are also a gazillion free resources – might post a shortlist of the ones I found most effective later. Do comment if you’d like this shortlist.
  • An aside: The first time I went through Udacity’s Deep Learning course, I was impatient and didn’t bother to complete the exercises as suggested. As a result, although I could follow the video lectures, I didn’t really understand the material. So, regardless of how you learn, make sure you implement stuff!

Another consideration is (2) how much time you’ll be able to devote to it. If you can only spend 2-3 hours a week on it, you probably won’t get much out of it. You will need to pass all your projects in the first term within 3 months – after that you will not get any extra project reviews (which are incredibly valuable). You will probably skirt over the content, have a very superficial understanding of it, skimp on the project work (e.g. by copy and pasting lots of stuff without understanding it properly) and leave ‘meh’. And you might get stressed by deadlines too. I’d advise you to wait till you can spend more time on it or choose another option.

For some the price may not be affordable. Fortunately much of the content is available online from students’ GitHub repos and posts. If you study hard and talk to other students and people in the industry, you can still do extremely well without joining the program. You can also ask about scholarships. As far as I’m aware they are not currently offering new scholarships (as of June 2017), but I’d advise you to ask – you never know when they’ll next offer them. If you’d like to find out more about the NVIDIA scholarship, feel free to send me a message. Other institutions may also be willing to fund you.

The End!

Congratulations for getting to the end of this post! It turned out to be longer than I expected, but given this is a high-cost and high-commitment decision, I decided it would be better to include more information rather than less.

If you found this helpful or have any questions, do message me or leave a comment. I want this post to be as helpful as possible and I can only do that with your feedback. 🙂 All the best!

Feature image credits: CarCanyon

One Comment on ““Self-Driving Car Engineer Nanodegree Term 1 Review”

  1. Jingning Tang

    Hello Jessica,

    Thank you for your reply to the comment I made in the other post and writing such detailed post to share your experience. After I commented on your last post, I also did some research by myself. Since I am transferring my career from circuit design to deep learning field, both AIND and SDCND could be useful for me. Although AI may be more directly related to deep learning, the SDCND is interesting as well, especially the Kalman filter in C++ implementation in Term 2. Sounds like a good project. I am more to follow the SDCND for now but the career service seems like a waste for me now because I am destined to go to grad school next year.

    Anyway, thank you for spending a lot of your personal time sharing your experience. It is also really helpful to look through your GitHub repos to understand these NanoDegree.

Leave a Reply