# Georgia Tech OMSCS: CS6515 Graduate Algorithms

This graduate-level algorithms class was the last class for my Master’s in Science degree at Georiga Tech. As part of the ML specialization for the Computer Science degree, I had to take CS6515 Introduction to Graduate Algorithms. During this fall semester, I was working full time. If you’re also expecting to be working full-time during the week or you’d like to have my tips and tricks for doing well in this course, this review should help you.

# Course Content and Information

The goal of the course is to give students a graduate-level introduction to the design and analysis of algorithms. The main topics covered in the 16-week course include dynamic programming; divide and conquer, including FFT; randomized algorithms, including the RSA cryptosystem, graph algorithms; max-flow algorithms; linear programming; and NP-completeness.

The course counts towards many of the computer science specializations and it touches many concepts that are covered in other courses found throughout the degree program. Most people take this course as the last class for the degree program. As such, this course was one of the most well documented, supported, and facilitated by the course staff.

Take note that there is no curve for this course and the cutoffs for the semester were the following:

A: [85%, 100%] B: [70%, 85%) C: [50%, 70%) D: [40%, 50%) F: [0%, 40%)

The course consisted of assignments that I’ll discuss in greater detail.

**Homework: 7 turned in through Gradescope — 12% total.**

**Polls: 8 hosted in Canvas — 4% total.** **Coding projects: 3 turned into Gradescope— 9% total**.

**Three exams: proctored through Honorlock — 25% each**.

**Final exam (optional)**.

# Assignments Overview

Each assignment was due on Monday, 8 am Eastern time zone, no late submissions were accepted.

## The Homework

The homework assignments included two problems that you’ll submit into Gradescope for grading by the course staff. Grading was straightforward and any deductions on the homework were meant to course correct any mistakes or bad habits for the exams. I never scored below an 85% on any of the assignments, given I had a solution that founded the examples shared by course staff.

You’ll receive a pdf of the homework assignments containing suggested practice problems and two graded word problems. To submit and edit my solution, I used my Preview editor on my Mac with a font that was similar to the default typeface in Latex. If you’re comfortable in Latex, they also share a Latex template, formatting didn’t matter to course staff.

Each assignment contains practice problems found in the coursebook, Algorithms by DPV, which I found were excellent for understanding the graded problems. The assignments align with 1–3 course topics have lecture modules and reading material that you can use to help you. I found that reading the TA notes found on Piazza was the most helpful for gaining the intuition and understanding needed to solve the problems. I didn’t find the lecture material particularly useful for the assignments, but if you are a visual or auditory learner the content was particularly helpful for solving graph problems. If you are not an auditory learner or you are short on time, I would search content for the basic algorithms quickly to get an understanding of the material. The answers for the **practice** problems belonging to the DPV book are also readily available online.

Course staff would host office hours are the assignment due dates to share the solutions. If you score below an 80% on any assignment, I would review the office hour material to ensure you’re not going to be falling behind on future assignments related to the topic. The homework assignments were the **greatest indicator **for performance on the exam.

## Polls

Not much to share here, these were 1–2 question Canvas quizzes related to the course material. You are given two attempts per quiz, with unlimited time and access to materials. The highest score is taken, and the questions were fill in the blank, multiple-choice, select all that apply, or true/false.

**Coding Assignments**

We had three coding projects which included boilerplate drivers and tests to program knapsack, a search problem(with linear programming), and finding an MST using Kruskal’s algorithm. I would use Piazza, the course forum platform, to source additional test cases. This work is auto-graded so just be diligent with testing to get all the points.

## Exams

The exams are the most significant part of your final grade, so you’ll feel pressure to review all the material. I spent an entire week studying to get through all the relevant and available course material, which not everyone will be able to do. If you had to prioritize, I would go over the TA notes, practice problems, and then homework in that order to study for the exam. If you are extremely short on time, skip the practice problems. If you have extra time review the office hours where they share poll content or host an exam prep.

The exams were worth 60 points, 20 for the first word problem, 20 for the second word problem, and 20 spread across multiple-choice questions. The exams are about 2.5 hours long. I scored in the top 25–50% percentile when I used all the time allotted to check and verify my solutions to the exam questions. They mimic the weekly assignment format in that we would have poll-like questions and two homework assignment-like problems. The exams cover material in 4-week increments, meaning the exams would happen after a programming project, 1–3 quizzes, and 2 homework assignments. This is just to say pay attention to the course schedule!

You are allowed up to 5 sheets of blank scratch paper. I typically used 1–3 for each exam. Purchase a large mirror or an external webcam for the proctored exams, because you will have to do a room scan. I found having an external webcam as the most convenient option and I used what I had which was the Logitech HD Pro c920 webcam.

I also noted that the course staff expressed that the exams had decreasing difficulty. I did not find this to be true in the slightest, in fact, averages for the exams stayed roughly in the 50–70% range, so prep diligently.

## The Final Exam

This final exam replaces the lowest of your exam score. If your score on the final exam lowers your grade, it will not count towards your final grade. After taking the third exam, students with an A in the course are not legible to take the final. I did not need to take the final exam, so I used this time to book work travel to AWS re:Invent. From what was shared by course staff, this exam is cumulative. I also noticed that the averages for the exam were consistent with the ranges I shared.

# Time & Effort

I found myself spending at most **30 hours a week** on this course. I took this during the fall semester and can imagine it might be higher for those taking it in the summer semester. The exams weeks were the most intensive and I worked hard to verify and practice my understanding of the course material prior to the exams.

Most of my effort was focused on building intuition for the problems since the patterns would carry over across the practice problems, polls, assignments, and exam material. The coding assignments were lightweight and during the mid part of the semester, I found myself super motivated to use the extra time to get more practice so that I could do better on the exams. I don’t think anyone in the course scored a 60/60 on any of the exams, so if you’re striving for perfection there’s more than enough room to do so. On the flip side you can pace yourself effectively by paying attention to the grading cutoffs. I found myself doing this as I was just onboarding onto a new role at work.

# Final Thoughts

Like every other course, this one was challenging! I’ve taken two other algorithms courses in my undergraduate program and I still learned quite a bit. I was pleasantly surprised with the course content, covering topics in Dynamic programming and RSA, which I find practical for anyone applying for SWE jobs at companies who are known to ask about these topics such as Facebook or Capital One.

I find that algorithms have always been about how you think of the problems at hand. Problem-solving works best once you’ve started to notice patterns. You leverage the structures and guidelines to articulate the solution along with an analysis of its complexity. You’ll make mistakes and that’s normal as long as you learn from them along the way. Make the mistakes ahead of time and make them count when it really matters on the tests.

Compared to other algorithms courses I will admit that this course, in particular, is not as stringent in the style of how you write mathematical proofs. Of course, if you are familiar with writing proofs and solving algorithms you’ll have an advantage over those learning the material for the first time. The course staff and the written resources are enough for anyone seeing this material for the first time.

On another note, now that I have my degree, I won’t be sharing as many course reviews. However, if you’d like a review of any of the other courses I’ve taken, I have written other reviews which may be helpful.

Reinforcement Learning (CS7642)

In the future, I will share more content on nurturing careers in technology and making the most out of your time seeking higher education in technology. You can follow my work on Twitter @tiffanyjachja to stay up to date with the latest and greatest content on these topics.