A few years ago, a Greg Coladonato and I were bored at work flipping through some interesting machine learning papers (Holy cow! It’s possible to build SOTA machine translation systems without any human translations!) and decided that the best course of action would be for us to re-enroll in school and start writing these papers ourselves. Fortunately, thanks to Georgia Tech’s efforts to expand access to a computer science education, this was totally possible. For around $1,000 per semester, we could take online classes part-time through Georgia Tech’s OMSCS program and graduate with master’s degree specializing in machine learning. What’s the catch?
Well… There really isn’t one. I recently graduated two and a half years after enrolling in my first course and I would strongly recommend the program to anyone who can put in the time. There were definitely some moments where I wanted to quit (trying to knock out the first six weeks of work in ML4T and KBAI in two weeks to let me enjoy our wedding and honeymoon in peace tops the list), but overall I was super impressed with the OMSCS and my fellow students.
That said, OMSCS is trendy enough in my social circles these days (I get asked about the program by colleagues and acquaintances once every few weeks) that I wanted to leave prospective students with a few lessons I learned along the way.
Take a class rated as hard or medium on OMSCentral early
OMSCentral is the authoritative website to learn about OMSCS courses (much more so that Georgia Tech’s own). Many students (including myself at the time) believe that the easier courses serve as prerequisites for the more difficult ones, so it makes sense to sort a proposed course list by difficult and traverse from easy to hard. Do not do this.
Not only do the courses not build on one another (this was true of my graduate chemical engineering courses as well), but the easy courses will not give you a feel for what you will have to endure later in the program after having already invested a year or two of your life.
The hard courses are 10x more difficult and time consuming than the easy ones
This is a closely related corollary to the lesson above. Similar to how humans have trouble understanding exponential growth (or “The greatest shortcoming of the human race is our inability to understand the exponential function” in the words of Al Bartlett), we also have trouble understanding what 10x more work actually feels like. The easiest course I took in the program was Artificial Intelligence for Robotics, which I estimate required 2-3 hours per week. This is easily doable while working full time, maintaining a social life, keeping a house in order, playing a tennis ladder, and so on. The hardest course I took was Machine Learning, which weighed in at 20-30 hours per week. This will consume every free moment and leave you too drained to pursue any other intellectual pursuit.
10x can get thrown around casually, but different courses will have a massively different impact on your lifestyle. Remember that.
Graduate Algorithms isn’t too bad (and is a great course)
Graduate Algorithms will almost certainly be the last course you take and has earned a reputation as being a barrier to graduation for many. You can search class forums and find horror stories of people who have attempted the course multiple times and eventually switched specializations to avoid the requirement.
The fact of the matter is that GA is different but not hard. The exam questions are right out of the (thin) textbook and the instructors never pushed us the way that we were pushed in other courses. To pass, you only need a 70%, which should be easily doable by anyone who spends a few hours a week learning the material. It may feel weird swapping your laptop for a pen and paper for your last course, but I really enjoyed learning the material and think you will, too.
You only get 10 classes; use them wisely
10 course may seem like a lot when you are just beginning (it did to me). I took Computer Networking and Information Security my first semester because they both seemed interesting and relatively easy. While I really enjoyed the Information Security projects (not so much for Computer Networks) and now feel special knowing how to execute a stack overflow, RSA, SQL injection, and cross-site scripting attack, I wish I replaced these two with Artificial Intelligence, Deep Learning, Operating Systems, or another course more closely related to my interests.
I would recommend laying out a realistic 10-course plan prior to your first semester that takes your likelihood of getting into each (registration limits mean that many courses will not be available your first few semesters).
Leverage your fellow students
OMSCS students descend an interesting funnel. Because admission is so easy and the initial commitment is so low, the quality of student in the classes available to n00bs is pretty low–so low it can be frustrating. However, by the end of the program, your classmates are almost guaranteed to be exceptionally sharp and motivated. For example, in my Graduate Algorithms section, students were competing on Piazza to solve every problem in DPV. No way that that happens in on-campus programs.
Students finish OMSCS because they love learning not because they need a visa, want diploma (to some extent), or need to a job. Connect with your fellow students, work on projects together, and enjoy your newfound community of curious computer scientists.