In the Fall of 2017, my educational career was at a crossroads. Four and a half years removed from graduating from the University of Florida with my fairly useless Liberal Arts degree, I was finishing up supplementary coursework in software development at a state college and working as an entry-level software developer for my alma mater.
Unsatisfied with my current set of educational credentials, I considered what I wanted to do next. Ideally, I wanted to find a reputable computer science program that fit into my work schedule. A big ask, possibly, especially for someone without a science or engineering background.
I wasn't surprised when I found that there aren’t many programs that met my needs. Because I already had a Bachelor’s degree from UF, I was ineligible to pursue another four-year degree there. Offerings from other universities were sparse -- most online programs were too expensive or were from schools of questionable quality. There were certificates and nano degrees, but I eliminated those because the allure of saying I had a degree in computer science was too much.
I was about to give up and pursue a back-up program in Information Technology. It was then that I stumbled upon a very interesting graduate program from Georgia Tech, that was:
- Online and accessible (and designed completely for students that had full-time jobs already)
- Affordable ($8000 for the entire program, compared to up to $3000 a semester that some schools were asking for)
- Highly regarded (Georgia Tech has one of the best computer science departments in the world, and is a top-ten public institution in the country)
The program also made things more interesting by not requiring applicants to take the GRE or have any formal technical education. They boasted about wanting people who could succeed in the program — not just people who had done certain coursework.
It sounded too good to be true but, after doing more research, I discovered that Georgia Tech was working to provide exactly what I was looking for in a graduate degree. Better yet, they had already established a track record.
Their partnership with online education provider Udacity and other corporate sponsors allowed them to provide high-quality education at scale. Best of all, they claim the education you get online is the same as on campus (more on that later) and the piece of paper you get at the end was exactly the same as other grad students. You can even walk at graduation!
Intrigued, I applied because there was very little for me to lose. The process was relatively straightforward but required effort. On top of writing two essays, I also had to compile three references and transcripts of all of my coursework. Professional experience also played a role in their decision, so you have to attach a resume.
I submitted my application along in October 2017 and waited for a response. I was confident that a school like Georgia Tech would have no interest in someone with my background. To my surprise, after a little over a month, I got an email confirming my admission into the program.
My first class started in January 2018, and I have since completed three courses in three semesters (the program suggests you take one course per semester if you’re working), and am in my fourth course. Here are some of my thoughts on the program after my first year:
Just because the program is online doesn’t mean that the courses are easy. I have taken an operating systems course, a machine learning course, and a course on the software development process. I would only consider the software development process course easy. Even in that class, though, you're tasked with developing a fully functional Android application from scratch.
Obviously, I’m not able to compare the quality of courses to that of the in-person offerings at the Georgia Tech campus in Atlanta. But, I would say — excluding the face-to-face interactions you’re missing out on — they are probably close. Many of the courses use the same materials as their on-campus counterparts, and they say the grading is just as stringent.
All the lectures I have watched have been mostly high quality and are of the professor themselves. Knowledge checks are scattered throughout to make sure you’re picking up the material and some even have videos to describe the answer. They host all the videos on YouTube, and you can go watch them right now if you want.
Assignments are very coding heavy, but some classes also require a good bit of writing. In my machine learning class, for example, you had to accompany a few of the coding projects with written reports on your results. If you aren't familiar with programming when you start the program, you're forced to get up to speed quickly. Most of the courses require pretty advanced knowledge even if they say you only need to be a little familiar with the language. For example, I would have considered myself “familiar” with C before my OS class, but I spent many nights googling and flipping through my copy of K&R to keep up with the material.
Courses recycle lectures for multiple semesters. It’s in the school’s best interest to squeeze as many semesters out of these recordings before updating them because this increases the value proposition for the school. If the school isn't having to pay professors to update the courses every semester, the total cost to run the program is lower.
For most classes, this won't matter much. Subjects don't change much, and academia is notorious for not keeping up with industry trends anyway. Much of what you learn is foundational so you can go apply the concepts to newer technologies.
But, there are courses where it is glaringly obvious that an update is in order. Take my machine learning course, Machine Learning for Trading, as an example. The most current financial data we worked with was from the year the course began (2014) and there was no discussion about trends that have happened in the five years since they recorded the course. I assume that an in-person course would cover more up-to-date trends, but, you sadly won’t get that at this price point.
One nice thing about the materials, though, is the lack of required textbooks. There are several suggested texts, but I have yet to purchase one. This just adds to the value proposition for the program.
Half of the classes I have taken so far have used automatic grading. In my OS class, you submitted your code through a Python script to an auto-grader. The auto-grader would then run unit tests against your code and spit out a report of what you needed to fix. You were limited to the number of submissions you can make in a day, so you had to make meaningful changes to the code to make it work. These tests determine most of your grade — although they said they had other tests they did not release on the grader (supposedly so you couldn't cheese your way through the provided tests and get a perfect grade).
My machine learning class did something similar but didn't have a fancy website where you’d go to see your results. You could also see the actual test being run (they were all just small Python tests). If you passed the provided tests, you’d most likely at least get an A on the coding portion. But, the extra tests they hold back hit on more edge cases than the OS class and you could definitely lose a letter grade over it.
The auto-grading is interesting, but you miss out on the interaction with a professor or TA in understanding your grade. The flip side is that you had a pretty good idea whether or not your code was worth anything or not when you submitted it. Professors and TAs hold office hours (classes have had at least one TA available every day at different times to accommodate different schedules and time zones) so you can ask questions, but, in my experience, they usually aren't very willing to discuss specifics about a grade.
For exams, you’re proctored using software that watches you and your screen as you take the test. There isn't a whole a lot to say here, except that it’s a bad experience. Technical issues abound, and I question the real value of the software as anything more than a deterrent. Oh, and the worst part? The software only supports Mac OS and Windows — no Linux.
Classes use Canvas for assignments and grades and use Piazza for class discussions. Canvas is great, Piazza is not. Mostly, I’m not exactly sure what Piazza is trying to be. On its face, it’s a discussion forum where students can communicate with professors, TAs, and other students. However, they've tried to mix in some sort of poorly designed job board to it. I’m frequently asked to enter resume information they will share with potential employers. There is seemingly no way to turn this off.
Piazza is also very hard to search. TAs try to police the posts by asking students to search before posting duplicate questions, but, finding relevant information through the search functionality is almost impossible. Some classes also tie the time you spend on Piazza to a participation grade, which I find a lame way to determine how engaged someone was during the course. Maybe they don’t like using Piazza?
Every class I've been in also has a student and TA run Slack channel where you can discuss the class with other students. The active channels are a great way to communicate with TAs. If it wasn't for this system, I don’t think I would have gotten through my OS class. Your mileage on Slack will vary, though, depending on the class and the TAs for that semester. I have yet to see a professor enter a channel and talk.
Overall, courses that lack a good community are almost always universally panned on OMSCentral. The community for a class is very important, and, unfortunately, Georgia Tech has yet to perfect it.
There are a lot of great courses you can take in the program, but you’re definitely missing out on some subjects you’d expect to see in a more complete computer science program. All of your basics are there, but if you’re interested in, say, video game development, there’s nothing offered on that subject.
Courses you select will be tied to the specialization you choose. There are four of them, and they all have certain requirements and an advanced capstone course of sorts you have to complete. For my specialization, for example, I chose the most boring: Computing Systems. My capstone course will be Graduate Algorithms. Capstone courses are some the most difficult in the program.
I’d really love to see them branch out more in courses before the end of my time in the program, but I’m not holding my breath. I assume courses are difficult to develop and many of them don’t translate to the format well.
This program is not about research. If you think one day you want to go into research, you probably want to look elsewhere. While I am sure you can work your way into a group, it’s not expected of you and there are no real publicized opportunities.
That being said, they do not require you to publish any work, which can be a drawback to more traditional graduate degrees. Your biggest time commitment is studying. As long as you complete your coursework, you’ll graduate normally.
Even with the issues described here, the program is still superb. At less than $10,000, you’re getting a top tier graduate degree in computer science, and a chance to learn a ton. For anyone that is considering a graduate degree, I would say it’s an easy decision, as long as you understand the limitations and are willing to put in the work.
Originally posted to mycahpleasant.com
(open source and trusted by devs everywhere ❤️)