Suggested course plans for OMSCS

I’ve just finished my first semester at Georgia Tech, in the amazing OMSCS program. I spent a lot of time trying to figure out what courses to take, and thought I’d share my course plans for those in the same boat. I’ve put together a computing systems and machine learning plan.

Picking a Specialisation

There are a few specialisations available to MSCS students. Probably the most popular are Machine Learning and Interactive Intelligence.

I remember taking a graduate level ML class about 6 years ago, and the situation felt a lot different to today – like another AI winter. At least, my professor was pretty negative on the AI outlook. Then driving cars started picking up steam, lots more press, and AI/ML is now all the rage.

Interactive intelligence is popular, anecodotally, because it’s the only specialisation that doesn’t require CCA – the infamous widowmaker MSCS course that is math proof heavy.

I debated a long time between ML and Computing Systems. The first is interesting to me, because it’s an area I haven’t spent a lot of time in – so I would be learning a lot of new things. But I also wasn’t sure it would ever be particularly relevant to my career. It certainly isn’t now.

Computing systems is more traditional engineering, including distributed systems, networking, OS fundamentals, and all that great stuff that goes on under the hood (even on ML systems). This is where I’ve spent much of my career, and it’s something I have always enjoyed digging into, so for now I’ve decided to do computing systems. I may try to do the core ML courses after I’ve done the computing systems specialisation.

If you’re trying to pick your specialisation, I’d say there is no right choice. In the end it depends on your personal preferences and goals.

Computing Systems Course Plan

Updated 2017-08-19: Revised ML/AI courses

Here’s my current plan in expected order.

  1. CS6250 Computer Networks
  2. CS8803-002 Introduction to Operation Systems
  3. CS6210 Advanced Operating Systems
  4. CS6035 Introduction to Information Security – Summer
  5. CS8803 Graduate Algorithms – Formerly known as CS6505 CCA
  6. CS6220 Introduction to High Performance Computing
  7. CS6262 Network Security – Summer (Finish specialisation)
  8. CS7646 Machine Learning for Trading
  9. CS6601 Artificial Intelligence
  10. CS7641 Machine Learning (Finished degree)
  11. CS8803-003 Reinforcement Learning (Optional)

The idea here is to do the interesting computing systems courses – skipping the Software Development / Testing ones – and then wrap up with an AI/ML mini-specialisation. I’m only doing a course per semester – and have lined up the easier courses with summer term. I’ve just finished Computer Networks, and will start IOS in the Fall.

The last four courses may be a bit too aggressive – but I’d really like to do some ML stuff, even if I’m not sure it’s useful. I’ll have to see how I feel towards the end. It’s an extra course with RL, but this seems to be the generally recommended 4 classes for ML.

Machine Learning Course Plan

This was my first course plan, as I was initially planning to do the ML specialisation. It’s still quite rough around the edges. There is a lot of advice on the Google+ group, so I recommend reading that to figure out what makes sense. But in general, the common recommendation seems to be to take AI before ML – as AI covers implementation and intro to ML algorithms, and then ML goes more in depth with research topics.

Beyond that, you can consider taking some of the lighter courses to get warmed up. A lot of people recommend Knowledge Based AI as an intro to AI, but it’s very essay heavy, and there has been some criticism of it. DVA is also a mixed bag – apparently the class is in a bit of a state at the moment, and should be avoided. Machine Learning for Trading is also considered a light intro to Machine Learning.

Without further ado:

  1. CS6250 Computer Networks
  2. CS7646 Machine Learning For Trading
  3. CS7637 Knowledge Based Artificial Intelligence
  4. CSE6242 Data and Visual Analytics
  5. CS8803 Graduate Algorithms
  6. CS6601 Artificial Intelligence
  7. CS7641 Machine Learning
  8. CS7642 Reinforcement Learning and Decision Making (Finish specialisation)
  9. CS8803-002 Introduction to Operating Systems
  10. CS6210 Advanced Operating Systems

The idea here is to do the core specialisation, then broaden out with more general systems classes – computer networks and operating systems.

Math prep

I also put together a math preparation plan. This is much more relevant for the machine learning specialisation over the computing systems one. But both have CCA/GA, which is probably the heaviest math based course.

  1. Book of Proof
  2. Rosen or Epp’s Discrete Mathematics (Finish prep for CCA/GA)
  3. Calculus One/Two/Three
  4. Linear Algebra
  5. Statistics (Not sure yet) (Finish prep for ML courses)

3-5 should be mostly review for CS students. 1 is definitely new for me, 2 is also a bit of review but with more rigour.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s