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.
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:
- CS6250 Computer Networks (Done – Spring 2017)
- CS6200 Introduction to Operation Systems (Done – Fall 2017)
- CS7646 Machine Learning for Trading (Done – Spring 2018)
- CS6210 Advanced Operating Systems (Done – Fall 2018)
- CS6290 High Performance Computer Architecture (Done – Spring 2019)
- CS6515 Graduate Algorithms (Done – Fall 2019)
- CS6035 Introduction to Information Security (Done – Spring 2020)
- CSE6220 Intro to High-Performance Computing (Done – Fall 2020)
- CS7210 Distributed Computing
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 recently. In addition, CS7210 (Distributed Computing) was also just added which I’m currently taking. 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).
I was originally intending to do a course in summer – which I tried the first summer – but found that this was just too much for my family. So I’m on the long path now – slow and steady wins the race.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:
- CS6250 Computer Networks
- CS7646 Machine Learning For Trading
- CS7637 Knowledge Based Artificial Intelligence
- CSE6242 Data and Visual Analytics
- CS8803 Graduate Algorithms
- CS6601 Artificial Intelligence
- CS7641 Machine Learning
- CS7642 Reinforcement Learning and Decision Making (Finish specialisation)
- CS8803-002 Introduction to Operating Systems
- 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.
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.
- Book of Proof (For CCA)
- Rosen or Epp’s Discrete Mathematics (Finish prep for CCA/GA)
- Calculus One/Two/Three
- Linear Algebra
- 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.