Georgia Tech's OMSCS - Is a Master's in CS for You, and is This the One to Choose?
Getting Started
To get some things out of the way, I’m an embedded software developer and FPGA designer in the aerospace industry. I have a bachelor’s degree in computer science, and I completed Georgia Tech’s OMSCS program in December of 2023 with approximately 7 years of professional experience. This post is going to be focused on part-time graduate programs intended for people who are working full time, but I will talk about how to decide between traditional graduate programs and programs like OMSCS that are targeted at working professionals. I do have minor experience with a couple other technical graduate programs, but OMSCS is the only one I’ve completed so obviously I have some bias.
Conclusions Upfront
I have a lot to say about this topic, so if you’re just here to get some input on your own decision making, here are my two cents. The biggest decision to make is whether or not a part-time master’s degree is for you. I’ll talk about this more in depth, but I’ll say upfront that I think it is worthwhile for a minority of working software engineers. If you have a technical undergraduate degree and you have very specific professional goals that don’t specifically require a graduate degree to achieve there are likely more time-efficient ways to get there. If your goals center around academia or even hardcore research in industry, you really want to be doing a traditional, full-time, thesis-based program. If you don’t fit cleanly into either of those categories, read on. If you have decided that a part-time master’s degree in computer science is for you, I think OMSCS is the one to choose for the reasons of affordability, accessibility, pedigree, the quality of the education, and the community that has grown up around the program. If you want to know more keep reading. I have a lot to say on this topic.
Should You Do a Master’s Degree in Computer Science?
This is obviously the first thing that needs to be established. We need to start by understanding what benefits obtaining an MS in CS will provide and what it will cost you (financially and otherwise).
Financial Benefits
According to Coursera, the average salary in the US of a person with a Master’s in CS is $118,290 as compared to $107,255 for those with a Bachelor’s[1]. According to these numbers, there really isn’t all that much of a difference in salary expectation. Additionally, I have a hunch that this is heavily impacted by selection bias. Graduate degrees are absolutely not the norm in the world of software development, and undergraduate degrees are increasingly becoming a softer requirement than they have been in the past. My unproven belief is that the individuals who go out and get graduate degrees were already likely going above and beyond what is typically expected of professional software developers, and were thus likely to reach higher levels of compensation even if they hadn’t completed a graduate degree. At the large corporation I currently work for, a graduate degree is treated as two additional years of experience which means you might be able to justify certain promotions earlier than you otherwise would have, but it won’t automatically open up any levels of compensation that wouldn’t have been obtainable with only an undergraduate degree. As always, the most effective way to maximize your compensation in the world of software development is likely to change jobs every couple of years, especially in your early career, targeting competitive companies. This is followed by putting in extra effort at your current role in order to be considered for rapid promotion opportunities. I would put graduate degrees behind both of these in turns of return on investment for maximizing compensation.
Career Benefits
Then there are career benefits not related to compensation. It’s much harder to find any hard data on this topic, but my hunch is similar to the financial dynamic. If you have very specific career goals you want to achieve, there are likely more efficient ways of achieving them. Be it a specific industry or technical area you want to break into or a specific role you want to achieve, targeted efforts building and publishing personal projects, contributing to open source, networking, or over-performing at your existing job are likely going to get you there quicker and/or with less stress than doing a graduate degree will. As with undergraduate degrees, graduate degrees are focused on the theoretical, not the practical. Going out and doing an MS focused on Machine Learning is not going to leave you with the demonstrable practical skills to go out and work as a Machine Learning Engineer the day you graduate. The key exceptions to this would be if you have goals that specifically require graduate degrees, such as teaching at the college level, or if you are coming from a non-technical background and trying to get into software as a career, or you’re already working in software without a technical undergraduate degree and want to strengthen your future employability.
Costs
Starting off with the obvious, going to graduate school costs money. I’ll get into this more later, but one of the major pros of OMSCS is how cheap it is relative to other programs. That being said, doing a graduate degree is going to cost somewhere between 10 and 100 thousand dollars when all is said and done. I’d highly recommend prioritizing programs that are cheaper, as the data indicates that school choice for graduate degrees has a relatively minor effect on career compensation. Additionally, many large employers in the US will pay for qualifying graduate degrees so it might be a good idea to try and get a job somewhere that does before starting the process.
Then there is the personal cost. To be frank, if you find yourself with a lot of free time to kill, then the personal cost might be pretty low. If you have an active social life, a family, a demanding job, and/or hobbies that you’re very invested in then the personal cost can be extremely high. I had already gotten married when I began the program and my fist child was born half way through, and I would say the personal cost was extremely high for me. As I tried to meet deadlines, I missed out on quality time with my wife and child, opportunities to get ahead in my day-job, and lots and lots of sleep. I found myself sneaking away to try and complete assignments during vacations and putting hobbies and fitness/health on the back-burner when I didn’t have the time or energy to invest. By the end of the program, I found myself very burnt out and am at this point extremely relieved to be done. Some of these personal costs might be alleviated by doing a traditional full time graduate program, but obviously that has the downside of multiple years of lost full-time income.
So who is a master’s degree in computer science for then?
My opinion is that if you find yourself in one or more of the following groups, you should get your MS in CS.
- You have a specific career goal that basically requires a graduate degree (eg. phd, heavy academic research, college-level teaching, etc.)
- You want to do research in-industry (an MS is often a requirement for these types of roles)
- You want to develop more specialized/niche skills, but you’re not entirely sure what in yet
- You love to learn, but you don’t have any specific goals right now
- You want to learn new skills, but don’t have the self-motivation to learn them independently
- You are trying to work or are actively working in tech but don’t have a technical undergraduate degree
- You have lots of free time to kill and your company will pay for it
- You place a lot of intangible value on obtaining a graduate degree
Should you do a traditional graduate program or one for working professionals?
If you’ve decided that the MS is right for you, the next question is “Should I do a traditional, full-time, on campus, thesis based program or an online, part-time one like OMSCS?” Thankfully, I think this question is a little easier. If your goals for a master’s degree center on doing novel research, especially for the purpose of getting into PHD programs or building a career in research, do a traditional program. Do people manage to get into PHD programs or research roles after OMSCS? Yes, but this is far from the path of least resistance. Are there ways of doing research and theses in OMSCS? Yes, but they are niche, and I don’t believe a part time, remote research project replicates the experience of working in-person with a cohort of graduate students in an academic research lab. If you are lucky enough to be independently wealthy, sure, do a traditional program. It’ll likely be much more fun and less stressful to be able to focus just on school rather than splitting focus between school and work. If neither of those apply, I’d focus on doing a program like OMSCS. For the majority of people, life in the US has gotten too expensive to forgo two years of full-time income, and the two years of work experience will be likely as valuable as the degree from a career and financial standpoint.
Should you do OMSCS or another program?
If you’re still reading, you are likely leaning towards doing an MS, and a part-time one at that. The next question then is which program should you do. I’m biased obviously, but I think the clear answer to this question is OMSCS for a number of reasons.
Affordability
If you’re going to be self funding your graduate degree, this is probably the number one reason to choose OMSCS. The entire program can be completed for approximately 7000 dollars. This is an order of magnitude less than most other graduate CS programs. Certain programs have recently begun opening up that approach the affordability of OMSCS (eg. UT Austin’s program [2]), but as far as I’m aware OMSCS is still the cheapest program out there.
Accessibility
To put it frankly, the admission requirements for OMSCS are not all that high, especially considering the reputation of Georgia Tech. If you have an undergraduate degree in computer science or similar with a GPA over 3.0, you’ll likely have no trouble getting in. Even more surprising, you can get into the program without a technical undergraduate degree, but you may need some level of professional software development experience and/or the completion of a basic set of undergraduate CS classes to get in. Beyond admissions, the program is accessible in that it was designed from the ground up to be completed remotely by people who are actively working full time. This means that all coursework, exams, and lecture content can be completed remotely and fully asynchronously. This is in contrast to some institutions that have added online degrees as a crude extension to their in-person equivalents. I have experience in a prior program with this. These types of programs may have lectures that can only be viewed live at specific times, poor quality recordings of in-person lectures, or even a requirement to physically go to a proctoring center to complete exams. OMSCS is created from the ground up for people with full time jobs (it’s not possible to take a full-time course-load) and thus all classes are accommodating. Even when classes require group projects, the vast majority of other students will also be working full time and will thus be understanding of scheduling constraints, etc.
Pedigree
According to US News and World Report, Georgia Tech currently has the 8th best ranked graduate program for Computer Science [3]. The diploma awarded to OMSCS students upon graduation is identical to the one awarded to on-campus students, and by all accounts the rigor of the coursework in the online program is very similar to the on-campus program. For whatever school name is worth, we can assume a graduate degree from Georgia Tech will be a strong addition to any resume.
Education Quality
As a graduate of the program, I am very satisfied with with both the depth and the breadth of the available coursework. As with any educational program, there is some variance in the quality of each course, but most of the courses I took felt challenging and also very beneficial in helping me develop new skills and foundational knowledge. As one of the first prominent online graduate CS programs, OMSCS has developed a deeper library of coursework than most similar programs. The four available specializations provide something for everyone, and from a practical standpoint I found the organization of most classes to be great.
Community
One of the biggest and yet least talked about benefits of OMSCS over other similar programs is the community that has grown up around the program. In any challenging graduate program, being able to talk to higher-level students and alumni about things like course selection/planning and success strategies can be critical to your success in the program. Obviously, this is baked into traditional programs. However, OMSCS has several unofficial channels where these topics are vibrantly discussed, such as the OMSCS slack, the OMSCS subreddit [4], and OMSCentral [5]. I found these resources invaluable in navigating my OMSCS journey and in hindsight, I should have relied on them more than I did. I’m observing that some of these types of communities are getting built up for other pogroms, but I don’t believe they’ll provide the same level of value yet due to the age and popularity of OMSCS.
Advice For Prospective Students
If you intend to complete the program, I can’t recommend enough doing lots of detailed research upfront via the resources above and making a detailed course schedule in advance. This will help you to progress through the program steadily without hiccups and hopefully prevent drops/withdrawals. A small number of classes can be difficult to get into during your earlier semesters in the program, so make sure you understand which those are and plan accordingly. If you find yourself in the “lots of free time to kill” category and/or you aren’t working full time, doing two courses at a time and completing the program in a little over a year may be feasible. Otherwise, I’d recommend planning for a single class at a time as a baseline. This would end up taking slightly over 3 years to complete the program. However, if you do your research it should be possible to pair up some of the easier courses, which will allow you to finish in roughly 2.5 years without wanting to rip your hair out through the whole experience. In my last semester I took two of the more difficult courses in parallel and it was a seriously unhealthy several months.
Does the accessibility of OMSCS dilute the value of a Graduate Degree in CS?
You’ll see some people argue that the relatively low admission standards for OMSCS is diluting the value of the Georgia Tech name and of CS graduate degrees in general. I don’t see how this argument is based in logic. First of all, as discussed, graduate degrees are far from the norm in the fields of software development and engineering more broadly. Anecdotally, in my career I’ve worked with hundreds of early career engineers (software and otherwise) at a company with a very generous tuition reimbursement policy and can count a pretty small number of them who have or are actively working on graduate degrees. Even if OMSCS does increase the “supply” of engineers with graduate degrees, it likely isn’t significant enough to devalue the achievement. Beyond this, we have to assume OMSCS has a relatively low graduation rate. Georgia Tech has lowered the bar for admission, but hasn’t reduced the rigor of the coursework. I really respect this approach. Lots of external circumstances can cause people to under-perform in their undergraduate studies, or to end up with degrees in things that aren’t what they really wanted to do or aren’t working out from a career standpoint. I absolutely think people, even those from unconventional backgrounds, should have the opportunity for “trial by combat” in the sense that if they can come into the program and pass graduate level classes, then they should be able to earn a graduate level degree, regardless of prior qualifications. This does mean though that a lot of people who enter the program will never finish. Georgia Tech doesn’t appear to publish numbers on the graduation rate, but as of 2021 the program had 6,491 alumni. The program has existed since 2014 and currently enrolls about 11,000 students per year. The implication then is that a pretty small portion of students who have ever enrolled in the program since its inception have graduated. It’s impossible to know for sure what the graduation rate is, but I’ve seen it estimated at somewhere in the range of 30-40% on various forums. So while it may be easier to be accepted into a Georgia Tech graduate CS program than it has been in the past, it’s likely not much easier to graduate from one.
Course Highlights
Below I’ll give brief recommendations for the classes I got the most out of during my time in the program.
Artificial Intelligence for Robotics
Probably my favorite course of the set I took. This is basically the only class that specifically focuses on real-time control algorithms for things like feedback control systems, path/motion planning, localization, and kinematics. As a side note, this is an area I wish there was more course development for in OMSCS. With that aside, this is a great class. The projects are fun and engaging, and provide lots of learning without being overly challenging. The lectures where all put together by Sebastian Thrun, who was an early pioneer in autonomous driving. I’d recommend everything take this, regardless of specialization.
Machine Learning for Trading
Another great class. The name is a little bit of a misnomer. It might be better named “Statistical Methods for Trading” or something because the machine learning portion is only the last quarter and third of the course. The rest of the material consists of more basic statistical analysis of stock market data. The content is fun and engaging if you have even a passing interest in the stock market. It provides a good intro the the basic concepts of machine learning. I think this is a good early class, especially for folks in the ML and CPR specializations, as it will be a good intro to working with large vector data with numpy in python for those that aren’t too comfortable with those concepts. This is another class which strikes a good middle ground in terms of challenge. It’s not too easy as to not require real learning, but it shouldn’t be too stressful relative to some other courses in the program. The professor actually runs an automated training software firm and seems t really know what he’s talking about.
Machine Learning
This class has a bit of a love/hate reputation. I found it to be a significant time investment but I really got a lot out of it. This is the primary machine learning survey course in the program, and is somewhat of a weed-out class for the ML specialization. The purpose of the class is to understand the performance of a wide variety of machine learning techniques on different types of data, and how the associated hyper-parameters for each technique effect performance, training cost, etc. The entire grade comes from a series of projects in which you are asked to implement various ML techniques and write in-depth reports on the results of experimenting with hyperparameter tuning, feature engineering, etc. The important part of these assignments are the analysis and not the code. In fact, we were encouraged to use libraries that fully implemented the various algorithms as near black-boxes and steal relevant code from resources online. This course is frustrating to some because the assignments are kind of a meta-lesson on machine learning in that a clear rubric for expectations is not always provided. Most people do poorly on the first assignments and are expected to improve on subsequent assignments through feedback. This is okay because there was an extremely generous curve as long as you demonstrated positive improvement throughout the semester, although the teaching staff were kind of secretive about the existence of the curve, and I fear that many people unnecessarily dropped this course after seeing low grades on the first few assignments. Dr. Isbell who ran the class recently left Georgia Tech, and I understand the class has become a little less arcane in this sense, but I believe the basic framework is still intact. The lectures are made in an innovative format and are engaging and humorous, which is helpful because they contain some heavy math. All in all a great class. I understand why the teaching style rubbed some people the wrong way, but I felt a huge sense of accomplishment when I completed it.
Graduate Algorithms
GA is another class with a mixed reputation, for two reasons. Firstly, it is a required course of 3 of the 4 specializations which means it is very difficult to get into until your last few semesters. Secondly, it is one of the only classes in the program where the grade is almost entirely based on closed-notes, virtually proctored exams. There are very few required homework assignments and the ones that do exist are very easy. The exams are quite difficult, however, which means you have to self motivate to study if you want to do well in the class. I think a lot of people are caught off guard by this, get behind, and end up dropping the class and retaking it later. With that said, this course ws extremely beneficial to me. Because I’m an embedded software engineer in aerospace, I’ve never had a need or desire to do any Leetcode grinding and wasn’t really well versed in solving the types of algorithmic problems that are typical in competitive software engineering interviews. I don’t know what it is about the teaching style of this class, but a lot of what this class taught was very “sticky” for me. You don’t write a lot of code in this course, it’s much more focused on describing algorithms to solve problems in plain english with a proof-style syntax. The problems you’ll be answering on the homeworks and exams are basically LeetCode - style questions, except that you don’t write code to solve them, you just design the logic. This is useful because it forces you to do some mental debugging and checking of your own assumptions, which is a vital skill for Google-style interviews where you write code that you can’t actually execute. I did some interviewing with traditional big tech companies during this time and was successful in getting offers, largely due to the skills I learned from this class.
Conclusion
In closing, I’d like to discuss whether or not I would do it all again today, knowing what I know now. If you are determined to do a part-time master’s degree, I think OMSCS is the go-to option, bar none. Personally though, I’m not sure I would start the program over today if I had to. With a small and growing family, and interesting job, and other commitments, I’m not sure that the value a master’s degree provides to me outweighs the personal costs of the stress I’ve carried, the lost time with family, lost sleep, and other important aspects of my life (like fitness) falling by the wayside. I firmly believe that if you’re going to do your life’s work in a technical field, you have to commit to being a career-long learner. With that said, I now realize that I have the foundational knowledge and resources to self-learn basically any topic I could possibly want to, and tools for self-publishing and networking when it’s time to leverage those self-taught skills into new career opportunities. Taking this more self paced approach would allow me to better target my learning on the specific topics I’m interested in and practical skills needed to actively get involved at a professional level. With all that said, perhaps it was completing the program that gave me the confidence that I can do it on my own. In any event, hindsight is always 20/20, and I do not regret doing OMSCS in any way. I learned a lot across a range of technical areas I probably wouldn’t have studied on my own, learned better time-management and self motivation skills than I’ve ever had before, and I now can take satisfaction in saying that I’ve earned a Master’s degree in Computer Science from the Georgia Institute of Technology.
Sources
[1] https://www.coursera.org/articles/computer-science-salary
[2] https://www.cs.utexas.edu/graduate-program/masters-program/msonline
[3] https://www.usnews.com/best-graduate-schools/top-science-schools/georgia-institute-of-technology-139755#computer_science
[4] https://www.reddit.com/r/OMSCS/
[5] https://www.omscentral.com