M2M Day 182: Attempting to build a self-driving car

Max Deutsch
3 min readMay 2, 2017

--

This post is part of Month to Master, a 12-month accelerated learning project. For May, my goal is to build the software part of a self-driving car.

Today, I start a new month and a new challenge: Can I learn the necessary computer science to build the software part of a self-driving car in one month?

Defining success

To fully build a self-driving car, I would need to build 1. Self-driving car software, and 2. Self-driving car hardware. The software would use sensor and input data to algorithmically generate driving instructions, and the hardware would execute these driving instruction within the actual car.

Since much of the technical challenge is actually in the software part (and also because I don’t own a car), I will be exclusively focusing on the software part for this month’s challenge.

In particular, I want to build self-driving software that can do two things:

  1. Based on video input of the road, the software can determine how to safely and effectively steer the car.
  2. Based on video input of the road, the software can determine how to safely and effectively use the car’s acceleration and braking mechanisms.

I may attempt to tackle each of these pieces separately or together. I’m not sure yet. I’m also not completely sure the specific details of each of these sub-challenges, but I will flesh these details out more seriously once I’ve done some initial research.

There may be other important considerations for self-driving car software that aren’t included in these two buckets, but these are the items that I will be focusing on this month. From these items, it’s clear that I’m mainly looking to learn how to use machine learning/deep learning to solve computer vision problems (I will explain what this all means in a future post).

My starting point

Building self-driving car software clearly requires some amount of computer science knowledge, and, in this regard, I’m not starting from scratch.

Firstly, my degree from Brown is in math, which is quite helpful for this particular branch of computer science. I also have a general coding/computer science background, which will certainly help me.

Most interestingly, last summer, I published a few pieces of fan-fiction that I generated using a relevant machine learning technique — like this AI-written Harry Potter chapter — but this was mostly a testament to the availability of high-quality open-source code, and not my machine learning knowledge.

Last summer, I also took a math-based course on deep learning (deep learning is a sub-category of machine learning… which is a subcategory of artificial intelligence… which is a subcategory of computer science). This course was interesting, but it was purely theoretical, not practical.

This month, I’m heavily focused on application, not theory, and on computer vision, which is something I have zero experience with.

Basically, I have some foundational experience, but not enough experience to know where to start (this will require some research over the next few days).

Anyway, I have no reasonable estimate of how hard this is actually going to be, so this will certainly be a fascinating month. I’m excited to get started…

Read the next post. Read the previous post.

Max Deutsch is an obsessive learner, product builder, guinea pig for Month to Master, and founder at Openmind.

If you want to follow along with Max’s year-long accelerated learning project, make sure to follow this Medium account.

--

--