This is an update on what I'm doing since my main focus probably won't amount to many articles. But before I get into algorithms I'll go over other things I'm currently looking into.
Machine-learning
Recently I was able to attend a presentation by Jeff Dean of the Google Brain project. The talk was exciting as it was a crash course in various machine learning projects carried out by Google, with strong lists of measurable benefits. From improving Google translator, breaking language down to the root idea behind phrases and not word by word translations, all the way to diagnosing diabetic retinopathy better than physicians. I took a lot of notes on their development of specialized computer chips (TPU's) that are designed for Tensorflow, an open source machine learning library also designed by Google Brain. But the most exciting part here isn't possibly buying a TPU, not happening, but perhaps accessing one using their cloud through which they're making 1,000 TPU's virtually available. For free! Check them out here.
So I immediately started playing with tensorflow, but that was a little too forward so I've decided to stick with scikit-learn and complete some Udacity courses using it. I figure it'd be better to stick with scikit-learn and potentially switch to tensorflow once I have a grasp of machine learning in practice.
Algorithms
However at this point I was following up on some of my hiring research, which led to studying how to evaluate employees for technical interviews, a big and expensive problem for companies who are the most advanced when it comes to data analysis and solving complicated problems. Long story short, companies evaluate potential hires on algorithmic understanding and clarity in explanation. And it turns out I'm bad at algorithms. As far as I know. However a lot of this data science journey has been tackling things that are difficult and learning them well enough to demonstrate they've been added to my toolkit. If learning algorithms makes me a better programmer then it goes into the Skills priority queue.
So far I'm pretty blown away and a little embarrassed how bad my ideas of programming were. The problem of learning superior programming looks right now to be an ever deepening Matryoshka set, but I see light at the end of the tunnel.
Some resources I've come across that I'm working through:
-
MIT's open courseware Intro to Algorithms
-
Stanford's Coursera Algorithms
The MIT one is deceptively shallow as course notes, recitation videos and practice code is available off youtube.
Then of course I have a few textbooks in pdf form.
-
Algorithms - Dasgupta
-
The Algorithm Design Manual - Skiena
-
Algorithms and Data Structures - Mehlhorn
My strategy to learn this is simply to power through both the Stanford and MIT courses at a fast pace, then if anything isn't sinking in just go sideways into the textbooks. So far so good!
Goals: Better algorithms, write my own efficient algorithms or improve those of others. Write better programs. Become a sharper scientist. Eliminate weaknesses from my toolkit.
Comments
There are no comments yet.