More advice from studying omscs - 2019-09-18

Tags: lifestyle organising study

I finished the OMSCS program in May 2019. While the stress has faded, yet the memories are fresh, I wanted to take the time to write up some notes about the program that I hope others find useful. The main focus for the article will be on synergies between the classes. I’ll also talk more generally about what is good and bad about each class.

People take the program for a variety of reasons. I did the machine learning specialisation and maintained a 4.0 GPA until I hit Graduate Algorithms. I was interested in a data science career but needed the formal education and this was my first formal computer science education. Also, my undergrad performance was poor, so I challenged myself to give 100%. I was hoping that this would translate into good career prospects after the course (which it did - I was accepted by BCG Gamma during my final semester). I needed to take one subject a semester to put in the time required while working full time. Other people may be taking the course without the high achieving aspect, and may want to either finish quickly, or get to classes of particular interest.

Here is a list of the classes and the order in which I took them:

  • Software development process
  • Knowledge based artificial intelligence
  • ML4T
  • Databases
  • Reinforcement learning
  • Educational Technology
  • Data analysis and visualization
  • Human computer interaction
  • Machine Learning
  • Graduate Algorithms

My key pieces of advice

The hardest classes for me above were ML, RL and GA, in that order. All of the other classes were easier, and could potentially be doubled in a semester. Do not take those three hard subjects along with other subjects or during summer!

I would NOT have done reinforcement learning during summer. It also turned out that RL was a lot harder than ML. Given part four of four of ML covers reinforcement learning, it makes sense to do RL immediately after ML.

Data analytics and visualisation and ML4T were all great warm ups for ML, you get to go into detail of some algorithms before hitting ML.

HCI and Edu Tech were really fun and interesting subjects, although ultimately filler towards the machine learning degree. The great thing about these programs is the teaching quality, and the incredible amount of freedom you have to design your projects. Because of the freedom, you can use these subjects to try out new methodologies and approaches you may not otherwise have time to do. For example, I used Educational Technology subject to really focus on learning flask for python. This was great as now I can add a bit of web development skill to a course otherwise without it.

Software development process and the Databases course are heavily group focused subjects. Both subjects are similar in that you design a application in teams. For SDP the focus is more on the methodology you use to complete the project (such as waterfall, agile, diagrams), whereas for databases it is more focused on database design. Both courses were good foundational subjects for a newbie like myself. It was also my first experience with programming languages outside python (Java and PHP), as well as getting used to different types of development environments like linux VMs. The teamwork aspect was great as you tend to get paired with people of differing skill level, if you’re like me and new to programming, be sure to at least put in the hours and effort to make up for lack of skill, and listen and ask questions to your team.

A key skill in the machine learning specialization is setting up your experiments well. This means being able to change parameters easily, and adding layers of hyper parameter searching. KBAI was my first subject where this skill came into focus, and the need to iterate quickly became more and more important over the semester. If you have time, I suggest learning how to go beyond running your code simply in Jupiter notebook, to be able to run on command line with parameters, or better yet on the cloud. Managing all of your experiments and knowing how long they’ll take, and having set stages (such as data cleaning, hyper parameter search, reporting), will make your reporting much easier.

Another key skill for this course which was a bit unexpected was the focus on writing skills. I am fortunate that my background is generally strong on this skill, as my undergraduate degree was liberal arts and involved a lot of essay writing. Keep in mind when reporting results that the way you express ideas and describe what you are interpreting from data results is more important than the datas themselves. A very important example here was the reinforcement learning lunar lander. I spent entire weekends trying to get the damn lunar lander down, without success. However I still scored perfect marks on the report due to my special attention to describing and explaining the results in relation to the learnt coursework!

If you’re new to the program, be very careful in setting up your email and forwarding correctly, and checking your junk mail. The most important thing is registering for classes as soon as possible and having your research done ahead of time. While you may have a plan about how you’d like your course structure to be, it is not always possible. Be prepared with plan B and plan C along the way. It’s virtually impossible to get into graduate algorithms unless it is your last or second last class.

If you’re not sure what classes to take, anything touched by Prof David Joyner is usually very good. He is very responsive and positive on the forums and sets expectations clearly with the students. Courses created by him are some of the best quality in the course.