This page is an archive of my notes from when I was contemplating whether I could, in fact, do this degree, and if so, which courses to pursue. My research resulted in a several page word document full of notes. I decided to host that information as a public service. If you’re pursuing the OMSCS, giving this a quick read might be worth your time. If you’re not, it definitely isn’t, but congratulations on finding it! This page is consistently my most viewed page and the site’s most common entry point. Apparently “OMSCS Survival” is googled a lot :)
Update 2018/07/06: Some of this information is obsolete, even just a couple months after my original research. In particular, the OMSCS and OMSA DVA classes have been merged into a single course that resembles the OMSA version. Rumor is that it will use Python instead of R, which I am thrilled about.
The best advice I can give you is to search the OMSCS subreddit and Google+ pages to find the latest and greatest information about courses. Dr. David Joyner posted the following the OMSCS subreddit today, so further changes are coming:
Right now, there are 10 new courses under development that are past the stage where we would have announced them in the past, but we’re not sure if they’ll launch in Spring 2019, Summer 2019, Fall 2019, etc., and we don’t want to announce until we know. In general numbers, though, I’d predict a couple new courses per semester the next couple years.
As I wrote previously, I recently accepted an offer of admission to the Georgia Tech Online Masters of Science in Computer Science. 48 hours after the initial rush of being accepted into a top 10 CS masters program, the thrill has worn off, and I’m faced with the reality of planning and preparing. There are many discussions of the program’s high attrition rate on the OMSCS subreddit, and they have me a bit on edge. This post is a first effort at gathering the info necessary to assemble a self-study plan, so that I do everything I can to maximize my likelihood of successfully completing a top 10 CS masters degree.
The degree requires completion of 30 units, and each course is 3 units. The specialization that I would prefer given my long-term career interests is the Machine Learning specialization. To continue the program, the OMSCS program requires newly admitted students to complete two foundational courses in the first 12 months following matriculation. This is obviously a critical hurdle to pass.
Machine Learning Spec
The machine learning specialization consists of the following courses. Passing five of these six is required, and with the revamp of DVA I may complete all six.
|CS 8803-GA||Graduate Algorithms||Yes||GA (CCA)||None?|
|CS 7641||Machine Learning||Yes||ML||Java? & Python|
|CS 7642||Reinforcement Learning and Decision Making||3 of 4||RL||Any/Python|
|CS 7646||Machine Learning for Trading||3 of 4||ML4T||Python|
|CSE 6242||Data and Visual Analytics||3 of 4||DVA||Python?|
|CSE 6250||Big Data for Health||3 of 4||BD4H||Java/Python|
Five Elective Courses
The original version of this post “crossed out” various courses on the basis of my notes at the bottom of the post. Given the popularity of this page and the fluid nature of OMSCS coursework, I’ve decided to remove such explicit condemnations of courses. I feel that leaving that in would do a disservice to the program. The insights and opinions that led me to reach conclusions about my own planned course of study are still available in my notes below though. I invite readers of this page to do their research and draw their own conclusions about the best courses for them to pursue. I wish you all the best of luck!
In keeping with the machine learning theme, I also want to pursue coursework that fall under the larger “artificial intelligence” umbrella. Because of possible synergies between the high-performance computing courses and ML (think deep neural networks), I’d like to pursue IHPC and HPCA. And, since the coursework in my undergrad CS minor stopped just short of operating systems, IOS would be helpful to fill out my CS knowledge.
To make up for a lack of software engineering coursework during my non-CS undergraduate degree, I may want to pursue graduate level software engineering courses. A final consideration is that it may be prudent to select courses that allow me to pursue my interests while still minimizing the total programming languages used in the degree.
|CSE 6220||Intro to High-Performance Computing||IHPC||C/C++|
|CS 6250||Computer Networks||CN||Python|
|CS 6290||High Performance Computer Architecture||HPCA||C/C++|
|CS 6291||Embedded Software||ES?||Python|
|CS 6300||Software Development Process||SDP||Java|
|CS 6310||Software Architecture and Design||SAD||Java|
|CS 6400||Database Systems Concepts and Design||DSCD?||PHP/Python/Java|
|CS 6475||Computational Photography||CP||Python|
|CS 6476||Computer Vision||CV||Python|
|CS 6601||Artificial Intelligence||AI||Python|
|CSE 7637||Knowledge-Based AI||KBAI||Java/Python|
|CS 8803-O01||Artificial Intelligence for Robotics||AI4R||Python|
|CS 8803-O02||Introduction to Operating Systems||IOS||C|
Background/Prereq Advice and Difficulty Notes
A very useful resource for course preparation is this post on the OMSCS subreddit by a user called Leenak. Leenak’s suggestions for each of my planned courses are tabulated below. Also included are the average work and average difficulty as reported by other students, and sourced from OMSCentral.com, an independent website linked to a database of student reviews. The rankings were transcribed 3/22/18 and may have since changed. Also listed is the programming language utilized.
|Name||Leenak’s Advice||Avg Work||Avg Diff|
|ES?||Learn C?, learn computer architecture||-||-|
|SDP||Java, How to create ‘anything’ in Android or Developing Android Apps||8.971||2.397|
|DSCD||“Intro to relational databases” on Udacity||10.291||2.446|
|CN||Learn Python, learn Linux basics||7.813||2.527|
|ML4T||Learn python, do the “Intro to Machine Learning” course on Udacity||10.482||2.650|
|AI4R||Learn Python & linear algebra, Udacity “Intro to AI”||11.419||3.084|
|KBAI||Java or Python can be utilized, “Intro to AI” on Udacity may be a good option||13.104||3.207|
|SAD||Take SDP or have had some similar SE course||15.901||3.444|
|IOS||Learn C, learn Linux basics||18.568||3.603|
|HPCA||Learn C/C++ & Linux, “Intro to Parallel programming” on Udacity, computer architecture course on MIT OCW/Coursera||12.472||3.889|
|RL||Take Machine Learning, learn Java||20.426||3.944|
|CV||Learn python, do a linear algebra refresher||19.611||4.056|
|ML||Thrun’s “Intro to Machine Learning” on Udacity, Java, “Intro to Descriptive Statistics” and “Intro to Inferential Statistics” on Udacity||20.733||4.274|
|IHPC||Learn C & Linux, “Intro to Parallel Programming” on Udacity||20.129||4.613|
|GA (CCA)||Theoretical algorithm classes on Coursera.org. “Intro to Algorithms” on Udacity. The book “Mathematical Thinking.” Know how to do proofs.||22.571||4.667|
|BD4H||“Intro to Hadoop and MapReduce” on Udacity, Mongodb courses at https://university.mongodb.com/, “Intro to Machine Learning” on Udacity, Learn Java or Python||35.034||4.793|
Robert Pena’s DAG
Robert Pena, an OMSCS student, posted this graph to the Georgia Tech OMSCS Google+ page in 2015. His planned course of study is similar to mine, with the exception of apparently pursuing a double-specialization in both ML and computing systems. I have colored in the nodes representing the courses applicable to me in red.
An Excellent Reddit Post
I graduated this Spring with a ML/CP&R specialization. Here’s my retrospective of the ideal sequence of classes I should have taken. Please note that this is list is completely based on fantasy and may not be practical by any measure (due to factors such as non-availability, potential for failing miserably to meet the foundational requirements, sanity prevailing etc.). Read at your own risk (and excuse my poor English).
GA Without doubt, this is THE foundational course for ML specialization and for a good reason. First, it will put you in the right mindset and prep you for the upcoming rigor of the program. Secondly, the concepts learned in this course are useful for the rest of the course.
AI4R AI4R probably has the best introduction to Probability and Linear Algebra which, along with algorithms, form the basis of everything you learn in the following courses. There’s a bit of Python for the uninitiated, but the course does a good job offering sufficient intro to succeed in AI4R and AI until you do a deeper dive in ML4T.
AI Offers everything to catch up on the classic AI from the 60s onward to 90s and 00s. Has a much more rigorous treatment of Probability when you’re glad you did AI4R first and search algorithms which is child’s play after GA. The other tough topic is Propositional Logic (some of which you may have learnt if you also did KBAI, but easy to follow even if you didn’t)
ML4T Unholy(!) matrimony of Python (pandas, numpy), Finance, ML and RL. This is probably one of the most important classes in the program in terms of gratification-effort ratio. Offers a solid Python practice and introduction to ML and RL algorithms.
DVA Offers valuable practical data science perspective such as cleaning raw data, visualizations and report making as well as more Machine learning practice. After this class you will be chewing through Kaggle datasets one after the other. Dealing with R can be a love/hate experience but in the worst case you’ll learn to appreciate Pandas more.
ML Finally the big one. Heavy emphasis on synthesis of Machine learning, Reinforcement Learning algorithms and Learning theory. With your solid background of algorithms (GA), probability, linear algebra and logic (AI4R, AI), your basic understanding of Machine Learning algorithms (ML4T, DVA) and your mad data and reporting skillz (DVA) you are all set for success.
RL OK, why are we even doing this class at this point? Even though there is a heavy overlap with ML, this course offers a wondrous journey though academic papers and advanced concepts and can be a rewarding experience.
Comments from OMSCS Social Pages
The following blunt, poorly-formatted comments were very helpful in helping me decide on my course of study. I hope they are helpful to you as well. As I’ve commented elsewhere in this post, GA Tech OMSCS consists of a very dynamic set of courses, and things may have changed since March of 2018 when I originally did this research. Please do your own research on the OMSCS subreddit and Google+ pages, as I can’t update this page frequently enough to keep up with OMSCS.
- Given the foundational course requirement, the best strategy seems to take two easy courses, one per semester, during the first year. This advice is frequently offered on the OMSCS subreddit.
- Avoid CCA as first course.
- ML appears to be difficult as well.
- ML4T seems to be a gentler introduction to machine learning, and should probably be taken before ML.
- RL seems to be an elaboration of the final third of ML, so it seems to make sense to take it after ML.
- CP sounds like an easy course, similar to ML4T, and seems like a good candidate for a first course, although it would be somewhat redundant with CV. CV is a bigger course CP.
- KBAI is “gentle as a back rub from a baby bird.” Good first course material.
- DVA uses R, which I want to avoid in favor of Python.
- This is a great resource overall.
- CS 8803-GA (Graduate Algorithms) replaced CS 6505 (Computability, Complexity, and Algorithms) in Fall 2017. I’m assuming that the coursework (and therefore reviews and advice) carry over. This may need to be investigated further.
- IHPC (Intro to High-Performance Computing, CSE 6220) and HPCA (High Performance Computing Architecture, CS 6290) sound interesting but the former requires C and the latter C/C++. It may behoove me to limit the number of programming languages I need to learn over the course of the program. HPC is highly-rated, however.
- SDP and SAP require Java.
- SDP is recommended for people who are new to “Industry”. Seems this might be specific to software developers.
- “On the last day of registration, the wait lists are cleared and it becomes a free for all (you can add and drop any class if you see a free space).” - source
- “I recommend taking GA as your first course (at least before ML, RL, AI, CV) if* you can get in. It’s not that hard and it will set you on the right mindset about the rest of the courses. You also cover a ton of prerequisites for the other classes. I recommend following up with AI, then ML, RL, CV etc. If you are weak in Python, do ML4T/AI4R as warmup before AI to pick up Python. Another underrated warmup course is CP - especially if you also want to do CV.” - source
- DSCD (or “DB”) is supposed to be a rotten course, but I will need a DB course, perhaps taken as a MOOC, prior to BD4H.
- Good advice reg DB, CN, CP, AI4R here. Specifically, DB is important but take it elsewhere, and before BD4H. CN can be avoided entirely, CP is redundant if CV is also taken, and taking all three AI courses is redundant (drop the very applied, self-driving car oriented AI4R).
- Recommended order for ML, ML4T and AI, KBAI
- A good breakdown courtesy of Chuck Cottrill:
“My first course was AOS (hard, lots of work).
ML4T, IIS, DBS were good. KBAI is great, but you might want to take another course first.
Good first: [IIS, SDP, DBS, SAD, ML4T, DVA, CP, IHI, HCI]
Good next: [KBAI, AI4R, EdTech, HPCA, ESO, NS]
Harder [HPC, BD4H, AOS, CV, AI, ML, RL, Compilers]”
- IHPC regarded as best course in the program, offered in spring only link
- “CPSS, IHI, CN, IIS, SDP = 6-9 hours/week (est)
DBS, ML4T, HCI, NS, CPDA, ESO = 10-11 hours/week (est)
SWAT, CP, AI4R, HPCA, DVA, ET = 12-13 hours/week (est)
KBAI, SAD, EOS, AOS, IOS = 13-18 hours/week (est)
HPC, CV, ML, RL, GA, AI = 19-23 hours/week (est)
Compilers BDHI = 28-33 hours/week (est)
YMMV (Your Mileage/Experience May Vary)” - course time commitment breakdown by Chuck Cottrill.
In the comments he elaborates: “My personal experience is that these estimates are from 20%-50% low, so you need to adjust for your own subjective experience.”