My OMSCS Experience
Last year, my friend Herman convinced me to enroll in Georgia Tech’s online Master’s degree program, also known as OMSCS (Online Master of Science in Computer Science). In this post I’ll go over my experience with the program.
First, an overview of OMSCS:
- You are earning a real Master’s degree – there is no requirement to mention the “Online” part. If you graduate from this program you can walk at the real graduation ceremony and get a real diploma. I hear you can also get a miniature wallet-sized diploma, which I may or may not be looking forward to more than the actual diploma itself.
- Just because the courses are conducted online doesn’t mean they’re easy. I’ve mostly taken introductory courses so far, but even those have been time-consuming and have covered difficult topics.
- Students must choose a specialization – Computational Perception & Robotics, Computing Systems, Interactive Intelligence, or Machine Learning. Mine is Computing Systems. Introduction to Graduate Algorithms, a notoriously difficult course, is required for all but those students in the Interactive Intelligence specialization.
- There are over 8,800 students currently enrolled across over 100 countries (http://www.omscs.gatech.edu).
Now for my own personal experience. I’ll start by giving some advice on your first semester, give brief overviews for the courses I’ve taken so far, and then finish with a general “other thoughts” section.
Starting the program
If you’re working full time while studying in OMSCS, I’d suggest finding a class you think you’ll be comfortable with and take only that class in your first semester. You’ll need some time to learn the different tools that are commonly used in OMSCS (like Piazza), set up VMs, etc. That is just my opinion though – if you’re confident you could handle two courses, maybe you can.
For course reviews, take a look at OMSCentral, but just use it to get an overall feel for the course. A lot of students air their grievances on this site, and in my experience many of the negative reviews are exaggerated. Older reviews may be irrelevant if the TAs and professors have fixed certain aspects of the course in the time since the reviews were made, so be on the lookout for that as well.
I recommend getting acquainted with LaTeX, or one of the online editors that allow you to generate LaTeX and export to PDFs. Your assignments will look a lot more polished that way. I write all of my assignments in LaTeX using vim, then generate the PDFs with
pdflatex, which comes with the MacTeX distribution.
Introduction to Information Security (CS-6035)
This was the first course I took in OMSCS, and I’m glad I did. I took it first because I was working in the security industry, so I thought it would be a good way for me to break into the program.
Due to the honor code I can’t give too much away about the projects, but I found them manageable, and I did learn some things that I hadn’t known before, particularly around:
I did not personally enjoy the textbook, but much of the quiz content is taken from the book, so you should get it.
Overall my experience in this class was positive, and it was a good introduction to OMSCS. If you have some familiarity with security or are interested in security concepts I recommend taking it as a first course.
Computer Networks (CS-6250)
Computer Networks has been my favorite course by far. The pacing was perfect, the lectures were relevant, and the projects were challenging yet manageable and fun. The TAs were also very responsive and helpful. A few of the projects and topics I enjoyed were:
- Building a distributed version of the spanning tree protocol in Python
- TCP Fast Open
- CUBIC congestion control
TCP Fast Open is particularly cool – it decreases latency by enabling data exchange in the initial TCP three-way handshake. The researchers found significant page load time improvements in connections with high round-trip times (RTT), which is beneficial for mobile devices for example. I got in touch with one of the authors of this paper since it interested me so much, to show him the results of an experiment I did to detect how many of the top 50 Alexa sites enabled server-side TFO (using a modified version of this script).
Computer Networks was also the first course I’ve taken in my academic career where I had to read actual research papers. It can be intimidating, but How to Read a Paper is a good start.
Intro to Cyber Physical Systems (CS-6263)
While Computer Networks was an absolute pleasure, sadly Intro to Cyber Physical Systems was not.
In contrast to the projects in Computer Networks, which had very clear and concise requirements that left few questions of what was expected of us, the requirements in CS-6263 were vague, causing the Piazza threads to explode with inquiries from students trying to make sense of what they had in front of them. Requirements would also change without discretion.
The assignments did not involve much computer programming, which surprised me. The first project was simulating a factory using software called Factory I/O. While fun, the software was so slow I bought a new computer just to run it. To be fair my computer was outdated, but I didn’t have any issues with it in previous courses.
The course had rules such as, “fully commenting code, even code that you were given as a starting point is mandatory. This is one of the instructor’s pet peeves.” But I’m sure you can imagine using this interface and wondering, “do I need to add comments in the GUI itself? Or in the XML that the GUI generates? What will happen if I don’t add comments?” All valid questions, none of which were addressed in the assignment, thus causing multitudes of students to ask for clarification on Piazza. There was no rubric or points breakdown to tell us what would happen if we forgot a comment or two. To be safe, I wrote comments for everything, but I prefer to have an exact layout for how points are awarded.
The final project took me roughly 40 hours, and involved clicking and dragging logic gates in a GUI called OpenPLC. It was a fun project, but I definitely prefer classes that involve actual computer programming.
Educational Technology (CS-6460)
This course is different from the rest of the OMSCS courses in that it’s very student-driven. There are no quizzes, no exams, the lectures are not required and there’s no textbook either. To quote from the class page, it “is simultaneously an introductory course about educational technology and an advanced, project-oriented class on designing or researching technology’s intersection with education”
If I had any reservations about reading research papers before, this course completely destroyed them. We were required to read 15-20 papers every week for the first few assignments, and also to write an annotated bibliography with at least 25 sources (mine had 41).
Google Scholar is an excellent tool for finding papers, and you can even connect your Georgia Tech account to get direct links to Georgia Tech Library resources. This proved incredibly useful and it made me realize how advantageous it was to be considered a student and have access to such tools.
For my first few assignments I looked into topics such as paraphrase generation, studying for the bar exam, and security awareness/phishing training. Before taking the course, however, Herman and I had already decided to build an app for teaching concurrency concepts in Go, so we started working on that about halfway through.
I’m not finished with this course yet, but it’s my second favorite after Computer Networks. One reason is that it opened my eyes to the world of research, and made reading research papers feel more accessible. It’s also nice that one of the core focuses of the course is to give back to the educational technology community in some way, whether through research, development, or content. I recommend taking this course, but be prepared as it’s quite unlike the other courses (in a good way).
Overall I’m happy to be enrolled in OMSCS. I’m learning a lot, and since I’m paying tuition and working toward a degree, it feels like there’s more at stake than if I were to just take some online courses or study on my own. I still love doing that too, but it’s nice that I’ll have a Master’s degree under my belt in the end. I’ve also met some great people through the OMSCS Slack community. If you’re on the fence about applying I say go for it.