This post is the second in a two part series, read the first part about how I chose my Master's program and my overall thoughts here!
Ten Courses to Graduate
Making it out of OMSCS alive requires completing 10 of their current courses with a grade of C or better. Of the 10, 5-6 courses must be within a certain specialization, and be completed with a grade of B or better. Lastly, your overall GPA must be 3.0 or higher to graduate. There are some finer technicalities, but those are the basics. There is no capstone project that you're working up to.
Courses are offered during three semesters over the course of the year - Fall and Spring (each 16 weeks) and Summer (an accelerated 12 weeks) - with a couple weeks break between semesters. If you are working full-time and taking one course at a time (usually recommended), that's three years and one semester. I doubled up with less-demanding courses this past Spring, so I did it in three years even. The current cost of one semester with one course is 540.00 tuition + 194.00 special institutional fee + 107.00 technology fee = $841.00.
There is no recommended order of courses that you're required to take. This might seem odd for prospective students expecting to continue through the program with one cohort of fellow students, and instead find your first course filled with students in their final course and vice versa. I actually find this to be a positive because you can define your own order based on your expertise, interest level, and goals. You will need to choose your first two courses from courses labeled "foundational," but afterwards all 31 computer science courses are open to you (a fraction of on-campus courses). Unfortunately, very few if any courses were added during my three years in the program, though a few courses from other disciplines are available (I wasn't interested and didn't explore this avenue).
So how do you choose? Well, you make a spreadsheet of course! Essentially I listed out all of the available courses along with my general interest levels (/5), and then used the student reviews on OMSCentral to pick out the community ratings (/5), workloads (in hours), and difficulties (/5). This is a very active site and I submitted my own reviews for the courses I took; I think the rating averages are more or less accurate, but the reported workloads are unfortunately on the lower side if you're newer to programming like myself (they may also be biased because workload is generally lower towards the end of the semester). I used my interest level averages to determine the optimal specialization for myself (Interactive Intelligence, as it turned out), and then noted which courses would fulfill which parts of the specialization requirements. Lastly, I included course-by-course pre-requisites or prior baseline knowledge, which I found on course pages and elsewhere. However, I found that success in a course was usually a factor of how deeply you absorb the learning material rather than how much supplemental learning material you seek out beforehand (with the possible exception of AI and ML).
Without further ado, here are the courses I took:
- CS 6300: Software Development Process (Fall 2017)
- CS 6400: Database Systems Concepts and Design (Spring 2018)
- CS 6035: Introduction to Information Security (Summer 2018)
- CS 6601: Artificial Intelligence (Fall 2018)
- CS 6440: Introduction to Health Informatics (Spring 2019)
- CS 6460: Educational Technology (Summer 2019)
- CS 7641: Machine Learning (Fall 2019)
- CS 6250: Computer Networks (Spring 2020)
- CS 7646: Machine Learning for Trading (Spring 2020)
- CS 6750: Human-Computer Interaction (Summer 2020)
My top three favorite courses were Software Development Process, Human-Computer Interaction, and the concepts and group project in Introduction to Health Informatics. I think this had a lot to do with the professors, who were both organized in their schedules and clear in how the assignments would meet learning objectives. Plus the material was just downright cool.
My top three most challenging courses that helped me grow were Artificial Intelligence, Machine Learning, and Educational Technology. The effort frequently exceeded 30 hours in any given week (AI was above 60 at times), and required me to push myself further to find answers than I knew I had the ability to.
Would I Recommend?
I would recommend prospective students consider applying for OMSCS under these conditions:
- You can see a direct benefit of getting a master's degree in your career, without which you could not accomplish your goals; OR you enjoy scholastic challenges and the prospect of studying new things in school is exciting for you (no judgement)
- You can afford the cost of $841 (or more with additional classes) per semester, through financial aid, tuition reimbursement, family lending, or out of pocket
- You can afford the time, and can dedicate roughly 20 hours per week for three years (to earn a 3.0 GPA or better)
- Let me emphasize, this will include making sacrifices in terms of spending time with loved ones and doing activities you enjoy (reading books, playing video games, watching movies, etc.)
Not gonna lie, those were a looong three years at times. I did my best to stay positive, enjoy the learning process, and remind myself of why I got into this mess. I don't know if I would have seen it through to the end if it weren't for the support from my wife, the rest of my family, and my friends. My standard supply stash for going out during OMSCS semesters would always include my tablet and a pair of headphones, and perhaps even my laptop if I had a coding assignment to work on. At work, during lunch breaks I would set a 30 minute timebox and complete as much work as possible. Then I would come home from work, and instead of relaxing I'd gear up to spend the night studying. At parties and gatherings, I would lock myself away in another room, coming out for 10 minutes every half an hour and endure everyone's eye rolls when my timer went off. If I was lucky then all I needed to do was to review flashcards on my phone, which I would do while sitting in front of the TV, during conversation breaks at dinners, or in my free hand as I used the bathroom. Staying up late completing assignments would sometimes get so lonely that I'd play a movie on another screen just to feel like someone else was there with me.
No, the above is not a joke (I've forgotten what jokes and fun are 😅). And yes, it was depressing at times. You couldn't really escape the anxiety that work was hanging over your head, and forget about taking a day off - what a nightmare getting caught up! Maybe one of the worst parts was that I rarely got a true vacation from it all. During those couple weeks breaks between semesters I'd usually be focused on catching up on the honeydo list and house chores that I'd put off during the semester. Come to think of it, part of me feels like I had prepared for the first two years and against all odds pushed for that final year. Knowing what I know now, would I still have chosen to do the program? Absolutely, preferably heeding the pro tips below. But would I do something like this again? Hell no, been there done that.
Completing this OMSCS program requires some next-level dedication. I think it goes without saying that not everyone studies the same way that I do, and many people will pick things up quicker and enjoy the studious process at a deeper level. I also came to this program in a unique situation as you can see from my blog, learning CS for the first time and looking to develop a core educational competency, so I knew that I would need to work harder than most students to make up the difference in skillsets. But if you can say yes to my three conditions above and the reality check of my own experiences doesn't scare you off, I can promise you this: you will reap what you sow. All of that hard work, all of those sacrifices, and all of those combined learning moments will build you that competency diving board to spring from in your professional career. Could I have achieved the same learning result as quickly from self-study? Maybe, and that could have led to better preparation in certain areas. But I certainly would not have been exposed to as many areas outside my comfort zone with cleverly designed projects, providing a much more effective starting point for self-study.
Pro Tips
If you're going to be starting OMSCS soon, or if you are already a student, here are a few tips that I've picked up along the way that may be useful.
- Get started on assignments early. This is a cliche so let's get it out of the way. Even if the course learning materials will explain what you need to know in order to complete the assignments, before you start the learning materials go ahead and read through the assignment description. Get an idea of what you'll be working on so you know what part of the learning materials to prioritize your focus, then maybe create an outline of the requirements, and better yet get your coding classes and repos ready to begin work. Starting there will help you to allocate your time.
- Watch videos quickly. Always watch video lectures at 2x speed, whenever possible. You could work up to this by starting at 1.5x speed, but eventually anything less than 2x speed will seem agonizingly slooowww.
- Skim readings. The material can be dense and dry at times, but the good news is that you're hardly ever graded on the finer details and when you are it will be for open-book exams. For the most part you can skim the readings for the general idea, though I will admit this is an acquired skill. Read the abstract, the introduction, the conclusion, and then go back and skim relevant/interesting sections in the middle.
- Register for courses immediately. It can sometimes be a challenge to compete against the nearly 10,000 enrolled students to register for the courses you want (especially in your first couple semesters). Put your course registration times in your calendar and prepare to register within 3 seconds of that time slot. You can do this by looking up the CRN numbers for the courses you're interested in ahead of time, and then choose Add to Worksheet in Buzzport to paste them in at the allotted time. Have a backup course in case you get waitlisted, but it's still very possible it will open up by the first week.
- Make a checklist. One of the smartest things I did at the very beginning of each semester was to dissect the syllabus for all of the scheduled assignments and grade breakdowns. I would put the results into an ordered checklist spreadsheet (like this one for ML), so all I would need to do would be to complete one item at a time all the way down the list, and ipso facto the course work would be done!
- Create flashcards. This may seem excessive, but it's the absolute best way to study for exams and to remember what you want to from your courses. I've discussed SRS systems and learning methods at length in this blog already, so I'll leave the justifications there. I'm still reviewing cards today, and consider these one of the most important takeaways from my three years of learning in addition to the degree itself.
- Timebox. I've also written about timeboxing on this blog, but I'll mention that being able to work in my flow state for short periods of time, followed by recharging breaks, may be a "hidden" hack that kept me sane during these years. The pattern that ended up working best for me was 30 min. on / 10 min. off, and for difficult semesters I gave myself goal numbers of timebox sessions to hit for each day according to my unschedule in order to reach 20 hours each week.
- Schedule relax time. As absurd as it sounds, scheduling 15-20 minutes each night to unwind before bed could compliment your timeboxing to keep you sane. I didn't always keep this goal like I should have, but when possible I would do something like read or play video games that made multitasking impossible.
- Study ahead. Depending on the course, some portion of the material will be available from day one, so it may be beneficial to work ahead. If you really anticipate a time crunch during a given semester, you can attempt to watch all the videos on Udacity before the semester begins (and hope they haven't been updated anew).
- Always watch office hours. You never know what sort of details and hints they will drop about the assignments.
- Read instructions before reading the forum. A lot of people posting questions on the forum haven't read the instructions carefully enough, so give it a shot on your own first before you run into an actual problem.
- Choose project teammates early. If you are given the chance to create your own team for your project, post ASAP so you can form a team with other people who are on top of their game.
- Keep schedule expectations low. If my own life description were any indication, you'll want to clear your schedule to make as much time as possible. However, I will say this: don't neglect your own health or the people who support you.
Now go out there and meet your own dreams!
No comments:
Post a Comment