OMSCS Survival Notes


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.

Number Title Req’d? Name Language
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

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.

Number Title Name Language
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.97 2.40
DSCD “Intro to relational databases” on Udacity 10.29 2.45
CN Learn Python,
learn Linux basics
7.81 2.53
ML4T Learn python,
do the “Intro to Machine Learning” course on Udacity
10.48 2.65
CP Learn Python 11.82 2.80
DVA - 12.53 2.83
AI4R Learn Python & linear algebra,
Udacity “Intro to AI”
11.42 3.08
KBAI Java or Python can be utilized,
“Intro to AI” on Udacity may be a good option
13.10 3.21
SAD Take SDP or have had some similar SE course 15.90 3.44
IOS Learn C,
learn Linux basics
18.57 3.60
HPCA Learn C/C++ & Linux,
“Intro to Parallel programming” on Udacity,
computer architecture course on MIT OCW/Coursera
12.47 3.89
RL Take Machine Learning,
learn Java
20.43 3.94
CV Learn python,
do a linear algebra refresher
19.61 4.06
AI - 23.02 4.26
ML Thrun’s “Intro to Machine Learning” on Udacity, Java,
“Intro to Descriptive Statistics” and “Intro to Inferential Statistics” on Udacity
20.73 4.27
IHPC Learn C & Linux,
“Intro to Parallel Programming” on Udacity
20.13 4.61
GA (CCA) Theoretical algorithm classes on Coursera.org.
“Intro to Algorithms” on Udacity. The book “Mathematical Thinking.”
Know how to do proofs.
22.57 4.67
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.03 4.79

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

  • 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.”