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.

Updated 2017-08-19: Revised ML/AI courses.
Updated 2018-04-04: Revised my progress.
Updated 2019-05-03: Revised my progress and changed some courses, and updated some old information.
Updated 2021-03-10: Revised my progress and changed some courses.             
Updated 2021-10-09: Update course list and progress.

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 has been popular, anecodotally, because it’s the only specialisation that doesn’t require taking an algorithms course. When CCA was the only option – the infamous widowmaker OMSCS course that was math proof heavy – it pushed a lot of people into that specialization. However CCA has now been replaced across Georgia Tech with CS6515 Graduate Algorithms. While still a tough class, it fits in better with a CS major being focused on algorithms and algorithm analysis. It should be doable without needing a strong math proofs background.

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.

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 plan 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

Here’s my current plan:

  1. CS6250 Computer Networks (Done – Spring 2017)
  2. CS6200 Introduction to Operation Systems (Done – Fall 2017)
  3. CS7646 Machine Learning for Trading (Done – Spring 2018)
  4. CS6210 Advanced Operating Systems (Done – Fall 2018)
  5. CS6290 High Performance Computer Architecture (Done – Spring 2019)
  6. CS6515 Graduate Algorithms (Done – Fall 2019)
  7. CS6035 Introduction to Information Security (Done – Spring 2020)
  8. CSE6220 Intro to High-Performance Computing (Done – Fall 2020)
  9. CS7210 Distributed Computing (Done – Spring 2021)
  10. CS6265 Information Security Lab

My original idea here was to do the interesting computing systems courses – skipping the Software Development / Testing ones – and then wrap up with a ML mini-specialisation. Fortunately, we got two great new classes for CS that I simply can’t miss. CSE6220 (Introduction to High Performance Computing) was made part of the specialization and CS7210 (Distributed Computing) was also added. Had these courses been offered in the past as part of the specialization, I probably would have skipped at least CS6035 (Introduction to Information Security).

The idea here is to do the core specialisation, then broaden out with more hardcore systems classes. Information Security Lab is absolutely awesome by the way – well run and I’m learning so much low level stuff. It will make you very knowledgeable in x86 assembly.

Math prep

With the dropping of CCA, this isn’t really necessary any more. If you want to brush up on Statistics for the AI/ML courses then you can though.

  1. Book of Proof (For CCA)
  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.

7 thoughts on “Suggested course plans for OMSCS

  1. Hey James,
    Thanks for sharing your course plans. I am currently planning to apply for OMSCS 2018 fall, however, I am quite nervous. I don’t know how much preparation is enough.

    When you were applying, do you already have some projects? Do you have CS background?
    Is knowing Python enough or do I must learn C, Java and R for the classes?
    Thanks, appreciate any suggestion and your opinion.

    Like

    1. I strongly suggest you have CS fundamentals covered. I would be surprised if you were accepted without it. Most of the classes assume at least proficiency with programming. I know people have been accepted without any CS background, but I think they have gotten stricter about background to try and reduce the drop out rate. I know at least one person who was rejected due to lack of academic background. You can do some nanodegrees to fill in missing gaps – algorithms, programming, and so on. Searching on the OMSCS subreddit should help with suggestions.

      Liked by 1 person

      1. James,
        Thanks for the suggestion! I will complete MLND before I apply.
        I was browsing Spring 2018 Thread, lack of academic background definitely seems the main reason they reject most of the students.

        Like

    1. Hi Karan – I was originally planning to do AI and ML at the end, instead of Distributed Computing and ISL:BE. I think if you want to do that, also consider taking DL (Deep Learning).

      Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.