After 10 years working as a professional software engineer, I enrolled in Georgia Tech's Online Master's in Computer Science. I was motivated by the large gaps in my knowledge that I was not able to fill by self study despite numerous attempts. While I earned an undergrad degree in Computer Science, I have never written a compiler, dug in depth into operating systems concepts, gone beyond intro to algorithms, or delved into AI/ML/RL at all. A CS grad from MIT might very well graduate with all those skills but I went to a middling university and got well, middling grades. After 10 years in the field I am a Hell of a lot more motivated and also much more genuinely interested in the subject than I was at age 20 when I just enrolled into intro to CS because I couldn't get into an Econometrics class.
I am four classes into OMSCS program and I have to tell you that on the whole it is fucking amazing. The classes are hard, my classmates are super engaged and helpful, and I am learning a lot. Did I mention that the program is cheap? Only $180/credit hour which adds up to only $8,000 USD for the entire degree. That low price means that the OMSCS can attract very smart people from all over the world who can't take out student loans or don't have the means to drop $21K on a graduate degree. That low price also means that Georgia Tech is serious about attracting the best students not just those that can pay.
I am surprised that the OMSCS program 1) doesn't get more attention and 2) isn't copied by more institutions. Let me clarify by what I mean by "not more popular." On Hacker News and other programming-related outlets there are constantly posts on how to become a software engineer or how become a better software engineer and the OMSCS program only comes up in the discussion occasionally. Further, most of the software engineers I meet in person aren't aware of the program's existence. I suspect that the program doesn't get more attention because it is really damn hard and most aspirants to a software engineering career are looking for an easier way into the field than a 3 year long 20 hour a week slog. If you're lucky like me and can do the program full-time, you're looking at 40+ hrs/week for 2 years. Fuck that, just spend $15k on a six month programming bootcamp and I am sure you will get that FAANG job of your dreams! Sorry friends, it doesn't work that way.
It is worth mentioning that there are broadly two groups of students I have met in the program. The first group are those that are looking to generally upgrade their skills. These people often but not always choose the Computing Systems specialization. This group doesn't have to get this degree to make the next career step. The second group are those that are here for AI/ML. These people are very smart, dedicated, and generally need this degree to get a job in the AI/ML field. Most undergrad programs don't offer AI/ML so this often a student's first academic exposure to the topic.
I will break down my experience so far into the proverbial good, bad, and ugly.
- My classmates are dedicated, smart, and genuinely interested in the topic. In one course, I learned a signicant amount about the topic from a classmate who is a hardware engineer with direct experience in areas related to the course we were taking together.
- Many classes are taught by dedicated professors and TAs who pay close attention to your experience and provide useful and quick feedback.
- Some courses have amazing lectures and engaging projects.
- More courses are steadily being added. Starting next term we will be able to take data science courses such as Bayesian Statistics and Time Series Analysis as electives. A course in Applied Cryptography should become available some time in 2020.
- The class discussions we have on Slack are awesome. Further, the community is very supportive. Some of my classes have alumni channels that are very active and keep people connected.
- The content of some courses is out of date and in need of a reboot.
- Some courses limp along on a skeleton crew of TAs and the professor responsible the course is only minimally involved.
- Dealing w/ the Georgia Tech bureaucracy can be time-consuming. I typically only have to deal with the bureaucracy during registration thankfully.
- The application process was time-consuming BUT I they did let me in and they didn't require me to take the GRE.
- No distributed system course is offered nor is there a plan to offer one. This is a big deal for me personally as it is my professional area of interest.
- This program takes a lot of time and will require you to put off having any personal life for ~3 years if you do it while working.
- The process to register for classes is time-consuming, confusing, and annoying.
- There are some courses of low quality and poor execution. Rather than call them out, I direct you to look at the course reviews at omscentral.com.
- I doubt that prospective employers will be overly impressed by this degree. They seem to only care about LEETCODE algorithm questions. To pass those interviews you might be better off spending a year on codewars. If you aren't interested to acquire the knowledge that this program offers, you are wasting your time and money.
- It is hard as fuck. Doing this degree while working is a huge personal sacrifice. It means putting off relationships for a few years or putting off having a family. Conversely, if these classes are not time-consuming, you didn't need this degree in the first place.
Courses I have taken:
- High Performance Computer Architecture (HPCA) - This class started where the Computer Architecture class I took in undergrad left off. Professor wasn't especially active but his lectures were awesome and the exams were challenging in the best possible way. I got an intuitive sense of how Cache Coherence, CPU pipelining, Tomasulo's Algorithm, etc. work. Our tireless TA, Nolan, did a great job.
- Graduate Introduction to Operating Systems (GIOS) - Super-involved professor, amazing TAs, best run course I have taken. I dug into GLibc and kernel source code and up to my neck into how KVM works. For the first time in my life, I started feeling comfortable working in C code.
- Machine Language for Trading (ML4T) - A class w/ great lectures and great TAs. The originating professor has moved on some years ago to Morgan Stanley and likely a much higher salary. I learned equal parts about finance and the basics of data science. It was a gentle and enjoyable introduction to Machine Learning.
- Advanced Operating Systems (AOS) - This class is amazing and hard as fuck. I spend 20-30 hours a week on it. I am still in the middle of it. GIOS helped me understand Linux but AOS has taken me way past it to get a grip on microkernels, exokernel, lightweight RPC, and more. Just the other day Google put out a paper on its Snap framework and its citations read like AOS's reading list. Just half of AOS prepared me well for understanding Snap and the challenges it is trying to address. The exams in this class are ridiculously difficult.
Next term I plan on taking Compilers and a data science course.
As I noted in the introduction, I am surprised by how little competition the OMSCS has attracted. Here are some notes on the programs that I considered before settling on the OMSCS. I do find it unfortunate that while some other prestigious institutions offer online MS in CS, they generally do not compare in terms of breadth nor cost.
University of Illinois started an online MS in CS in 2019. U of I charges shocking $670/credit hour thus a whopping total of $21,000 for their M.S degree. in C.S. when they do not even offer critical courses such as AI, ML, compilers, Graduate Algorithms, etc. That $21k price tag tells me they are treating the program as a cash cow, not as a real opportunity to reach out to a large swath of students.
I have heard good things about U Texas MS in C.S., specifically that they are serious about AI education. Unlike Georgia Tech, Texas offers a Deep Learning course. Further, Texas only charges $333 per credit hour. That's almost double what Georgia Tech charges ($180/credit hour) but still reasonable. Sadly, Texas only currently offers four courses per term. Texas just started this program in 2019 so it will take some time to mature. Here is to hoping they provide Georgia Tech with some much needed competition.
Arizona State offers an impressive set of courses but I have no information on their quality. At $500/credit hour it is a good bit pricier than Georgia Tech or Texas but not as exorbitant as University of Illinois. My personal suspicion is that any university that charges significantly more than Georgia Tech is seeking students who just want the credential at minimal effort. That said, your diploma from Arizona State or University of Illinois will not specify that you earned your M.S. in Computer Science remotely. Like Texas and Illinois, Arizona State's Master's in C.S. started very recently so it has some growing to do.
I have really enjoyed the OMSCS thus far and if you are willing to put in the work, you will too.