OMSCS Studying online – MSc in Computer Science with Georgia Tech

I’ve recently completed an online Master degree with Georgia Tech. This has been a huge commitment in terms of time, but I’ve learned a lot.

Online MSc in Computer Science OMSCS at Georgia Tech

“University Master Degree – same as on-campus but it’s online”

As an online course the cost is only a fraction of on-campus classes, and in my case my employer covered the course fees. The classes are taken at a time that suits the student by following videos online and submitting projects and homework through an online portal. It even replicates the exam environment taking exams with the student monitored by webcam. The final degree certificate is the same as the on-campus degree.

Other than the cost and flexibility of working online the course is the same as those taught at the University so it is not easier or harder than an on-campus course, although it does have some different challenges.

The classes are provides as online videos through Udacity. These are mainly traditional style lecturer and slides, but some include added videos to show real-world examples. Some also include knowledge check quizzes during the classes so that you can check on your learning. These can be watched and re-watched as much as is required and don’t need to follow the pace of the class (although it’s usually a good idea to keep up with the videos). The assessment is then performed based on homework tasks, projects and/or exams. Support is provided to the students through forums (both students-helping-students and with Teaching Assistants supporting the students) and Virtual meetings with the TAs and/or Professor.

There are a few different specializations available and a reasonable amount of choice of classes within them, although some classes are compulsory (such as all specializations needing a theory class). There are around 29 classes at my last count, with more new classes being added each year.

“You don’t need a computing degree, but computing experience and maths knowledge is required”

I was a little concerned about my lack of knowledge when starting the Master degree. Whilst I already have a Master degree it is in electronics rather than computing and whilst I have had plenty of hands-on with computing and programming I did think I may be missing some of the theoretical knowledge around Algorithms. My theoretical maths is also a bit rusty as it is almost 20 years since my first degree. I therefore spent some time reading up on Algorithms prior to starting the course as well as trying to brush-up some of my maths. This paid off as I did well on the theoretical class and got a comfortable B, although not as good as the A I got on the other classes.

I do think it would be advantageous to have studied for a Bachelors level computing degree, it wasn’t necessary with the appropriate experience.

Classes I studied

I chose the specialization of computing systems, which is a fairly generic specialization focussing on operating systems, programming and security.
Below are the courses I took along with a short summary and example of the projects:

CS6250 Computer Networks

An advanced networking course looking at Software Defined Networking. Fortunately I had plenty of experience with computer networking so this was a good starting point, although the detail of Software Defined Networking was new.

This was project and homework based including monitoring and tuning network performance and creating a firewall using Software Defined Networking.

MSc CS6250 project network performance graph

CS6300 Software Development Process

This is a class I was particularly interested to take as whilst I have had a lot of programming experience this has mostly been self-taught and I wanted to understand some of the theory of how to program better. The class didn’t disappoint me and I learnt and awful lot from this one.

The course was project and homework based, mainly using Java and Android programming, which I enjoyed. This included a project for an Electronic Point of Sale system that had to integrate with a (fictional) credit card machine.

UML Diagram created for CS6300 software development process project 2

CS8803-002 Graduate Introduction to Operating Systems (now CS6200)

I’ve always been interested in operating systems and coding close to the hardware. This was a difficult course and had some complex projects based around C programming. It was particularly difficult through a couple of the projects, but it was very worthwhile and I have a much better understanding of programming and how it interacts with the hardware and the operating system.

The projects included writing a file cacheing proxy server in C.

There were also difficult exams as well as the course work.

The word introduction makes this sound like it would be an easier course, but it was just as hard as the advanced operating systems class.

TCP Dump from project 3 of OMSCS Introduction to Operating Systems

CS6210 Advanced Operating Systems

Although the previous class was an “introduction” and this was titled advanced it was on a similar level. The one thing being that it did need some of the knowledge from the previous course. This class included projects using C programming, including parallel processing and synchronisation, as well as exams.

OMSCS CS6210 Advanced Operating System - memory page file homework

CS8803-o04 Embedded Software (now CS6291 Embedded Systems Optimization)

I thought that the name of this was deceiving and I’m glad to see it has now been renamed. I was hoping for a class on writing programs to handle the special cases of programming on embedded systems, but it turned out to be more a course on compiler optimizations. Although it did cover some of the challenges of designing embedded systems including realtime programming, the projects were based around how changes in the compiler and code could result in faster code.

This did use a Raspberry Pi in one of the projects.

Online MSc CS8803 Embedded Software optimizations

CS6035 Introduction to Information Security

Another class that I particularly enjoyed, partly due to my past experience working in IT security, but also because it involved some fun projects. This was still very complex as it involved a required a knowledge of how the computer and operating system worked (so it was good to have taken the operating system courses first). The projects were challenging, but I found rewarding. It included creating a buffer overflow to break into a system, but also how to defend against such attacks.

There was also an online exam.

MSc Computer Science - Introduction to Information Security - Cracking the payroll system

CS6505 Computability, Algorithms & Complexity

This is the hardest class that I took. It required a high level of maths knowledge as well as an understanding of algorithms. The class was completely exam based. I spent a lot of time studying on the course and learned quite a lot, but would have preferred a more practical course on the use of algorithms rather than analysing the computability and complexity. The assessment was exam based, including several exams which had to be handwritten and then scanned into the computer.

This class is compulsory for a number of specialisations including Computing Systems. I received a comfortable pass grade in the end, but I know some other students that dropped the class or didn’t get the pass they needed.

