The clock is ticking. Are you ready?
def time_to_first_class():15 days, 9:30:08.306933 left until November 2016 SDC nanodegree starts', depends when you run it..
today = datetime.now()
start_date = datetime(2016,11,28,0,0,0)
if(today > start_date):
print 'The class has already started! Are you sure you are on top of things!?'
elif (today == start_date):
print 'The class is starting now! Go to the Udacity website!'
time_to_start = start_date - today
print time_to_start, 'left until November 2016 SDC nanodegree starts'
#=> print to STDOUT '
Less than two weeks to go. Then there will be no looking back. Unfortunately, there is still no way to really tell what I got myself into. People are very active on the slack channel and that feels great. I recently discovered that there is a channel for people based in Australia, and many more!
Over the past couple of weeks, you should have received a link to download the student handbook. No major news but a summary to get everyone on the same page. Sure worth reading. I hope you have not missed transmission?! Oliver Cameron newsletter is now published weekly and you ‘ll receive some cool facts, stories and articles about self-driving car, machine learning and anything in between.
If you have not already, do check your emails again!
I suppose this is all good news but to me a major question remains… What do I (you?) need to do to get ready?
First thing first, if you haven’t notice already, go and read the curriculum. David Silver has published a more detailed curriculum for the first of the three terms of the course. So, that first term is all about Deep Learning and Computer Vision. Yes, we jump right into it! The Deep Learning course contains two projects that we should complete using some deep learning algorithm. The first project consists in designing a convolutional neural network to classify traffic signs. The second project is about cloning the behaviour of a car. The Computer Vision course uses OpenCV for the image processing and it has also two projects, that require both image processing and machine learning to be completed. These projects involve lane detection and vehicle tracking.
You should definitely read the curriculum, but truth been told, this is not really telling you anything else but that there are topics you want to study. Sure, now you know and you can jump start and study on your own. Rather I think one should rather get prepared, otherwise what’s the point of taking the nanodegree. The fun part if to come, you’ll have the class, you’ll chat with the instructors and follow their direction until hopefully you become somewhat of an expert, or at least an informed engineer.
So really what are the course the course requirements?
Well, the way I see it, you should now some about python and some about machine learning. You can go about and search the internet for resources, yes indeed you’ll find plenty. I did check the Udacity website and browse some of the courses out of curiosity and I was quite pleased with what I found. Literally everything you need is there available as free courses.
My advice. Go and watch these two courses:
Well this is really giving you just a python refreshed and some fun understanding of deep learning and how it can be used. I am guessing that for most of you it is really all you need. The first of the two courses will show you some neat data manipulation in python while the second one already gets you familiar with some very advanced deep NN concept and the tensorflow API. For as long as you have some coding experience and some understanding of machine learning it should do the trick. I’d love to comment about the computer vision course, but I completely missed it! Well there is still a few more day to watch the videos!
Now for all of the other people who may need a bit more help, the answer can also be found on the Udacity website!
As I have not taken any of this courses it is hard for me to comment. Having said that, I am confident vouching for the guys at Udacity… and so are you, you are taking the nanodegree!
So if you haven’t already, you should search the Udacity website for courses that you need. The list above will get you started, then I suppose it is a matter of taste and time. If you are part of the November cohort, it is tad late to do all that, so maybe focus on just two courses of the list. If you start later, go ahead, enjoy.
Well now you know everything you need about getting ready… almost
I took it as a side challenge to get of my local system ready for the class. I don’t believe you need to do all that, but I can tell you that it is fun (and I won’t lie, frustrating at times). I got this laptop with plenty of RAM and a Geforce and that runs windows 10. It is all nice and working just fine… until you want tensorflow or some advanced machine learning libraries. So while getting ready to start the course I did prepare a new setup running linux, pycharm, jupyter notebooks, tensorflow on a Ubuntu 16.04 OS. It is all working now, and I must say it was way easier that I anticipated. I stayed away from linux for year, pretty much since I left uni, yet it was all accessible, there of plenty of very useful help available online.
I don’t recommend you do that, but you can. The following is about my setup. The software that I have in my stack and about what’s available for you out there. Except for a few exceptions, you can get all that running on either Linux, OSX or Windows.
Well I got to say I have not been using linux much since I finished my studies. Back then the HPC cluster was running a flavour of linux, but since, I have pretty much been between OSX and Windows and mostly happy with that. As it turns out some of the data science libraries don’t work on Windows, so I thought that I should give linux another go. I picked Ubuntu to make my life easy and I am not looking back. It is easier to use that I thought, and a lot of what you need just works, even installing cuda and tensorflow was manageable. Don’t worry, if you don’t want to make that change, Udacity got you covered. As I understand they have a docker container ready for the course. You don’t know docker… it is a little bit like vagrant. Just joking. Well I mean it is, just think about it this way. It is an application that runs on you Windows machine in your windows session and within that app there is a full OS running all the stack you need.
I don’t know about you but I’d rather enjoy the benefit of a nice IDE that remembers every method and class of an API. I am not saying that there are no benefits to coding with vim of emacs, but to me life is easier with visual studio if I code .NET (Rider is pretty nice and so is .NET core, but that is another story for later maybe). Isn’t laziness a job requirement for anyone who write codes anyways!?
So again the emacs die hard out there, don’t feel offended, I just like the convenience of pycharm when coding python. I think it may help you for the SDC nanodegree. You do want to have jupyter working on your pc though. The notebook doesn’t have the nice autocompletion you get in pycharm but they are really nice to experiments and lot of the online courses out there use notebooks for the homework. If you want to have a look at some other editors, check out Visual Code a pretty good generic editor by Microsoft, atom is also worth having a look at, but my favourite at the moment is definitely Sublime Text. It is not only a smart editor, with lots of built in awesomeness that will make you edit file quicker, it is also extendable and the list of available plugins is pretty impressive. So much that you can turn it into a fully featured python IDE.
It certainly helps having a GPU on your machine. In the days and age of cloud computing I believe we should only have machine with nice displays and all the hard computing work would be done on a dedicated machine in the cloud. Sadly, there is still a lot to go before this is true. It is not yet all that easy to deploy a machine (it is not that hard providing you are willing to learn), it is not that cheap either for individuals yet, and depending where you are in the world, your internet connection may simply prevent you from accessing the cloud with the comfort you need to do productive work.
So Cuda computing. Well there is really nothing special about installing the toolkit. Click click download, click again, copy in at the prompt in the shell, and voila. Do remember to restart after installing. I forgot and had some weird behaviour for a while.
You’ll also need the cuda deep learning library cuDNN. Don’t worry about it for now. All you need to know is explain when installing tensorflow. It takes a few steps to get it working but it is actually fairly easy providing you read and follow the tutorial.
There is quite many libraries you should install and more importantly get familiar with. Numpy scipy and matlplotlib are a must. Then, you need to know about Pandas, pandasql the minute you start manipulating data. Then comes everything related to statistics, data science, and machine learning. So do install statsmodels, keras, Theano, tensforflow, scikit-learn, and OpenCV for image processing. Language features are also important, so you should try to get familiar with python. The python is by far not the perfect and universal answer and has many flaws, but there is no denying that it is great for doing data science. If I had to mention only one single feature that you should add to your python tool-belt, it would be lambda expressions.
Don’t hesitate to shout if you need help with any of that.
That’s it. I believe that if you have done all that you should be more than ready to get started. One last thing, remember to have a look at your personal schedule and check some time in during the week where you can be fully dedicated and focus to the nanodegree. 10 hours is the guideline, and apparently, all you need to be successful.