Online Masters in Computer Science at Georgia Tech

This is a post about my experience with Georgia Institute of Technology's Online Master in Computer Science (OMSCS) program. This post will be updated constantly as I take more classes and my experience changes as time goes on.

Why OMSCS?

Once I finished my undergraduate degree, I found that I was lacking knowledge in certain areas I was interested in. This included machine learning, operating systems, and even fun areas like video game design. Considering that Georgia Tech is a top 10 computer science program, it became a very tempting option to structured learning that I could do completely online. It can often be very difficult to keep oneself motivated to learn new things after college and having a program like this may be just the thing I needed. After I applied and got in, I realized my current employer would also reimburse my tuition. All of a sudden, this program became a no-brainer with very few strings attached. As long as I have free time after work then this program could help fill it in with some productivity. I would also like to throw in the caveat that I am not 100% committed to finishing this program either. Much to my parent's dismay, I do find this to be an excellent opportunity but considering the technology industry is filled with such incredible opportunities -- if I am given an offer I cannot refuse I may end up taking a break or even quit entirely. If this occurs, I will most certainly leave an update below. I hope anyone reading this finds this helpful.

Machine Learning for Trading

My initial thoughts after just wrapping up this course are that it is a pretty easy class but the level of work required may surprise some people. I often spent a large chunk of my weekend on this class. The main thing that could sneak up on you are the project write ups. The code itself can be pretty straightforward if you follow all the guidelines, however the project reports (although not difficult) will take about the same amount of time as the coding portion. Besides the workload, I found the class to be really interesting. You definitely get a good sense of how machine learning can be applied to trading decisions and you also get to explore many financial indicators that are often used to analyze trends in the stock market.

Overall, I feel there is a lot more to learn, however this was a great introduction to the topic and our final project was a great way to tie together everything that you learn.

Graduate Introduction to Operating Systems

This is the class I chose as my initial introduction to the program. It definitely isn't the easiest but from my research, it is very well structured and easy to follow if the time is put in. Not to mention, my interest in operating systems is definitely peaked and I may look into taking the advanced class in the future.

Update - I ended up dropping this class after a few weeks in order to better prepare the next time around. The time commitment for this program in addition to work requires careful timing. One thing I learned is to start the projects immediately and to make use of the Slack channel. I think I may start with an easier class in the future, just to be safe. However, the content for this course was very interesting and I plan on coming back to it in the near future.

Software Development Process

Overall, I though this class taught some really important concepts about software development. Being that I have already been in the industry for 3+ years by the time I took this class, I found it less useful as I probably would have when I first started working. That being said, I still think it was worth taking as it really explained the "why" of software development instead of just the "how" that I had already picked up through work experience. It also provided some foundational knowledge on proper software testing and different development methodologies. Although, these things could have probably been picked up with a little bit of individual research, I think the class is a good introductory level class to the program and was ultimately valuable. I do feel the course didn't go deep enough into some topics but I do think this is a very broad subject which could be the reason. However, the Android application group project did introduce me to a new tech stack and I found that really enjoyable. If you are considering taking this class I would recommend it unless you already have 5+ years working as a software engineer as some of the content may be redundant.

Video Game Design

This was definitely one of the most fun classes I have taken in the program. There are 4 individual projects that build on each other, and this really gets you familiar to the Unity environment and how to use the core features to build a simple video game for your team project. Overall, It was a really great experience and having the team project really helped you understand the dynamics of multiple engineers and product managers working on a single video game (although it is similar to regular software development, it definitely has its own unique challenges.) The class offered a great glimpse at game mechanics, physics, animation, and core principles to making any game enjoyable. I also really enjoyed the dive into AI characters and how to make them convincing and effective. Overall, I thoroughly enjoyed this class and would highly recommend it to others in the program. It was refreshing to take a class that required a little more creativity.