This class is no longer taught having been replaced by a Graduate Algorithms course, which is aimed at making the class more relevant and hopefully improving the pass rate.

Exam from CS6505 algorithms - command and conquer

CS6310 Software Architecture and Design

Like the software development class this is something I was particularly interested in. There were some challenges due to working in teams (which was also the case with the software development class), which was made particularly difficult do to there being a large number of assignments which needed to be completed within a short period of time but these challenges were overcome.

The final project was a class management system application, written in Java using a MySQL database and including Weka Analysis.

GUI Mockup for project for CS6310 Software Architecture and Design

CS6262 Network Security

This is another class that I looked forward to and it was another enjoyable class. It involved looking at possible attacks and defences relating to network based attacks including network scanning, web browser exploits (XSS and Click Jacking) and malware analysis.

It was all project based, some of which I really enjoyed.

Click Jacking example from network security class CS6262 from Georgia Tech OMSCS

CS8803-O07 Cyber-Physical Systems Security

My final Class was Cyber-Physical Systems Security. This class was is mainly about security surrounding electrical systems, but also covered other utilities. It had a number of mini-projects, which were fairly easy and took much less time than the other classes, but also had a difficult exam. Still an interesting class, but not so much as the other security related classes.

Searching the Internet for Webcams - Cyber Physical Systems CS8803 Georgia Tech

“Studying online for a degree introduces some challenges, but also adds many benefits”

With the course being online then there were a number of advantages, such as being able to take the course at a time that suits you and being able to re-watch the lectures, but there were a number of challenges that it introduced.

I took the degree course alongside my full time job and family life as a parent of two children. This meant that a large proportion of my spare time was spent on the course. I tried to do most of the studying during the weekday evenings so that I could spend the weekends with my family, but this didn’t work so well with the team projects.

Whilst it is possible to take multiple classes most students I know took just one or two classes at a time. In my case taking only one class at a time meant that it took 10 terms which is about 3½ years to complete.

“Time zone can add additional challenge, but so too can other responsibilities”

I live in the UK, but Georgia Tech is a University in the USA, with most students being from the US. With a 5 to 8 hour time difference this added some additional challenges around timing. These were overcome, with some flexibility on my behalf as well as my family. For example I sometimes stayed up late (up to the early hours of the morning) to attend an online Office Hour with a TA and would schedule team meetings in my late evening to co-inside with early evening of team mates during the group projects. It was also a problem where virtual meetings would occur during my children’s bedtime, so I would have to try and put them to bed before or after the meetings.

The harder challenge when working in a team was that I preferred to avoid working weekends to spend time with my family, whereas other students would dedicate their weekends to their studies. In this case I would try and contribute towards the project during the week, but would inevitably also end up having to spend time on Hangouts or Skype calls during the weekends, which is one of the sacrifices I had to make.

Like other courses there are sometimes those that will seek to cheat to improve their score, or to avoid doing the set homework. This is a real shame as it could potentially damage the reputation of those that do work honestly. Fortunately there are steps in place and we do hear of people being identified and having their score reset or otherwise punished to prevent this from being a problem.

You may think that being an online course then it would be more open to cheating, but there are checks in place to prevent cheating. This includes AI cheat detection during exams (with manual verification) and checking submitted code for plagiarism. There are ways that students could still attempt to cheat, but this is no different from other courses and it doesn’t appear to be a major problem.

“Some of the classes did have teething troubles”

There were a few issues with classes in particular some assignments. Some of these were technical issues due to the classes being so new (in some cases I was taking the class during it’s first run on the online MSc program). These included problems with the Virtual Machines (most of the project work was in Linux Virtual Machines) or problems with the supplied code. Most of the technical problems were fixed by the students working together. These were a good learning opportunity, although perhaps not directly relevant to the topic at the time.

The other problems that I encountered were due to ambiguities in the assignment instructions. These were usually clarified prior to the due date, but did sometimes result in having to redo parts of the assignment which felt like a waste of time when there was a deadline running.

“How did I do”

In the end I managed to get an A in 9 out of the 10 classes, and a B in one. The US often use a GPA scoure which I achieved 3.9 and as a comparison with a UK that would be the equivalent of a distinction. I am very happy with my achievement which reflects the amount of work that I put into it. It is a difficult course, which I believe is important to maintain the high standard.

There was an option to attend the full graduation ceremony at Georgia Tech. Due to a combination of logistics and the cost of travel from the UK I made the difficult decision not to attend the ceremony. I was a little disappointed by this as it does feel a bit of an anti-climax after all the effort, but I am now eagerly waiting on receiving the certificate when I will take the opportunity to celebrate with my family instead.


It’s been a great journey. There have been highs with some fun projects and learning great new stuff, but also some low points when I’ve had a deadline to meet or being revising for an exam. In these ways then this is the same way as any University course and the final grade does reflect that. This has been a very difficult course, but in comparison to my previous Master degree I found the long and slow approach useful (taking one class per term) as it meant that I only had to focus on that one subject at a time.

For anyone considering taking a degree like this then you do need to think carefully about how much time you are willing to put in. In my case the impact was not just on me, but also on my family. Fortunately they were supportive of me spending time on my course.

For more details about the course then see the link below:

Note: The images in this post are intentionally small to prevent them from being used by future students, which would be a breach of the Georgia Tech plagiarism rules.