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:
- 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 (Done – Spring 2021)
- 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.
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.