I’ve received many questions about Georgia Tech’s Online Master’s of Science in Computer Science (OMSCS), especially since I graduated last year.
Most questions were similar. Thus, with Gab’s suggestion, I decided to write this FAQ for people considering Georgia Tech’s OMSCS. It’ll be updated as I receive more questions.
If you’ve already been accepted and have/get second thoughts—don’t! Finish the program, it’s worth it.
This question is sometimes tied to the topic of career: “Why did you do a Master’s in CS, given that you were already a data scientist (before you started)?”
Today, many bootcamps tout themselves as the path to lucrative roles in software engineering and data science. As a result, career advancement has become the key reason for further education. While OMSCS did help with my career, it was not my reason for it.
Back in 2017, most of my programming and data science skills came from self-learning and work experience. I lacked the fundamentals and required a structured program to pick them up. After considering several options (MOOCs, bootcamps), I decided that a Master’s in CS would best fill this gap and thus took the plunge.
First, it’s value for money. In 2017, it was estimated to cost 7 - 8k USD. It’s hard to find a Master’s in CS of similar calibre even close to this price. (Something slightly different, but also value for money in CS education is Lambda School).
The fees for my final term was USD$841. Given that I took 9 terms, this worked out to around 8k USD. To make it more affordable, I was able to get a 5k SGD scholarship from the Singapore government.
Second, I could do it part-time. I was, and still am, hungry for learning and growth. The industry was progressing so fast and I didn’t want to miss any of it. In 2015 it was all about big data and Spark (time capsule of the first Spark MOOC). Then, data science. After that, machine learning. Next, deep learning and its various flavours (e.g., CNN, RNN, GAN). Now, it’s how to deploy and maintain and get business value from machine learning systems. OMSCS allowed me to straddle industry and academia.
BTW, the technology (and buzzwords) change over time, but the problems remain the same—focus on the problems.
Third, Georgia Tech is a top 10 school for CS and Engineering across many rankings. This gave me assurance that I would gain from the pedagogy and classes. Now that I’ve graduated, I can confidently say the professors and pedagogy are top-notch.
See the first paragraph of Why OMSCS?
OMSCS requires applicants to provide three references (to get recommendations from). For applicants that graduated (and left school) a while back, this can be difficult.
I think non-academic references work as well. For me, my thesis advisor helped with one recommendation, while my current and previous bosses provided the other two. Several other friends also had non-academic references and got accepted.
While I had initial doubts, these were quickly put to rest within the first few weeks. Online education has several benefits and aspects that facilitate learning.
First, all lectures are on-demand. They have to be, given a global cohort. Being able to watch 3 - 4 hour lectures in chunks—on my schedule—allowed me to effectively balance work and school.
Second, asynchronous discussions on forums and slack are a gift of technology. By having to think through and write questions and responses, the quality of discussion is raised. With discussion logs, we can search(!). We no longer have to worry about missing an important announcement from the Prof or TAs. When angels descend from heaven (read: TAs) to help struggling students on the assignment (due tomorrow), we can refer to the advice and hints on forums and slack, even if we were not part of the discussion.
Third, assignments ensure you learn by doing (or die trying). Most OMSCS classes were assignment heavy; working through them taught me 10x of the lectures. You really need to grok the theory and concepts to land your rocket, compete in the class Kaggle, or build your EdTech product.
(Now, I wholeheartedly recommend online learning over in-person learning.)
I didn’t have a technical degree either and was able to complete it (without too much trauma).
Other than the ability to learn, the key requirement is the ability to write code, mostly Python
. If you can do this, you’ll be fine for most of the machine learning classes (i.e., ML, RL, AI, CV, ML4T).
Here’s a more specific guideline: Are you able to build prototypes and iterate through experiments quickly? In some classes, you’ll submit code to an grading server Bonnie where test cases are run against it (e.g., Intro to OS, ML4T). In others, you’ll build an agent and pit it against the Prof or TA’s implementation (e.g., AI, RL), also on Bonnie. (Don’t worry, they don’t make it too hard).
Most of my classes used Python
, but there were classes where I got to learn something new: Software Development Process (Android
), Intro to Health Informatics (Java
), and Intro to OS (C
, C++
).
Other than being able to write code, you need to be able to write papers. Most of my classes involved 3 - 4 papers (ML, RL) or short summaries every two weeks (HCI, EdTech, IHI). Writing these papers is not difficult in the regular sense of writing—there’s no need to make it interesting to read. Nonetheless, you’ll need to demonstrate your ability to research and apply the concepts taught.
I’ll answer this via my interpretation of the two essay questions I received, and suggest how to answer them.
Qn 1: Please describe your background (academic and extracurricular) and experience, including research, teaching, industry, and other relevant information. Your space is limited to 2000 characters.
My interpretation: “What has prepared you for this program? Please demonstrate your ability to complete it.”
Convince them you have what it takes to complete and do well in the program. Even if you don’t have a technical degree (like me), you can draw on your industry or other experience.
Qn 2: Please give a Statement of Purpose detailing your academic and research goals as well as career plans. Include your reasons for choosing the College of Computing as opposed to other programs and/or other universities. Your space is limited to 4000 characters.
This has two questions, one in each sentence. The second sentence is easier: “Why Georgia Tech? Please show that you have researched this.”
This is straightforward. Research on OMSCS and figure out why it’s the most appropriate program for you. Perhaps in the process, you find another program that’s more suitable, or realise that further education doesn’t suit you now. This is a win-win: You don’t start an unsuitable program, OMSCS doesn’t take a candidate that might drop out, and another applicant gets the slot.
Now the first sentence. I read it as: “Why are you interested in a CS post-grad degree? How will you apply it? How will you contribute while at Georgia Tech, and after graduation?”
Demonstrate how further education in CS (or any other subject) is aligned with your career goal, or better yet, your calling. I answered by sharing about my mission and what I intended to pursue after graduation. (Oh, how naive I was about health tech back then.)
(Note: My interpretation is but one of many definitions of Statement of Purpose; take it with a pinch of salt.)
Another perspective is to view the admission essays as a job/college admission interview, but in prose. As an interviewer, what would you be interested in? Here’s what I would ask:
If you address the questions above, your admission essay should be on the right track. While it doesn’t guarantee acceptance, it means your precious character counts are put to good use.
Read my (embarrassing) application essays here.
You can find them under the omscs
tag. I’ll list it here again, just for you.
Machine Learning
Engineering
Product
I enjoyed classes that involved hands-on implementation, as well as writing heavy classes from a particular Prof. Some recommendations:
ML + RL: Profs Charles Isbell and Michael Littman banter throughout class lectures while dropping knowledge on making machines learn. The pedagogical approach: tough-love. I had to build prototypes, run a lot of experiments, and report them succinctly in papers. The papers (4 per term) focused on how to replicate breakthrough papers and conduct ML research. I found this extremely fun and gained a cherished skill (more below).
AI: This is not “AI” as how most people perceive it now. Instead, it covered adversarial search (e.g., game playing), search (e.g., route planning), bayesian networks, decision trees, expectation maximisation, and HMMs in 6 projects (brutal).
The mid-term and final were 7-day, take-home, open-book, 30+ page exams—it’s clear the intent wasn’t evaluation, but for students to learn more by working through the questions (more tough love). TAs conceive new questions every term and it was fun watching the live broadcast of Prof Thad Starner tackling the papers himself (he’s a beast). Together, the assignments and exams ensure that you’ll learn a lot.
There’s feedback that the lectures only teach 10% of what’s required for the assignments and exam. Here’s Thad explaining the class pedagogy (also applies to most of OMSCS):
”… The lectures are indeed high level as per Sebastian Thrun’s suggestion of teaching intuition in lecture and details in the assignments (this method is also advocated by Richard Feynman, whose lectures I try to emulate somewhat). …” – Thad’s full views in the comments section here
HCI + EdTech: David Joyner is an awesome Prof who has clearly put a lot of thought and effort into online teaching. I loved HCI and EdTech. The classes are very well-organized (not synonymous with structured) and a model of online education. It’s heavier on writing papers and depending on your project, lighter on writing code. I learnt a lot about building useful products and interfaces. A bad interface makes good engineering and machine learning pointless; a good one tucks away complexity and enhances what goes on behind.
Intro to OS: For me, this was the hardest class out all all classes I took. I had to learn C
and C++
while working on the assignments. I had one class remaining and thought, what the heck, might as well try something out of my comfort zone. I regretted (that foolhardiness) two weeks into the class. But looking back, I’ve learned so much about operating systems, multithreading, inter-process communication, distributed interactions, etc. Highly recommended. The TAs and peer discussion made this class exceptional.
What I would not recommend: IHI. It was useful for me (due to my interest in healthcare) but less than what I expected. People not interested in healthcare probably won’t gain much from it.
Do the assignments. Can’t stress this enough. I attribute 90% of my learning to the assignments and this is likely what the Profs intended. Quoting Prof Thad (of AI) again:
”… The lectures are indeed high level as per Sebastian Thrun’s suggestion of teaching intuition in lecture and details in the assignments (this method is also advocated by Richard Feynman, whose lectures I try to emulate somewhat). …” – Thad Starner
Engage with your peers (including TAs) through forums, slack, etc. Much of my learning came from classmates. It also tided me through torturous assignments where we became comrades in arms, celebrated each small test-case win, and popped the (imaginary) champagne after the final exam. (In some classes, actual alcohol was involved.)
Don’t try to cram it. I found it almost impossible to take two classes at once (though you’re likely smarter). Thus, I had eight single-class terms, and one term with ML4T and IHI. During the double-class term, I felt that I would have learnt more if it was just a single class. I certainly couldn’t have taken another class together with IOS, ML, RL, AI, CV, and EdTech, and wouldn’t have learnt half as much.
It varies each week; I would say I spent an average of 20+ hours per week. Some weeks I get lucky and figure out the assignments almost immediately (4 - 8 hours); some weeks I get stuck or have to learn a new programming language (30+ hours). I’m considered a slow learner so you’ll probably need less time.
(Truth be told, if I travelled back in time and was offered OMSCS again, I might have second thoughts. It’s a great program and I gained a lot. Nonetheless, the effort required was tremendous and some classes were pull-your-hair-out difficult (for me); I’m looking at you—IOS, AI, RL, ML, CV.)
I have a very understanding family and wife (then girlfriend) who allowed me space to study on weeknights and weekends. Also, I don’t have much of a social life haha…
I gained—and cherish—the ability to replicate and implement research papers. Or more generally, how to convert research, theory, and papers into working code. This is essential at work and allows me to stand on the shoulders of giants and achieve fast baselines. The results are often surprisingly good, even with different ML techniques and applied in different domains.
(Aside: I believe there’s a limited set of problem formulations and the domain doesn’t matter as much as we think. Nonetheless, there are very domain-specific applications such as self-driving cars.)
Here are some curated papers on how businesses applied machine learning to solve problems, with methodology and results. (150+ papers and counting.)
I also gained more depth in ML fundamentals, and breadth in subjects outside of ML. OMSCS provided a structured environment to learn: Android (SDP), operating systems (Intro to OS), how to build useful products and interfaces (HCI), and tech in education and healthcare (EdTech, IHI). It may come across as too much generalisation, but I thoroughly enjoyed the classes and it made me a more well-rounded data scientist.
Overall, I gained (i) the ability to implement papers, (ii) slightly more depth, and (iii) significantly more breadth. This gave me more confidence (darn you imposter syndrome) and capability to build ML systems end-to-end: business context -> problem statement -> R&D -> integration with engineering & product -> deployment and measurement.
Sadly, yes. Many recruiters (and hiring managers) still want candidates to have certain education qualifications for reasons such as demonstration of past ability, human resource job band requirements (read: bureaucracy), etc. (Why “sadly”? Because these requirements don’t make sense. I believe—and have observed—that a person’s educational qualifications have little to zero correlation with ability and results at work.)
I didn’t do an A/B test by submitting two resumes, one with my Master’s in CS and one without. But relative to my previous job searches, I think I got 2 - 5x more interviews (normalized by application count).
Yes. I recently joined Amazon and moved from Singapore to Seattle. For this, I needed a US visa, which requires applicants to have a STEM degree. With my previous Psychology degree, I would not have made the cut. Thus, the Master’s in CS was critical. But bear in mind that this is a single anecdote of a single job change by a single person.
IMHO, I think that on my visa application, only three terms mattered: “Amazon”, “Georgia Tech”, “Fragomen”.
Reply on this tweet thread or comment below!
I’ve received many qns about Georgia Tech’s OMSCS, especially since graduation.
— Eugene Yan (@eugeneyan) July 29, 2020
• Why further studies? Why OMSCS?
• How can I get accepted? How much time needed?
• What classes were good? What career impact?
Shared my responses here; more qns welcome.https://t.co/xW4ack02SE
Thanks to Yang Xinyi for reading drafts of this.
If you found this useful, please cite this write-up as:
Yan, Ziyou. (Jul 2020). Georgia Tech's OMSCS FAQ (based on my experience). eugeneyan.com. https://eugeneyan.com/writing/georgia-tech-omscs-faq/.
or
@article{yan2020faq,
title = {Georgia Tech's OMSCS FAQ (based on my experience)},
author = {Yan, Ziyou},
journal = {eugeneyan.com},
year = {2020},
month = {Jul},
url = {https://eugeneyan.com/writing/georgia-tech-omscs-faq/}
}
Join 9,100+ readers getting updates on machine learning, RecSys, LLMs, and engineering.