Having been periodically approached for advice from folks considering OMSCS, I’ve collected my one alumni’s experience here. It’s a great program I’d encourage anyone to consider.
0. Ignore any little voices deriding online programs
Some skeptics question the quality and standards of online programs. Maybe some programs are lax in their standards and easy in their coursework. But Georgia Tech is no diploma mill, and while there’s certainly variation among courses in their level of difficulty and time demands, you’re signing up for a challenging program.
1. Take CS6300 as soon as you can
CS6300 Software Development Process is a great course on the ins and outs of software carpentry, and is great for anyone who hasn’t worked in a well-run dev shop. (I had not.) The topics—testing, version control, IDEs, etc.—are foundational for collaboratively building quality software of any meaningful complexity. More, they pay dividends both at work and throughout the program.
Your future self will thank you, every time you start a new course project with a fresh repo and save yourself hours of diagnosing bugs by just writing tests and walking through execution with a debugger.
2. Take Machine Learning alone
Machine Learning is a course unlike any other I’ve ever taken. Imagine being sprayed with a fire hose for thirteen weeks, and periodically being asked to step onto a scale, then finding yourself graded by a difference of measurements. It’s the closest I’ve come in civilian experience to anything approaching that of Army basic training. It’s a gauntlet I’m very glad I ran, and am very grateful for the version of myself that emerged through the other side. I’m equally grateful I never have to repeat it.
I took it alongside another course, and would generally advise anyone considering this to think really hard about whether that’s best for them.
3. If you ignore tip (2), take ML and RL together
I took Reinforcement Learning and Machine Learning together, and I wouldn’t describe taking anything with ML as a good idea. But if you are are going to take something along with ML, this is probably the best boat in a sea of poor decisions.
Reason being, RL kicks off with a review of the reinforcment learning content from the ML course. “Review” meaning, “the exact same lecture videos.” (At least, this was true when I took the course.) By the time you arrive at the reinforcement learning topics in ML, you’ve got the foundational reinforcement learning topics pretty well-practiced. And because you’ve already completed reinforcement learning programming assignments, you’re better-prepared to take the reinforcement learning project assigned in the ML course.
While this course pair didn’t exactly make for a pleasant semester, I imagine both courses were marginally easier together than I’d have found them alone.
4. Learn to love OMSCentral
One of the major benefits of a fully online program is that, generally, course experiences tend toward consistency across repeated offerings of the same course. Videos need to be produced, and assignments designed to fit with them, forcing a great deal of course design to be done up front. This lets you rely on the kind of feedback you’ll see at OMSCentral, especially difficulty and average workload. In my experience, this feedback was very well-calibrated to my own relative workloads. The hour numbers didn’t exactly match my own time spent, but they were close enough that I could plan around.
Skimming OMSCentral is a must-do item while planning courses. It’s the fastest way to get a clear idea of what you’re getting yourself into.
5. Align your coursework with your career goals
First things first, figure out what you want out of this program. For me, I wanted the kind of foundational CS education I didn’t have to that point—think algorithmic analysis, operating systems, that kind of thing—and the skills to build and deploy machine learning systems at scale. Applying these principles made course planning easier, I found: I knew that machine learning and systems courses would make my wish list.
If you’re taking OMSCS part-time and fitting it within a full-time career (I did), I hope your experience will share this with mine: You don’t need to finish the full program to accrue career benefit. You can start applying new skills in your job, and speaking to them in interviews, immediately as you learn them.
Consider whether you can front-load the coursework that will fill any gaps between your skillset and your goals. Very shortly after finishing ML and RL, I was a data science lead at a cyber-security startup. Contrast that with, say, Software Analysis and Testing, which certainly made me a more effective engineer and tech lead, but probably didn’t tip any recruiting scales in my favor.
6. Align your coursework and studies with your life
If you’re looking for a really good time to take a semester off, may I suggest the semester following the birth of your second child. And if you’re anything like me, by the time you get home from work your mental tank might lack the fuel to focus on, say, learning how to analyze distributed algorithms.
My own solution to this was to front-load my studying early in the day before work. Bullet-proof coffee, a few hours of precious quiet and higher mental energy worked for me.
Of course, that’s not necessarily what will work for you. But whatever your style and needs, I encourage some clear-eyed self-reflection on what routines will best enable your success.
7. Learning from online courses is a skill, practice it
The online format is distinct from the brick-and-mortar lectures, labs and seminars from undergrad. As I approached the end of the program, my own personal learning process for every course became this routine:
- Download all course lectures at start
- Watch lectures once at double speed, for coverage
- Watch lectures again, taking notes using the Cornell method
- Solidify understanding via the Feynman technique
Final point on this topic, less specific to online programs, the hard-start method described in A Mind for Numbers probably saved my grades in exam-heavy courses like Introduction to Algorithms and High-Performance Computing.
8. Recognize your gaps, but don’t let them intimidate you
Here’s another bad idea of mine that somehow turned out all right: Taking Advanced Operating Systems without ever having taken a systems course. (Introduction to Operating Systems doesn’t, or didn’t at the time, fulfill any concentration requirements. And, I gravitate toward challenges that open a new sliver of the discipline to me in the way AOS does advanced systems.) But recognizing the knowledge gaps you want to fill is key: Much of my success in AOS was thanks to reading Operating Systems: Three Easy Steps over morning coffee the summer before I took AOS.
Don’t walk around thinking you’re super-human. But don’t gaslight yourself into thinking you can never tackle the hard stuff.
One last bonus tip: This whole program was achievable, on top of job and parenting, thanks to my incredibly supportive spouse Jess.
To those of you with partners you’ll be relying on to pick up your slack, I’d encourage communication early and often about what you need to be successful. Maybe start with sharing this.