github linkedin flickr email rss
Georgia Tech's OMSCS

“Ugghhh. Why won’t this work,” I disgustedly say as I push myself away from may desk and walk back to my kitchen to make another cup of tea.

It’s 10 pm on a Sunday night and I’m working on an assignment due in my Computer Vision class tomorrow. The plan was to have had it all wrapped up by 3 pm, but the clock swiftly rolled past that milestone as I struggled to morph one image into another.

Feelings of frustration and struggle are nothing new for students. As a Math major in college, I’m intimately familiar with both feelings developed over hours of trying to conceptualize concepts that cannot be visualized. The difference is now, these feelings add to the stress that we each have from our work. And unlike many jobs we held in college, when we leave the office our shift isn’t over. Instead, we now just consider the challenges facing our companies from a new location.

The new online Master’s of Science degree offered by Georgia Tech isn’t some watered down version of the on campus experience. It is a faithful copy of the work and content that on campus students are exposed to. It’s hard. It’s unrelenting. And extremely valuable.

Outsiders are sometimes dismissive of the program thinking that it will dilute Georgia Tech’s reputation by translating their prestigious program into a Massively Open Online Course (MOOC). These people miss two important aspects.

It’s not a MOOC

It’s easy to see some video lectures and an enrollment that takes place online and conclude that this is just another set of MOOCs. However, the program is actually neither massive, nor truly open. Classes are limited to about 200 students, no larger than big undergraduate courses. As students are added so too must an army of TA’s be recruited to help answer questions and grade deliberately subjective assignments.

For example, in a course called “Knowledge Based AI” I ended up writing more than 100 pages explaining different aspects of the rapidly growing field. Topics ranged from discussing the architecture of SOAR to different planning techniques to how I implemented different cognitive processes in my AI agents that I developed over the course of a semester. Obviously, this type of essay content isn’t typical of a MOOC since it cannot be graded automatically.

Moreover, unlike say Chemistry 102, the professor isn’t teaching to the lowest common denominator. The professor lectures at a level independent of the student; the level at which they feel the material should be understood. Since the lecture is pre-recorded, there are no tangents or derailments due to questions. The end result is an extremely information dense lecture. Some professors estimate that they cover an hours worth traditionally delivered material every fifteen minutes. When the average weekly lecture length for the OMSCS is 3 hours, it’s easily to realize how this adds up.

It’s a skills based world

The second dismissal leveled against that program is that it somehow dilutes the value of the degree. This is flawed logic resting on the concept that the value of a degree resides in it’s scarcity. This prevalent mode of thinking has been perpetuated by the drive to go to ultra-selective universities and use the credential as a fast pass to a great job.

Arguably, software development bucks this trend since it is a skills based profession. Even if you went to MIT and somehow managed to graduate without knowing how to code, you wouldn’t be hired. Almost every technical position requires candidates to demonstrate their skills by coding on a whiteboard, solving a toy problem, or completing a project.

Instead, the OMSCS program does away with defining the value of the degree based on scarcity and instead defines it based on the level of the content. In short, if you can hack it in the program, you deserve the credential regardless of your previous background, legacy status, or luck.

Hacking it

Doing well in the program isn’t easy either. While some classes are not very difficult, others, like Machine Learning or Computer Vision, are notoriously difficult.

However, one aspect that all courses have in common is that it requires a degree of self-discipline and motivation that isn’t needed in a residential program. Projects needing 50+ hours of work are common and appear multiple times in each class. And if you don’t have the foresight to start working 2 weeks out it shows in your results. On campus, you’d be able to judge how much work everyone is putting into their assignment. Here, nobody but you and the TA know that you turned in a half-completed assignment. In classes where peer grading is employed, I’ve seen this situation many times. So it is essential that you take pride in your work in order to succeed.

Another difficult problem often arises from group work. Even with students spread out around the world, there are still many group projects. Personally, I think learning the skills required to work asynchronously is one of the most applicable and valuable things students gain from the program. But, even when this huddle is overcome, teams still must bridge the gap that exists in backgrounds and experience. Sometimes this means that the more experienced members will shoulder the bulk of the work while those in unfamiliar territory take on only a simple or non-technical task. While, this can seem unfair at times, it helps to remember that building software is a team sport and that ultimately you will gain a great deal by taking a leadership role. My background as both a full stack developer and product manager helped tremendously to navigate these tricky waters. My only advice is to try to get at least one other person on your team who has a similar level of experience so burden and mentoring can be split.

So is it worth it?


You will certainly learn a great deal, but much of the knowledge is theoretical and likely out of the realm of what you deal with on a day to day basis. However, this is likely true of any Master’s program and isn’t really the point of it. So the more important calculation is if your goals are really in line with getting a graduate degree.

If your goal is to become a rockstar developer, you’d be better served by just throwing yourself into a startup with a technical lead you really respect.

However, if your goal is to be a more well-rounded engineer and just want to satisfy your intellectual curiosity, go for it. But, think twice if you are short on time or self-discipline because without these two ingredients the program is not going to serve you well.