Fin. I have completed my Master’s program from Georgia Tech’s Online Master of Science in Computer Science (OMSCS). Phew. It was a journey, alright. For many who complete this program, the final course is often Introduction to Graduate Algorithms, commonly known as GA. It’s a mammoth of a course, and reviews from OMSCentral consistently classify it as the toughest course for the ML specialization.

This course is a lot of work. It’s a theory-based course that covers topics like dynamic programming, greedy algorithms, graph algorithms, max flow, randomized algorithms, algorithmic complexity, and linear programming. The material is very dense and definitely requires clocking in at least 10-15 hours per week. For those not super familiar with these concepts, the time spent can go up to 20-25 hours per week.

The major components include homework assignments, quizzes, coding projects, and three exams (with a fourth and final optional exam to improve your grade).

This course focuses heavily on theory, meaning that the homework assignments are full-form written assignments covering major topics. The grading is very strict and follows a definitive rubric that isn’t released. However, the quizzes and Ed Discussions clearly state what is expected from each written assignment. The assignments are amazing—they get you thinking, solving problems, and justifying the correctness of your solutions. They also gear you up for the exams, which follow the same structure as the assignments plus multiple-choice questions.

The coding projects are simple and fun, requiring you to code functions and algorithms based on the material.

Exams are challenging but manageable. They cover the majority of the marks, a whopping 69% of your total grade, making them the toughest piece to crack. They are closed book/internet exams with two long-form questions (just like the assignments) and a bunch of MCQs. Everything you need to do well is covered in the lectures and the textbook. Completing the textbook exercise problems is essential. The lectures highlight important exercise questions that need to be practiced. For dynamic programming, greedy, and graph-based problems (as well as others), practice is key. This course demands hard work and practice. I will emphasize “practice” repeatedly in this blog because it cannot be stressed enough. The MCQs are not straightforward and require thorough understanding of the course material.

Reading course reviews on OMSCS for this course will definitely help in preparing well. There are a lot of tips and tricks mentioned there which I won’t repeat here, except maybe “practice.”

Against popular opinion, I’d say that the course isn’t super difficult if you are a CS person and have dealt with algorithms before. Staying on top of the timelines, doing enough exercise questions, and rewatching the lectures is enough to score well here. Grades are curved.

Personally, taking notes during the lectures helped a lot. The notes summarized everything I needed just before all the exams and played a significant role in my interview preparations.

Overall, this is a challenging yet rewarding course that requires a lot of effort and dedication.