OMCS Graduation and Recap
The online Masters of Computer Science program at Georgia Tech is completely online and designed for working, part-time students. I applied to OMSCS in 2015 when I was concerned about what I saw as a plateau ahead in my career. At the time I worked for a smaller company doing a little bit of everything in technology and development. With a MS in chemistry and a minor in computer science under my belt I was confident that I would be able to succeed in OMSCS and it would contribute to my part of my aspiration to be a better developer and work as software engineer in the future.
I received the decision notification email while driving from Missouri back home to Minnesota. It was unpleasantly cold and windy at a gas station in Iowa as I navigated the applicant portal from my iPhone. Also relatively unpleasant was the news that I had not been accepted to OMSCS.
In December 2022 (this month), I graduated from OMSCS. In this post I’m going to talk just a bit about what I did between being rejected in 2015 and being admitted to OMSCS as well as review some pieces of OMSCS.
I’m not going to speculate about the differences in my applications and the applicant pools between 2015 and 2020, but I do want to talk about how I was a different person going into OMSCS because of the additional experiences I did have in that time.
- I developed a few skills for Amazon’s Echo/Alexa devices, and as a part of it started thinking more developer experiences and platform integration. I even took a day off once to go to an Alexa Dev event in Minneapolis “for fun”.
- I got involved in professional organizations around the systems I used at work (SQL Server, Dynamics SL). With SQL Server I was able to get back to speaking/teaching and learned a whole lot from the great folks involved with SQL Saturday MN (PASSMN). With Dynamics SL I was able to learn more about the depths of the product in organizing content for conferences and eventually served on the Board of Directors.
- I took a few certification exams to solidify and validate technical knowledge.
- I completed two professional certificate programs through Coursera focused on product management and business strategy .
- I created a few extensions for Azure Data Studio.
To be honest, I wasn’t planning to re-apply for OMSCS. It was in early 2020 when I was looking to apply for new roles (landing in SQL experiences at Microsoft) that I decided to go after OMSCS again. I figured if one avenue didn’t work out, maybe the other would.
I worked on the “Computing Systems” specialization and over 2.5 years completed the requirements for matriculation (2020-2022). COVID-19 restrictions were in full force during the early semesters - which had its benefits at times - but we had just moved to Washington and I had just started a new job. In later semesters all 3 of our dogs passed away. There are some colleges that have hybrid or online MS CS programs that still have significant synchronous or on-campus components, but Georgia Tech’s OMSCS is fully-centered in the online campus.
Despite all the daily stresses and life events happening during OMSCS, my key to success was repeatedly setting aside everything else to focus on course content for hours every week. For some classes this might be in the range of 10 hours, for others it was 20+ hours. Given the demands of life, I am incredibly fortunate to have a supportive spouse who made a number of sacrifices over that span.
There are some realities of a graduate program that can be jarring to the student, especially if they’re expecting more of a bachelors degree:
- the pace at which material is covered requires individual learning - know how you learn topics
- the topics/subjects are provided, but the materials that you need to master it may not be explicitly provided - know how to look for books, papers, videos
- the background of each student varies widely and some folks grasp topics faster than others - know how to leverage study groups or ask peers for advice
The common advice for the first semester is to take only a single class to allow you to adjust to graduate school and avoid becoming overwhelmed. I didn’t listen and added the VIP project course, but I also didn’t really read course reviews yet either.
Vertically Integrated Project (Big Data and Quantum Mechanics):
⭐️⭐️⭐️⭐️_ (4/5 stars)
Database Systems Concepts and Design (CS6400):
⭐️____ (1/5 stars)
This course moved fairly slowly through entity-relationship diagrams, relational algebra/calculus, and report writing for a LAMP stack application. The preface for the textbook used literally recommends the chapters covered by this class for an introductory undergraduate course. I was sorely disappointed at the lack of coverage for index structures, query processing, transactions, or security (all included in the textbook for use at the graduate level). Frankly, I was so unimpressed with the databases course that if I hadn’t also done VIP that first semester I would have been tempted to stop the program and focus on promotions at work. I was concerned that every course would have such low quality of content. I didn’t find this to be true, and am glad I continued on to better courses.
- group project (you can get team members who do nothing)
- rudimentary content all the way through
- terribly worded exam questions
After carefully reading course reviews, I paired an easier course (Computer Networks) with a more time-consuming course (Intro to OS), both well-rated.
Computer Networks (CS6250):
⭐️⭐️⭐️⭐️_ (4/5 stars)
My systems administration background served me well in this class , which had a nice balance between exams/quizzes/projects. The content looked at how some networking fundamentals work behind the scenes and the projects were often Python implementations of algorithms. Extra kudos to the instructional design for this class such that students could collaborate on creating test cases and/or unit test frameworks for the projects, which created additional learning opportunities.
- easy-to-moderate assignments
- content chopped up into bite-size segments
Graduate Intro to OS (CS6200):
⭐️⭐️⭐️⭐️⭐️ (5/5 stars)
This course is legendary for its content, project time commitment, and instruction. The depth and pacing of the topics is not overwhelming, but studying for the exams with flash cards was necessary to make sure I was picking up the material sufficiently. On top of preparing for exams with the course videos and reading, this course’s projects (3 of them) are each about a 40 hour commitment (varying based on your experience with C, debugging, and acclimating to an existing codebase). I had at least 1 near-breakdown with each project, often at late hours of the night, as my brain stretched to grasp problem space and properly allocate memory. If I had to pick a favorite class from the program - this would have been it. After completing the course I wanted to take advanced operating systems but ultimately didn’t fit it in.
- 2 moderate difficulty exams that aren’t too highly weighted
- 3 difficult assignments with clear connection to course material
Some students opt to have the summer free from school and don’t take a class, especially since it’s an abbreviated semester. I opted for enrolling in classes that didn’t have enormous workloads during the summers.
Software Arch & Design (CS6310):
⭐️⭐️___ (2/5 stars)
While this course was full of busy work through in-module quizzes, it also offered a lot of supplementary/required readings. The most notorious is likely the Gang of Four design patterns, but there many others including some solid nods to Uncle Bob . The course had about as many assignments on how to communicate the software architecture through UML/OCL as designing the architecture, which is valuable but there’s a depth of architecture design content available that is interesting to check out. The bulk of the grade for this course came from project assignments, which culminated in a group project component. Similarly to the first semester group project, there was a group member who ultimately shouldn’t have received any points because despite multiple people trying to bring them up to speed they were unable to build the project code much less contribute. As long as your group only has 1 or 2 people in this category (out of 4 or 5), you’ll be able to pull through and complete the work, but it is a risk. I’m a huge supporter of the program’s high acceptance rate but I propose that it is reasonable that a subset of courses are approved for first-semester students that have only individual work to bottleneck students who need to ramp up.
- most valuable course content is in supplemental material
- group project
- “easy course” - highest grade in the program
Individually both of these courses are notable for content and instructional style, but they additionally share a significant amount of academic paper reading and writing. To spare myself the context switching, I paired the courses up for a semester where I could stay in the mindset of interaction design and writing.
Human-Computer Interaction (CS6750):
⭐️⭐️⭐️⭐️⭐️ (5/5 stars)
HCI is a “Dr. Joyner course” with 2 aligning sets of papers focused on the principles learned and applying those as methods towards a project idea. There’s a good amount of engaging reading , and it certainly helps that I’m interested in the topic. I still some of those resources from time to time for work as a PM. As tempting as it was to use one of the SQL tools for the project, I ended up proposing improvement to the GPS navigation component of Apple CarPlay, and had a little fun along the way with user surveys and scraping product review APIs.
Education Technology Foundations (CS6460):
⭐️⭐️⭐️⭐️_ (4/5 stars)
EdTech is another “Dr. Joyner course” and is similarly structured to HCI but with a much larger independent project component. You are given a general direction to investigate a gap in education where technology plays a role, and can conduct empirical research or implement improvements. My focus area, to no one’s surprise, was database systems. After scrubbing the literature on higher education for database systems, one of the chasms that forms is automated grading infrastructure for database assignments. I took a swing at the issue with SQLGrader , designed to scale to courses such as the databases course I took in the first semester.
I can’t say I continued working on SQLGrader despite there being many opportunities to improve it, as I had also started a project proposal for the next semester.
Special Problems (CS8903):
I was very fortunate that Prof. Joy Arulraj was receptive to my inquiry and project proposal, which took tiny step forward with his SQLCheck tool for identifying antipatterns in SQL code. The second version of it was fresh off of feature in VLDB . The work I did was spit into 2 categories - the first was minor/quick improvements to the original (open source) SQLCheck and the second was to establish forward motion on the second generation of SQLCheck. This involved updating dependencies, hardening the container images with a few best practices, and establishing patterns for sharing compute resources with other projects in the DB research group (egress networks, SSL configuration, etc). The Special Problems course is designed to mix a thesis-driven Masters degree with a coursework-driven Masters degree such that the learner can dip their toes in or immerse further in a research area. I won’t give this a star rating because it is a phenomenal option for OMSCS students and Dr. Arulraj was a fantastic mentor, but I know my mental state was rapidly declining during 2022 and had I been engaged on this at a different time would have wished I got more out of it.
I was very worn out from the program at this point and on top of it 2 of our dogs passed away during the spring semester. I’m very glad that I stepped back to taking 1 class at a time to avert total meltdown and to afford more time to spend with Ellie and Louie during their final days.
Software Analysis and Testing (CS6340):
⭐️⭐️⭐️__ (3/5 stars)
- easy-to-moderate assignments, most of the difficulties coming from lab requiring an older version of LLVM
- content chopped up into bite-size segments
Machine Learning and Data Science Tooling Seminar (CS8001):
The seminar concept was introduced just in 2022 and I was thrilled! These offerings are 1-credit hour options to interact with others and work through a breadth of light material on a topic, ideal for semesters where you have just a little extra time expected but not enough for a full course. I very much recommend trying out even just 1 during OMSCS.
Introduction to Graduate Algorithms (CS6515):
⭐️⭐️⭐️⭐️_ (4/5 stars)
I’m torn on the rating for Intro to Graduate Algorithms because it is a good course (4 stars) but it is a graduation requirement and structured differently than most other courses in the program, leading to unnecessary stress for the ~850 students each semester as they scratch and claw their way out (2 stars). The downfall of Georgia Tech’s popularity is that this course bottlenecks at the end of the program and is all but impossible to register for until your last 1, maybe 2 semesters. A number of students take it more than 1 time to receive a passing grade and I understand that there’s no real incentive to have students take this course earlier when they might quit the program instead of toughing it out in this course. It very much reminded me of teaching science for ITT Technical Institute to first-semester students and how the dean of students would come remind me, frequently, that I was grading too harshly and reducing the enrollment numbers for later courses. Many other courses that were difficult to enroll in now have a reduced bottleneck so I hold out hope that in a few more years, graduate algorithms won’t be the last class every student takes.
This course is notoriously difficult, almost a self-perpetuating cycle at this point, since a good portion of the difficulty comes from our responses to stress and inability to think under pressure. If you, like many other students in the program, are far removed from your last formal discussion of algorithms, learning how to even answer homework and exam questions will be difficult. That’s ok, you can handle that. You’re going to need to do a lot of practice problems anyway (dynamic programming, graph algorithms, divide and conquer, linear programming) to really grasp the material, and you’re going to do them until you don’t need your notes or any prompts to work out the answer completely. This class isn’t a leetcode prep course, and although it does introduce some concepts that can be helpful in that prep you will write < 200 lines of code for the class. Office hours (mini lectures) are provided weekly, which you can go to live or watch the recording. Study groups are recommended, and hopefully you are unafraid to leave/join study groups until you find one that works well for you. In your study group you should be able to ask questions and work through problems while your peers provide feedback (criticism, reinforcement, etc). When all is said and done, this class has three exams that are each 25% of your grade. The final exam is only an opportunity to replace one of those exam scores if you’d like to improve the grade you’re at, an opportunity I’ve heard isn’t available during the summer. I was sitting in the B range before the final exam and was quite happy to not need to take it.
If you made it through my course reviews, you probably noted that I had a few opportunities to do research.
Despite being a fully-online in both coursework and community program, Georgia Tech manages to offer multiple avenues for OMSCS students to do research - which is phenomenal. Whatever your aspirations are following OMSCS, there’s an opportunity to dive deeper into a subject that interests you if you’re ready to work independently.
- Fall 2020: $1,381
- Spring 2021: $1,381
- Summer 2021: $841
- Fall 2021: $1,381
- Spring 2022: $841
- Summer 2022: $1,021 (increased due to seminar enrollment)
- Fall 2022: $647 (decreased for all OMSCS students with removal of institutional fee)
(One of my employer’s benefits is a generous amount of tuition reimbursement, which I used to cover the cost of OMSCS.)
I’m proud of having completed OMSCS and I’m really grateful for all the learning opportunities I had as a part of the process. I don’t have the same aspirations as I did during my first application to the program but I do know that even while in the program the knowledge I was picking up was immediately applicable to my work, to which I’ll credit some of my growth at work to OMSCS. It was a tough program and offers a lot of options for students to create their path that benefits them the most.
Sometimes people would ask me “what’s it like working and doing school part time?” or “I’ve been thinking about doing a masters, how is it?” - to which my response is usually:
It’s really awful and painful, but I love it.
Thanks OMSCS, I loved it.