What is Graduate Algorithms?
Algorithms is the study of getting computers to do things fast and efficiently 🏃🏻♂️🚀
Graded Course Material
- 8 Homeworks (~%2 each)
- 3 Coding Project (%3 each)
- 3 Exams (%24 each)
Homework 0: Big-O Notation, Graph Theory and Boolean Logic
This is a self-assessment in how well you know:
Homework 1: Dynamic Programming
Example: Edit Distance
- You’re trying to find out how “close” two words are
- The allowed actions are Replace, Insert and Remove
You can solve this using Dynamic Programming
Homework 2: Graphs and logarithmic
Example: Traveling Salesman Problem
- Try to find the shortest path between cities
- Actually super complicated 😱
Homework 3: Fast-Fourier Transform
- Fast Fourier Transform lets you break apart into pieces things like sound, electric signals etc.
- Sounds like it is super useful for stuff..
- I guess that’s how Shazam works.. 🤷🏻♂️
Homework 5: Minimum Spanning Trees
This one is about merging two MSTs together, using an algorithm that is efficient and correct
Homework 6: Modular math and RSA
RSA is an encryption algorithm. It is how many things are “encrypted” these days
- Basically, it comes down to the fact that it’s really hard to find out the two prime numbers that make up a really big number
Project 1: Dynamic Programming
Dynamic programming is a way to break up a problem into a bunch of smaller problems that “add back up” to the original problem
Take for example, the Fibonacci sequence
- What is the nth Fibonacci number?
Recursive (slow) way:
def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2)
Dymanic Programming! (fast way!)
def fib(n): a = 0 b = 1 if n == 0: return a elif n == 1: return b else: for i in range(2, n+1): c = a + b a = b b = c return b
In this project, you’re solving the Knapsack Problem
Project 2: Minmum Spanning Tree w/ Kruskal’s Algorithm
Minimum Spanning trees are basically just finding the most direct route from nodes in a graph.
In this project, you’ll use Kruskal’s algorithm to find the MST
You’ll have to compute two things:
- Find(p): given the set p, find the root node of the set of nodes
- Union(u,v): given two sets of nodes, union them into an MST
Exams
- 2 Free response questions
- A prompt, followed by your input for an algorithm that satisfies the prompt
🚨 OPINION TIME! 🚨
- The content in this class is awesome
- I think this class relies too much on psuedo code
- Some more real code in this class would be great
Should you take this class?
If you are doing your master’s for personal benefit, and just to learn something new, you may like this class’s lecture videos
If you are doing your master’s to perform well in academia, and kind of like that style of thing, maybe this is the class for you
If you are doing your master’s to get your degree, I would suggest taking the Interactive Intelligence route and skipping this class
Hi, Dear pl inform me is it compulsory subject for OMSCS at GT ?
Hello, no it is not cumpulsory, there are ways to get around it
Thank you! Been reading a lot of rants about this course, but this feedback seemed unbiased and makes me want to check the course videos out. Just curious, how about the grade distribution? What were the cutoffs for A and B in your semester? Thanks again!
Thank you!! In my semester, the cutoff for an A was 85%, and 70% for a B, with the syllabus stating that the cutoffs were final and no adjustment would be made
This was in Spring 2023, hope it helps!