May 01, 2017

Hacking My Way Into Georgia Tech's OMSCS

Five years ago I signed up for an online web development class on a website called Udacity. At the time I was a high school Calculus teacher and I was looking for a better way to deliver my lessons. I figured I could learn how to build a website and then create a webapp for my classes; which is exactly what I did. What followed has been a roller coaster of an adventure through teaching, ed-tech startups, and software development to where I am today: a full-stack software engineer at The Container Store.

During those same five years, Udacity has also grown quite a bit, becoming one of the premier platforms for learning software development on the web. In fact, a few years ago Udacity partnered with the Georgia Institute of Technology (one of the top computer science schools in the nation) to offer a fully online Master of Science degree in Computer Science (OMSCS) at a ridiculously affordable price (less than $7,000).

Over the last year or so I’ve been seriously considering applying to that OMSCS program myself. However, after reading many reviews of the program and many stories of rejected admissions, I fear that with my existing credentials I am on the outside looking in. I do have an undergraduate degree in Aerospace Engineering, a master’s in Physics Education, and nearly 5 years experience in the software industry; what I lack is any sort of formal coursework in computer science.

You see, I, like many of my colleagues, am a completely self-taught professional. One of the most amazing things about the web development industry is that degrees mean less than productivity: as long as you can prove you can do the work, that’s really all the matters. You don’t need expensive credentials to be successful as a web-dev, you simply need grit and a portfolio of proof that you are smart and get things done.

Unfortunately, that doesn’t quite cut it for admissions into Georgia Tech. Several posts on this OMSCS subreddit believe that the trick to getting accepted is to take online courses from accredited universities in computer science before applying. But that doesn’t quite pass the smell test to me: why would I spend $1,000-$2,000 on a course from some university’s extension school when the entire degree program I’m interested in is only slightly more expensive? Another suggestion is to take credit courses from your local community college, but those are only slightly less expensive and I can’t believe that community college credit is more rigorous proof of knowledge than what I’m proposing below.

The Plan

So here’s my plan: hack through a year’s worth of free, online courses in computer science basics and document the entire process on this blog (all the code I write, the quizzes I take, the projects I complete) as proof that I do in fact have some formal knowledge of computer science.

Here is the curriculum I’m proposing:

Based on the syllabus for each course, completing that entire curriculum should take me about a year (sooner if I double up on some courses). I should finish with enough time to apply for the Fall 2018 deadline which will likely be sometime in late April 2018.

Completing these courses will give me a solid foundation in algorithms, data structures, architecture, operating systems, and programming languages (C, Java, Python). This next year will also let me know if I even want to pursue a degree in computer science! I plan to post progress reports here on this blog as I complete each course, with a review and links to all my classwork (as permitted by the course’s instructors).

In a way, since these courses are not accredited and because I won’t be taking any proctored exams, it will be quite a challenge to prove to the Georgia Tech admissions committee that I have properly prepared myself; I’m not even sure if this will work out for me at all! But, I’m confident that at the end of the day this will broaden my understanding of computer science and prepare me to be a better engineer.

What’s The Point?

Of course, I could complete the aforementioned coursework, gain admission into Georgia Tech and graduate from the master’s program but still have to answer this question: what’s the point? What’s the point of a master’s degree in computer science? If degrees are valued less than performance in this industry, then why the heck am I wasting all this time on a degree?

To be sure, web development does value performance over pedigree; but web development is only a subset of computer science - the proverbial tip of the CS-iceberg. There are other, insanely interesting, fields in this industry for which a degree in computer science is a sort of gatekeeper. Fields such as machine learning, artificial intelligence, self-driving cars, virtual reality, etc. are booming right now and many of the positions in those fields favor engineers with more formal education in computer science.

At The Container Store, and in the retail industry at large, we recognize the need to utilize these emerging technologies to innovate our businesses and survive (retailers who refuse to adapt are falling by the wayside). There are a number of extremely interesting projects on deck at The Container Store that are way outside the realm of “web development”, and learning the fundamentals of these technologies in the setting of a rigorous academic program can only benefit me and the team.

Here We Go!

So, here we go; wish me luck! This will be an incredibly challenging feat to pull off, but I do have the support of my manager and my wife and the determination to see this project through. Please check back here for updates. If you would like to talk to me about my progress or have comments/suggestions about the curriculum I’ve chosen please reach out and let me know: quentin@qdonnellan.com

Also, if you live in Dallas/Fort-Worth and are interested in some of the cool projects we have on tap at The Container Store, feel free to reach out as well - we’re always looking for talented engineers to join our team!